X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FController%2FPersonController.php;h=102b6980245824c6ca33201fe66ae29d641a3573;hb=0a86529e66b5c3a97ed60dd8451129350a42829c;hp=1a6821335bad4f2715b2a16dd788982940ada456;hpb=dec6d0310680edbf06e4564590d6e4a3ffde8a6e;p=Project_proches_de_moi-server.git diff --git a/src/Controller/PersonController.php b/src/Controller/PersonController.php index 1a68213..102b698 100644 --- a/src/Controller/PersonController.php +++ b/src/Controller/PersonController.php @@ -2,18 +2,21 @@ 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( - * path = "/person/inscription", + * path = "/api/person/inscription", * name = "create_person" * ) * @Rest\View(StatusCode = Response::HTTP_CREATED) @@ -26,11 +29,12 @@ 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])]); } /** - * @Rest\Delete("/person/{id}") + * @Rest\Delete("/api/person/{id}") * @Rest\View(statusCode = Response::HTTP_NO_CONTENT) */ public function removePersonAction(Request $request) @@ -38,15 +42,16 @@ class PersonController extends FOSRestController $em = $this->getDoctrine()->getManager(); $person = $em->getRepository('App:Person')->find($request->get('id')); - if ($person) { - $em->remove($place); + if (!empty($person)) { + $em->remove($person); $em->flush(); } + //TODO: remove localisation and friendship } /** * @Rest\Put( - * path = "/person/{id}/update", + * path = "/api/person/{id}/update", * name = "update_person" * ) * @Rest\View(StatusCode = Response::HTTP_CREATED) @@ -56,8 +61,10 @@ class PersonController extends FOSRestController $em = $this->getDoctrine()->getManager(); $person = $em->getRepository('App:Person')->find($request->get('id')); - if (empty($place)) { - return new JsonResponse(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + $viewHandler = $this->get('fos_rest.view_handler'); + + if (empty($person)) { + return $this->PersonNotFound($viewHandler); } $person->setFirstName($request->get('firstname')); @@ -67,11 +74,12 @@ 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])]); } /** - * @Rest\Get("/person/{id}/friends/localisation") + * @Rest\Get("/api/person/{id}/friends/localisation") */ public function getFriendsLocalisationAction(Request $request) { @@ -79,7 +87,29 @@ class PersonController extends FOSRestController } /** - * @Rest\Post("/person/{id}/localisation") + * @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) */ public function updateLocalisationAction(Request $request) { @@ -97,53 +127,135 @@ class PersonController extends FOSRestController /** * @Rest\Get( - * path = "/person/{id}", + * path = "/api/person/{id}", * name = "show_person", * requirements = {"id"="\d+"} * ) - * @Rest\View + * @Rest\View() */ - public function showPerson(Person $person) + public function showPerson(Request $request) { - return $person; + $em = $this->getDoctrine()->getManager(); + $person = $em->getRepository('App:Person')->find($request->get('id')); + + $viewHandler = $this->get('fos_rest.view_handler'); + + if (empty($person)) { + return $this->PersonNotFound($viewHandler); + } + + $view = View::create($person); + $view->setFormat('json'); + + return $viewHandler->handle($view); } /** * @Rest\Get( - * path = "/person/{email}", + * path = "/api/person/{email}", * name = "show_person_by_email", * requirements = {"email"="\s+"} * ) - * @Rest\View + * @Rest\View() */ - public function showPersonByEmail(Person $person) + public function showPersonByEmail(Request $request) { - return $person; + $em = $this->getDoctrine()->getManager(); + $person = $em->getRepository('App:Person')->findOneBy(['email' => $request->get('email')]); + + $viewHandler = $this->get('fos_rest.view_handler'); + + if (empty($person)) { + return $this->PersonNotFound($viewHandler); + } + + $view = View::create($person); + $view->setFormat('json'); + + return $viewHandler->handle($view); } /** * @Rest\Get( - * path = "/person/{id}/friends", + * path = "/api/person/{id}/friends", * name = "show_person_friends", * requirements = {"id"="\d+"} * ) - * @Rest\View + * @Rest\View() */ - public function showPersonFriends(Person $person) + public function showPersonFriends(Request $request) { - return $person->getFriends(); + $em = $this->getDoctrine()->getManager(); + $person = $em->getRepository('App:Person')->find($request->get('id')); + + $viewHandler = $this->get('fos_rest.view_handler'); + + if (empty($person)) { + return $this->PersonNotFound($viewHandler); + } + + $view = View::create($person->getFriends()); + $view->setFormat('json'); + + return $viewHandler->handle($view); } /** * @Rest\Get( - * path = "/person/{email}/friends", + * path = "/api/persons", + * name = "show_persons" + * ) + * @Rest\View() + */ + public function showPersons(Request $request) + { + $em = $this->getDoctrine()->getManager(); + $persons = $em->getRepository('App:Person')->findAll(); + + $viewHandler = $this->get('fos_rest.view_handler'); + + if (empty($persons)) { + return $this->PersonNotFound($viewHandler); + } + + // $view = View::create($persons); + // $view->setFormat('json'); + // + // return $viewHandler->handle($view); + return $persons; + } + + /** + * @Rest\Get( + * path = "/api/person/{email}/friends", * name = "show_person_friends_by_email", * requirements = {"email"="\s+"} * ) - * @Rest\View + * @Rest\View() */ - public function showPersonFriendsByEmail(Person $person) + public function showPersonFriendsByEmail(Request $request) { - return $person->getFriends(); + $em = $this->getDoctrine()->getManager(); + $person = $em->getRepository('App:Person')->findOneBy(['email' => $request->get('email')]); + + $viewHandler = $this->get('fos_rest.view_handler'); + + 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)); + } + }