src/Aviatur/RestBundle/Controller/ApiWhiteMarkController.php line 14

Open in your IDE?
  1. <?php
  2. namespace Aviatur\RestBundle\Controller;
  3. use FOS\RestBundle\Controller\AbstractFOSRestController;
  4. use FOS\RestBundle\Controller\Annotations\View;
  5. use FOS\RestBundle\Controller\Annotations\Post;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Aviatur\GeneralBundle\Entity\Whitemark;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use Swagger\Annotations as SWG;
  10. use Symfony\Component\HttpFoundation\Response;
  11. class ApiWhiteMarkController extends AbstractFOSRestController {
  12.     private function objectToArrayApp(ManagerRegistry $registry$entity) {
  13.         $em $registry->getManager();
  14.         $cols $em->getClassMetadata(get_class($entity))->getColumnNames();
  15.         $values = [];
  16.         foreach ($cols as $col) {
  17.             $getter 'get' ucfirst($col);
  18.             $values[$col] = $entity->$getter();
  19.         }
  20.         return $values;
  21.     }
  22.     /**
  23.      * @SWG\Response(response=200, description="new white mark type 0 default embebed 1")
  24.      * @View()
  25.      * @Post("new")
  26.      * @return Response
  27.      */
  28.     public function newAction(Request $requestManagerRegistry $registry) {
  29.         $em $registry->getManager();
  30.         $data json_decode($request->getContent());
  31.         $agency $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->findOneByName($data->agency);
  32.         if (is_object($agency)) {
  33.             $data->agency $agency;
  34.             $whitemark = new Whitemark();
  35.             foreach ($data as $key => $value) {
  36.                 $setter 'set' ucfirst($key);
  37.                 $whitemark->$setter($value);
  38.             }
  39.             $em->persist($whitemark);
  40.             $em->flush();
  41.             return $this->json($this->objectToArrayApp($registry$whitemark));
  42.         } else {
  43.             return $this->json(['error' => 'La agencia relacionada no existe']);
  44.         }
  45.     }
  46. }