createFilteredQueryBuilder(ContentFilterDto::fromRequest($request, true)); return $this->json($this->paginator->paginate($qb, $request), Response::HTTP_OK, [], [ 'groups' => self::READ_GROUPS, ]); } #[Route('/{id}', name: 'promo_show', methods: ['GET'], requirements: ['id' => '\d+'])] public function show(Promo $promo): JsonResponse { return $this->crud->read($promo, self::READ_GROUPS); } #[IsGranted('ROLE_ADMIN')] #[OA\RequestBody(content: new OA\JsonContent(ref: new Model(type: Promo::class, groups: self::WRITE_GROUPS)))] #[Route('/create', name: 'promo_create', methods: ['POST'])] public function create(Request $request): JsonResponse { return $this->crud->create($request, Promo::class, self::WRITE_GROUPS, self::READ_GROUPS); } #[IsGranted('ROLE_ADMIN')] #[OA\RequestBody(content: new OA\JsonContent(ref: new Model(type: Promo::class, groups: self::WRITE_GROUPS)))] #[Route('/{id}', name: 'promo_update', methods: ['PUT'], requirements: ['id' => '\d+'])] public function update(Request $request, Promo $promo): JsonResponse { return $this->crud->update($request, $promo, self::WRITE_GROUPS, self::READ_GROUPS); } #[IsGranted('ROLE_ADMIN')] #[Route('/{id}', name: 'promo_delete', methods: ['DELETE'], requirements: ['id' => '\d+'])] public function delete(Promo $promo): JsonResponse { return $this->crud->delete($promo); } }