<?php
namespace App\Services\Api;
use App\Entity\Customer;
use App\Entity\Game;
use App\Entity\MediaGame;
use Symfony\Component\HttpFoundation\Request;
class MediaGameManager extends BaseApiManager
{
public function add($data, $request)
{
$r = $this->validateFileGame($data);
if ($r['code'] != 200)
return $r;
$game = $this->em->getRepository(Game::class)->find($data['game_id']);
if (!$game) {
return [
"messageType" => "danger",
"message" => [
"type" => "error",
"msg" => "juego no encontrado",
"icon" => "glyphicon-warning-sign",
],
"code" => 404
];
}
/** @var Customer $customer */
$customer = $this->security->getUser();
$season = $customer->getSeasonActive();
if (empty($season))
return [
"messageType" => "danger",
"message" => $this->translator->trans('msg.season_dont_active'),
"code" => 403
];
$mediaGame = new MediaGame();
$mediaGame->setGame($game);
if (!empty($data["file"])) {
$mediaGame->setFileFile($data["file"]);
$mediaGame->setFileSize($data["file_size"]);
}
$mediaGame->setCreatedAt(new \DateTime());
$mediaGame->setUpdatedAt(new \DateTime());
$this->em->persist($mediaGame);
$this->em->flush();
return [
"messageType" => "success",
"message" => $this->translator->trans('msg.note_player_success'),
"code" => 200
];
}
public function getMediaGame(Request $request, Int $game_id, string $folder)
{
$game = $this->em->getRepository(Game::class)->find($game_id);
$order_by = $request->get('order_by');
if ($request->get('order_by') !== 'DESC' && $request->get('order_by') !== 'ASC') {
$order_by = 'ASC';
}
$medias = $this->em->getRepository(MediaGame::class)->findBy(['game' => $game], ['id' => $order_by]);
$listMedias = [];
foreach ($medias as $media) {
$current = $media->__toArray();
$current['file'] = $folder . $media->getFile();
$listMedias[] = $current;
}
return [
"messageType" => "success",
"data" => $listMedias,
"code" => 200
];
}
public function delete($id, $folder)
{
/** @var MediaGame $mediaGame */
$mediaGame = $this->em->getRepository(MediaGame::class)->find($id);
//remove file of server
$file = $folder . $mediaGame->getFile();
if (file_exists($file)) {
unlink($file);
}
if (empty($mediaGame))
return [
"messageType" => "warning",
"message" => $this->translator->trans('msg.media_game_dont_exist'),
"code" => 404
];
$this->em->remove($mediaGame);
$this->em->flush();
return [
"messageType" => "success",
"message" => $this->translator->trans('msg.media_game_delete'),
"media" => $mediaGame->getFile(),
"code" => 200
];
}
protected function validateFileGame($data, $is_update = false)
{
$code = 200;
$validates = [];
if (empty($data["file"])) {
$code = 404;
$validates["file"] = [
"type" => "error",
"msg" => "el archivo es requerido",
"icon" => "glyphicon-warning-sign",
];
}
if (empty($data["game_id"])) {
$code = 404;
$validates["game_id"] = [
"type" => "error",
"msg" => "el game_id del juego es requerido",
"icon" => "glyphicon-warning-sign",
];
}
return [
"code" => $code,
"messageType" => "warning",
"message" => $this->translator->trans('msg.filed_requiered'),
"validates" => $validates
];
}
}