src/Services/Api/MediaGameManager.php line 54

Open in your IDE?
  1. <?php
  2. namespace App\Services\Api;
  3. use App\Entity\Customer;
  4. use App\Entity\Game;
  5. use App\Entity\MediaGame;
  6. use Symfony\Component\HttpFoundation\Request;
  7. class MediaGameManager extends BaseApiManager
  8. {
  9.   public function add($data$request)
  10.   {
  11.     $r $this->validateFileGame($data);
  12.     if ($r['code'] != 200)
  13.       return $r;
  14.     $game $this->em->getRepository(Game::class)->find($data['game_id']);
  15.     if (!$game) {
  16.       return [
  17.         "messageType" => "danger",
  18.         "message" => [
  19.           "type" => "error",
  20.           "msg" => "juego no encontrado",
  21.           "icon" => "glyphicon-warning-sign",
  22.         ],
  23.         "code" => 404
  24.       ];
  25.     }
  26.     /** @var Customer $customer */
  27.     $customer $this->security->getUser();
  28.     $season $customer->getSeasonActive();
  29.     if (empty($season))
  30.       return [
  31.         "messageType" => "danger",
  32.         "message" => $this->translator->trans('msg.season_dont_active'),
  33.         "code" => 403
  34.       ];
  35.     $mediaGame = new MediaGame();
  36.     $mediaGame->setGame($game);
  37.     if (!empty($data["file"])) {
  38.       $mediaGame->setFileFile($data["file"]);
  39.       $mediaGame->setFileSize($data["file_size"]);
  40.     }
  41.     $mediaGame->setCreatedAt(new \DateTime());
  42.     $mediaGame->setUpdatedAt(new \DateTime());
  43.     $this->em->persist($mediaGame);
  44.     $this->em->flush();
  45.     return [
  46.       "messageType" => "success",
  47.       "message" => $this->translator->trans('msg.note_player_success'),
  48.       "code" => 200
  49.     ];
  50.   }
  51.   public function getMediaGame(Request $requestInt $game_idstring $folder)
  52.   {
  53.     $game $this->em->getRepository(Game::class)->find($game_id);
  54.     $order_by $request->get('order_by');
  55.     if ($request->get('order_by') !== 'DESC' && $request->get('order_by') !== 'ASC') {
  56.       $order_by 'ASC';
  57.     }
  58.     $medias $this->em->getRepository(MediaGame::class)->findBy(['game' => $game], ['id' =>  $order_by]);
  59.     $listMedias = [];
  60.     foreach ($medias as $media) {
  61.       $current $media->__toArray();
  62.       $current['file'] = $folder $media->getFile();
  63.       $listMedias[] = $current;
  64.     }
  65.     return [
  66.       "messageType" => "success",
  67.       "data" => $listMedias,
  68.       "code" => 200
  69.     ];
  70.   }
  71.   public function delete($id$folder)
  72.   {
  73.     /** @var MediaGame $mediaGame */
  74.     $mediaGame $this->em->getRepository(MediaGame::class)->find($id);
  75.     //remove file of server
  76.     $file $folder $mediaGame->getFile();
  77.     if (file_exists($file)) {
  78.       unlink($file);
  79.     }
  80.     if (empty($mediaGame))
  81.       return [
  82.         "messageType" => "warning",
  83.         "message" => $this->translator->trans('msg.media_game_dont_exist'),
  84.         "code" => 404
  85.       ];
  86.     $this->em->remove($mediaGame);
  87.     $this->em->flush();
  88.     return [
  89.       "messageType" => "success",
  90.       "message" => $this->translator->trans('msg.media_game_delete'),
  91.       "media" => $mediaGame->getFile(),
  92.       "code" => 200
  93.     ];
  94.   }
  95.   protected function validateFileGame($data$is_update false)
  96.   {
  97.     $code 200;
  98.     $validates = [];
  99.     if (empty($data["file"])) {
  100.       $code 404;
  101.       $validates["file"] = [
  102.         "type" => "error",
  103.         "msg" => "el archivo es requerido",
  104.         "icon" => "glyphicon-warning-sign",
  105.       ];
  106.     }
  107.     if (empty($data["game_id"])) {
  108.       $code 404;
  109.       $validates["game_id"] = [
  110.         "type" => "error",
  111.         "msg" => "el game_id del juego es requerido",
  112.         "icon" => "glyphicon-warning-sign",
  113.       ];
  114.     }
  115.     return [
  116.       "code" => $code,
  117.       "messageType" => "warning",
  118.       "message" => $this->translator->trans('msg.filed_requiered'),
  119.       "validates" => $validates
  120.     ];
  121.   }
  122. }