X-Git-Url: https://git.piment-noir.org/?p=Project_proches_de_moi-server.git;a=blobdiff_plain;f=src%2FController%2FPersonController.php;h=734f29c9eca165ade74de8773ffde5970a07cb1a;hp=8d4f1271ead0a1b7da8d750362f9f147c379cbc4;hb=84fd6c7fa765874e478ad7f92e356e88b3ff962c;hpb=df29951479f5e8012b541172fac893b7d476b402 diff --git a/src/Controller/PersonController.php b/src/Controller/PersonController.php index 8d4f127..734f29c 100644 --- a/src/Controller/PersonController.php +++ b/src/Controller/PersonController.php @@ -2,21 +2,20 @@ namespace App\Controller; use App\Entity\Person; -use FOS\RestBundle\Controller\FOSRestController; +use Symfony\Bundle\FrameworkBundle\Controller\Controller; 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; -/** - * @Rest\Prefix("/api") - */ -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) @@ -33,23 +32,24 @@ class PersonController extends FOSRestController } /** - * @Rest\Delete("/person/{id}") + * @Rest\Delete("/api/person/{id}") * @Rest\View(statusCode = Response::HTTP_NO_CONTENT) */ 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); $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) @@ -57,10 +57,10 @@ 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')); if (empty($person)) { - return new JsonResponse(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + return $this->PersonNotFound(); } $person->setFirstName($request->get('firstname')); @@ -74,15 +74,39 @@ class PersonController extends FOSRestController } /** - * @Rest\Get("/person/{id}/friends/localisation") + * @Rest\Get("/api/person/{id}/localisations") + * @Rest\View() */ - public function getFriendsLocalisationAction(Request $request) + public function getLocalisationsAction(Request $request) { + $em = $this->getDoctrine()->getManager(); + $localisations = $em->getRepository('App:Localisation')->findBy(['person' => $request->get('id')]); + + if (empty($localisations)) { + return $this->PersonLocalisationsNotFound(); + } + + return $localisations; + } + + /** + * @Rest\Get("/api/person/{id}/localisation") + * @Rest\View() + */ + public function getLocalisationAction(Request $request) + { + $em = $this->getDoctrine()->getManager(); + $localisations = $em->getRepository('App:Localisation')->findOneBy(['person' => $request->get('id')]); + + if (empty($localisations)) { + return $this->PersonLocalisationNotFound(); + } + return $localisations; } /** - * @Rest\Post("/person/{id}/localisation") + * @Rest\Post("/api/person/{id}/localisation") * @Rest\View(StatusCode = Response::HTTP_CREATED) */ public function updateLocalisationAction(Request $request) @@ -101,7 +125,7 @@ class PersonController extends FOSRestController /** * @Rest\Get( - * path = "/person/{id}", + * path = "/api/person/{id}", * name = "show_person", * requirements = {"id"="\d+"} * ) @@ -109,19 +133,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')); - if (empty($person)) { - return new JsonResponse(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + if (empty($person)) { + return $this->PersonNotFound(); } - return $person; + return $person; } /** * @Rest\Get( - * path = "/person/{email}", + * path = "/api/person/{email}", * name = "show_person_by_email", * requirements = {"email"="\s+"} * ) @@ -129,19 +153,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); - } + if (empty($person)) { + return $this->PersonNotFound(); + } - return $person; + return $person; } /** * @Rest\Get( - * path = "/person/{id}/friends", + * path = "/api/person/{id}/friends", * name = "show_person_friends", * requirements = {"id"="\d+"} * ) @@ -149,19 +173,38 @@ 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); - } + if (empty($person)) { + return $this->PersonNotFound(); + } - return $person->getFriends(); + return $person->getFriends(); } /** * @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(); + + if (empty($persons)) { + return $this->PersonsNotFound(); + } + + return $persons; + } + + /** + * @Rest\Get( + * path = "/api/person/{email}/friends", * name = "show_person_friends_by_email", * requirements = {"email"="\s+"} * ) @@ -169,13 +212,30 @@ 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); - } + if (empty($person)) { + return $this->PersonNotFound(); + } + + return $person->getFriends(); + } + + private function PersonNotFound() { + return View::create(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + } - return $person->getFriends(); + private function PersonsNotFound() { + return View::create(['message' => 'Persons not found'], Response::HTTP_NOT_FOUND); } + + private function PersonLocalisationNotFound() { + return View::create(['message' => 'Person localisation not found'], Response::HTTP_NOT_FOUND); + } + + private function PersonLocalisationsNotFound() { + return View::create(['message' => 'Person localisations not found'], Response::HTTP_NOT_FOUND); + } + }