X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FController%2FPersonController.php;h=0fb898527414e14ff7c940e3744cd8ea7f2c1edb;hb=b607789316c3ff7c7e01b9ad4ade2bc72ff61780;hp=af3c28a95e4ced170dac009a82e1826aa81fc01e;hpb=98f8520783f01754efaddb692cddb77e9fc236f3;p=Project_proches_de_moi-server.git diff --git a/src/Controller/PersonController.php b/src/Controller/PersonController.php index af3c28a..0fb8985 100644 --- a/src/Controller/PersonController.php +++ b/src/Controller/PersonController.php @@ -2,14 +2,17 @@ namespace App\Controller; use App\Entity\Person; -use FOS\RestBundle\Controller\FOSRestController; +use Symfony\Bundle\FrameworkBundle\Controller\Controller; +#use FOS\RestBundle\Controller\FOSRestController; use FOS\RestBundle\Controller\Annotations as Rest; +use FOS\RestBundle\View\ViewHandler; +use FOS\RestBundle\View\View; use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -class PersonController extends FOSRestController +class PersonController extends Controller { /** * @Rest\Post( @@ -26,6 +29,7 @@ class PersonController extends FOSRestController $em->persist($person); $em->flush(); + //TODO: use ViewHandler return $this->view($person, Response::HTTP_CREATED, ['Location' => $this->generateUrl('show_person', ['id' => $person->getId(), UrlGeneratorInterface::ABSOLUTE_URL])]); } @@ -36,7 +40,7 @@ class PersonController extends FOSRestController public function removePersonAction(Request $request) { $em = $this->getDoctrine()->getManager(); - $person = $em->getRepository('App::Person')->find($request->get('id')); + $person = $em->getRepository('App:Person')->find($request->get('id')); if (!empty($person)) { $em->remove($person); @@ -55,10 +59,12 @@ class PersonController extends FOSRestController public function updatePersonAction(Request $request) { $em = $this->getDoctrine()->getManager(); - $person = $em->getRepository('App::Person')->find($request->get('id')); + $person = $em->getRepository('App:Person')->find($request->get('id')); + + $viewHandler = $this->get('fos_rest.view_handler'); if (empty($person)) { - return new JsonResponse(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + return $this->PersonNotFound($viewHandler); } $person->setFirstName($request->get('firstname')); @@ -68,6 +74,7 @@ class PersonController extends FOSRestController $em->merge($person); $em->flush(); + //TODO: use ViewHandler return $this->view($person, Response::HTTP_CREATED, ['Location' => $this->generateUrl('show_person', ['id' => $person->getId(), UrlGeneratorInterface::ABSOLUTE_URL])]); } @@ -79,6 +86,27 @@ class PersonController extends FOSRestController } + /** + * @Rest\Get("/api/person/{id}/localisations") + */ + public function getLocalisationsAction(Request $request) + { + $em = $this->getDoctrine()->getManager(); + $localisations = $em->getRepository('App:Localisation')->findBy(['person' => $request->get('id')]); + + $viewHandler = $this->get('fos_rest.view_handler'); + + if (empty($localisations)) { + return $this->PersonLocalisationsNotFound($viewHandler); + } + + $view = View::create($localisations); + $view->setFormat('json'); + + return $viewHandler->handle($view); + + } + /** * @Rest\Post("/api/person/{id}/localisation") * @Rest\View(StatusCode = Response::HTTP_CREATED) @@ -107,14 +135,19 @@ class PersonController extends FOSRestController */ public function showPerson(Request $request) { - $em = $this->getDoctrine()->getManager(); - $person = $em->getRepository('App::Person')->find($request->get('id')); + $em = $this->getDoctrine()->getManager(); + $person = $em->getRepository('App:Person')->find($request->get('id')); + + $viewHandler = $this->get('fos_rest.view_handler'); - if (empty($person)) { - return new JsonResponse(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + if (empty($person)) { + return $this->PersonNotFound($viewHandler); } - return $person; + $view = View::create($person); + $view->setFormat('json'); + + return $viewHandler->handle($view); } /** @@ -127,14 +160,19 @@ class PersonController extends FOSRestController */ public function showPersonByEmail(Request $request) { - $em = $this->getDoctrine()->getManager(); - $person = $em->getRepository('App::Person')->find($request->get('email')); + $em = $this->getDoctrine()->getManager(); + $person = $em->getRepository('App:Person')->findOneBy(['email' => $request->get('email')]); - if (empty($person)) { - return new JsonResponse(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); - } + $viewHandler = $this->get('fos_rest.view_handler'); - return $person; + if (empty($person)) { + return $this->PersonNotFound($viewHandler); + } + + $view = View::create($person); + $view->setFormat('json'); + + return $viewHandler->handle($view); } /** @@ -147,14 +185,19 @@ class PersonController extends FOSRestController */ public function showPersonFriends(Request $request) { - $em = $this->getDoctrine()->getManager(); - $person = $em->getRepository('App::Person')->find($request->get('id')); + $em = $this->getDoctrine()->getManager(); + $person = $em->getRepository('App:Person')->find($request->get('id')); - if (empty($person)) { - return new JsonResponse(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); - } + $viewHandler = $this->get('fos_rest.view_handler'); - return $person->getFriends(); + if (empty($person)) { + return $this->PersonNotFound($viewHandler); + } + + $view = View::create($person->getFriends()); + $view->setFormat('json'); + + return $viewHandler->handle($view); } /** @@ -167,13 +210,27 @@ class PersonController extends FOSRestController */ public function showPersonFriendsByEmail(Request $request) { - $em = $this->getDoctrine()->getManager(); - $person = $em->getRepository('App::Person')->find($request->get('email')); + $em = $this->getDoctrine()->getManager(); + $person = $em->getRepository('App:Person')->findOneBy(['email' => $request->get('email')]); - if (empty($person)) { - return new JsonResponse(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); - } + $viewHandler = $this->get('fos_rest.view_handler'); - return $person->getFriends(); + if (empty($person)) { + return $this->PersonNotFound($viewHandler); + } + + $view = View::create($person->getFriends()); + $view->setFormat('json'); + + return $viewHandler->handle($view); } + + private function PersonNotFound($viewHandler) { + return $viewHandler->handle(View::create(['message' => 'Person not found'], Response::HTTP_NOT_FOUND)); + } + + private function PersonLocalisationsNotFound($viewHandler) { + return $viewHandler->handle(View::create(['message' => 'Person localisations not found'], Response::HTTP_NOT_FOUND)); + } + }