'json'])] public function availableRanges(User $user, Request $request, string $_format): JsonResponse { // return new JsonResponse(['ok' => true], 200, [], false); $this->denyAccessUnlessGranted('ROLE_USER'); if (!$request->query->has('dateFrom')) { throw new BadRequestHttpException('You must provide a dateFrom parameter'); } if (false === $dateFrom = \DateTimeImmutable::createFromFormat( \DateTimeImmutable::ATOM, $request->query->get('dateFrom') )) { throw new BadRequestHttpException('dateFrom not parsable'); } if (!$request->query->has('dateTo')) { throw new BadRequestHttpException('You must provide a dateTo parameter'); } if (false === $dateTo = \DateTimeImmutable::createFromFormat( \DateTimeImmutable::ATOM, $request->query->get('dateTo') )) { throw new BadRequestHttpException('dateTo not parsable'); } $total = $this->calendarRangeRepository->countByAvailableRangesForUser($user, $dateFrom, $dateTo); $paginator = $this->getPaginatorFactory()->create($total); $ranges = $this->calendarRangeRepository->findByAvailableRangesForUser( $user, $dateFrom, $dateTo, $paginator->getItemsPerPage(), $paginator->getCurrentPageFirstItemNumber() ); $collection = new Collection($ranges, $paginator); return $this->json($collection, Response::HTTP_OK, [], ['groups' => ['read']]); } }