ProfileRESTController.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. namespace FTTHBundle\Controller\REST;
  3. use FOS\RestBundle\Controller\Annotations\RouteResource;
  4. use FOS\RestBundle\Controller\Annotations\View;
  5. use FOS\RestBundle\View\View as FOSView;
  6. use FTTHBundle\Form\ProfileType;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use WebserviceBundle\Controller\RESTController;
  9. use FOS\RestBundle\Controller\Annotations as Rest;
  10. /**
  11. * Profile controller.
  12. * @RouteResource("Profile")
  13. */
  14. class ProfileRESTController extends RESTController
  15. {
  16. /**
  17. * @return string Retorna el nombre de la Entity de trabajo.
  18. */
  19. public function getRepository()
  20. {
  21. return 'FTTHBundle:Profile';
  22. }
  23. /**
  24. * @return string Retorna el tipo de la clase.
  25. */
  26. public function getFormEntityType()
  27. {
  28. return get_class(new ProfileType());
  29. }
  30. /**
  31. * Create a entity.
  32. *
  33. * @View(statusCode=201, serializerEnableMaxDepthChecks=true)
  34. *
  35. * @param Request $request Contiene el request.
  36. * @Rest\Post
  37. * @return FOSView|mixed Retorna el FOSView o la entidad.
  38. */
  39. public function migrateProfileAction(Request $request)
  40. {
  41. $values = $request->request->all();
  42. // deshabilito la tenencia
  43. $tenancyService = $this->getTenancyService();
  44. if (empty($values['tenancy'])) {
  45. $tenancyService->setTenancy(1);
  46. } else {
  47. $tenancyService->setTenancy($values['tenancy']);
  48. }
  49. $criteria = new \Doctrine\Common\Collections\Criteria();
  50. $criteria->andWhere($criteria->expr()->eq("name", $values['name']));
  51. $em = $this->getDoctrine()->getManager();
  52. $repo = $em->getRepository($this->getRepository());
  53. $entities = $repo->matching($criteria)->toArray();
  54. if (count($entities) > 0 && $entities[0]) {
  55. // la entidad existe por lo tanto la actualizo
  56. $resp = $this->putAction($request, $entities[0]);
  57. } else {
  58. // la entidad no existe, entonces la creo
  59. // deshabilito el auto increment del id
  60. $resp = $this->postAction($request);
  61. }
  62. return $resp;
  63. }
  64. }