json($output->success([ 'ratings' => $ratingPresenter->presentMany($repo->findAll()), ]), 200); } #[Route('/api/ratings', methods: ['POST'])] public function create( Request $request, EntityManagerInterface $em, OutputService $output, SubjectRepository $subjectRepository, #[CurrentUser] User $user ): JsonResponse { $subject = $subjectRepository->find($request->getPayload()->get('subject_id')); if ($subject === null) { return $this->json( $output->error(["UNKNOWN_SUBJECT"]) ); } $rating = new Rating(); $rating->setSubject($subject); $rating->setUser($user); $rating->setScore($request->getPayload()->get('score')); $em->persist($rating); $em->flush(); return $this->json(null, 201); } #[Route('/api/ratings/{id}', methods: ['PATCH'])] public function update( int $id, Request $request, EntityManagerInterface $em, OutputService $output, RatingRepository $ratingRepository, ): JsonResponse { $rating = $ratingRepository->find($id); if ($rating === null) { return $this->json( $output->error(["UNKNOWN_RATING"]) ); } $payload = $request->getPayload(); if ($payload->has('score')) { $rating->setScore($payload->getInt('score')); } if ($payload->has('note')) { $rating->setNote($payload->getString('note')); } $em->flush(); return $this->json(null, 202); } #[Route('/api/ratings/{id}', methods: ['DELETE'])] public function delete( int $id, EntityManagerInterface $em, OutputService $output, RatingRepository $ratingRepository, ): JsonResponse { $rating = $ratingRepository->find($id); if ($rating === null) { return $this->json( $output->error(["UNKNOWN_RATING"]) ); } $em->remove($rating); $em->flush(); return $this->json(null, 204); } }