src/Controller/V2/MovieWebController.php line 14

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\Controller\V2;
  3. use Nelmio\ApiDocBundle\Annotation\Model;
  4. use FOS\RestBundle\Controller\Annotations as Rest;
  5. use Swagger\Annotations as SWG;
  6. use Symfony\Component\HttpFoundation\Request;
  7. /**
  8.  * @Rest\Route("/moviesweb")
  9.  * @SWG\Tag(name="MovieWeb_v2")
  10.  */
  11. class MovieWebController extends BaseMovieController
  12. {
  13.     /**
  14.      * @Rest\Route("/{id}/sessions", methods={"GET"})
  15.      * @Rest\QueryParam(name="filter", map=true, allowBlank=true)
  16.      * @Rest\QueryParam(name="order", allowBlank=true)
  17.      * @Rest\QueryParam(name="limit", requirements="\d+", allowBlank=true)
  18.      * @Rest\QueryParam(name="offset", requirements="\d+", allowBlank=true)
  19.      * @Rest\QueryParam(name="location", allowBlank=true)
  20.      * @Rest\QueryParam(name="cinema", allowBlank=true)
  21.      * @Rest\QueryParam(name="date", allowBlank=true)
  22.      * @Rest\View(serializerGroups={"Default", "session_list"})
  23.      *
  24.      * @SWG\Response(
  25.      *     response="200",
  26.      *     description="Get list of sessions by movie id",
  27.      *         @SWG\Schema(type="array", items=@SWG\Items(ref=@Model(type=\App\Entity\Vista\Session::class))))
  28.      *
  29.      * @param Request        $request
  30.      * @param                $id
  31.      * @param array          $filter
  32.      * @param array          $order
  33.      * @param int            $limit
  34.      * @param int            $offset
  35.      * @param null           $location
  36.      * @param null           $cinema
  37.      * @param \DateTime|null $date
  38.      *
  39.      * @return array
  40.      * @throws \Exception
  41.      */
  42.     public function sessionsAction(
  43.         Request $request,
  44.         $id,
  45.         $filter = [],
  46.         $order = [],
  47.         $limit 0,
  48.         $offset 0,
  49.         $location null,
  50.         $cinema null,
  51.         ?\DateTime $date null
  52.     ) {
  53.         $filter or $filter = [];
  54.         [$filter$order$limit$offset] = $this->prepareInput($filter$order$limit$offset$location$cinemanull);
  55.         if (isset($filter['date'])) {
  56.             unset($filter['date']);
  57.         }
  58.         $filter['scheduledFilm'] = $this->scheduledMovieRepository->fetchMovieByIdHOFilmCode($id);
  59.         if ('mobile' === $request->attributes->get('_platform')) {
  60.             if ($date) {
  61.                 $filter['>=showtime'] = $date->setTime(000);
  62.                 $filter['<=showtime'] = (clone $date)->add(new \DateInterval('P1D'));
  63.             }
  64.         } else {
  65.             $date or $date $this->sessionHelper->getDefaultDate();
  66.             is_string($date) and $date = \DateTime::createFromFormat('Y-m-d'$date);
  67.             if ($date) {
  68.                 $filter['>=showtime'] = $date;
  69.                 $filter['<=showtime'] = (clone $date)
  70.                     ->setTime(000)
  71.                     ->add(new \DateInterval('P1D'));
  72.             }
  73.         }
  74.         $response $this->prepareSessionsResponse($this->sessionHelper->findBy(
  75.             $filter ?: [],
  76.             $order ?: null,
  77.             $limit ?: null,
  78.             $offset ?: null
  79.         ));
  80.         return $this->filterSessionByType($response'WWW');
  81.     }
  82. }