json($output->success(['subjects' => $repo->findAll()])); } #[Route('/api/subjects', methods: ['POST'])] public function create( Request $request, EntityManagerInterface $em, #[CurrentUser] User $user, ): JsonResponse { $subject = new Restaurant(); $subject->setName($request->getPayload()->get('name')); $subject->setCreatedBy($user); $em->persist($subject); $em->flush(); return $this->json(null, 201); } #[Route('/api/subjects/{id}', methods: ['PATCH'])] public function update( int $id, Request $request, EntityManagerInterface $em, OutputService $output, SubjectRepository $repository, ): JsonResponse { $subject = $repository->findById($id); if ($subject === null) { return $this->json( $output->error(["UNKNOWN_RATING"]) ); } $payload = $request->getPayload(); if ($payload->has('name')) { $subject->setName($payload->getString('name')); } $em->flush(); return $this->json(null, 202); } #[Route('/api/subjects/{id}', methods: ['DELETE'])] public function delete( int $id, EntityManagerInterface $em, OutputService $output, SubjectRepository $repository, ): JsonResponse { $subject = $repository->findById($id); if ($subject === null) { return $this->json($output->error(["UNKNOWN_RATING"])); } $em->remove($subject); $em->flush(); return $this->json(null, 204); } }