X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FController%2FPersonController.php;h=102b6980245824c6ca33201fe66ae29d641a3573;hb=0a86529e66b5c3a97ed60dd8451129350a42829c;hp=785377114530cfea5c1a353db4b3fc156ef18053;hpb=d68c207331ee5c52769c538984e69ca7bbe5e902;p=Project_proches_de_moi-server.git diff --git a/src/Controller/PersonController.php b/src/Controller/PersonController.php index 7853771..102b698 100644 --- a/src/Controller/PersonController.php +++ b/src/Controller/PersonController.php @@ -29,6 +29,7 @@ class PersonController extends Controller $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])]); } @@ -60,8 +61,10 @@ class PersonController extends Controller $em = $this->getDoctrine()->getManager(); $person = $em->getRepository('App:Person')->find($request->get('id')); + $viewHandler = $this->get('fos_rest.view_handler'); + if (empty($person)) { - return View::create(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + return $this->PersonNotFound($viewHandler); } $person->setFirstName($request->get('firstname')); @@ -71,6 +74,7 @@ class PersonController extends Controller $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])]); } @@ -82,6 +86,27 @@ class PersonController extends Controller } + /** + * @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) @@ -113,14 +138,15 @@ class PersonController extends Controller $em = $this->getDoctrine()->getManager(); $person = $em->getRepository('App:Person')->find($request->get('id')); + $viewHandler = $this->get('fos_rest.view_handler'); + if (empty($person)) { - return View::create(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + return $this->PersonNotFound($viewHandler); } $view = View::create($person); $view->setFormat('json'); - $viewHandler = $this->get('fos_rest.view_handler'); return $viewHandler->handle($view); } @@ -135,16 +161,17 @@ class PersonController extends Controller public function showPersonByEmail(Request $request) { $em = $this->getDoctrine()->getManager(); - $person = $em->getRepository('App:Person')->find($request->get('email')); + $person = $em->getRepository('App:Person')->findOneBy(['email' => $request->get('email')]); + + $viewHandler = $this->get('fos_rest.view_handler'); if (empty($person)) { - return View::create(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + return $this->PersonNotFound($viewHandler); } $view = View::create($person); $view->setFormat('json'); - $viewHandler = $this->get('fos_rest.view_handler'); return $viewHandler->handle($view); } @@ -161,17 +188,43 @@ class PersonController extends Controller $em = $this->getDoctrine()->getManager(); $person = $em->getRepository('App:Person')->find($request->get('id')); + $viewHandler = $this->get('fos_rest.view_handler'); + if (empty($person)) { - return View::create(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + return $this->PersonNotFound($viewHandler); } $view = View::create($person->getFriends()); $view->setFormat('json'); - $viewHandler = $this->get('fos_rest.view_handler'); return $viewHandler->handle($view); } + /** + * @Rest\Get( + * 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", @@ -183,16 +236,26 @@ class PersonController extends Controller public function showPersonFriendsByEmail(Request $request) { $em = $this->getDoctrine()->getManager(); - $person = $em->getRepository('App:Person')->find($request->get('email')); + $person = $em->getRepository('App:Person')->findOneBy(['email' => $request->get('email')]); + + $viewHandler = $this->get('fos_rest.view_handler'); if (empty($person)) { - return View::create(['message' => 'Person not found'], Response::HTTP_NOT_FOUND); + return $this->PersonNotFound($viewHandler); } $view = View::create($person->getFriends()); $view->setFormat('json'); - $viewHandler = $this->get('fos_rest.view_handler'); 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)); + } + }