<?php
namespace Aviatur\RestBundle\Controller;
use FOS\RestBundle\Controller\AbstractFOSRestController;
use FOS\RestBundle\Controller\Annotations\View;
use FOS\RestBundle\Controller\Annotations\Post;
use Symfony\Component\HttpFoundation\Request;
use Aviatur\GeneralBundle\Entity\Whitemark;
use Doctrine\Persistence\ManagerRegistry;
use Swagger\Annotations as SWG;
use Symfony\Component\HttpFoundation\Response;
class ApiWhiteMarkController extends AbstractFOSRestController {
private function objectToArrayApp(ManagerRegistry $registry, $entity) {
$em = $registry->getManager();
$cols = $em->getClassMetadata(get_class($entity))->getColumnNames();
$values = [];
foreach ($cols as $col) {
$getter = 'get' . ucfirst($col);
$values[$col] = $entity->$getter();
}
return $values;
}
/**
* @SWG\Response(response=200, description="new white mark type 0 default embebed 1")
* @View()
* @Post("new")
* @return Response
*/
public function newAction(Request $request, ManagerRegistry $registry) {
$em = $registry->getManager();
$data = json_decode($request->getContent());
$agency = $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->findOneByName($data->agency);
if (is_object($agency)) {
$data->agency = $agency;
$whitemark = new Whitemark();
foreach ($data as $key => $value) {
$setter = 'set' . ucfirst($key);
$whitemark->$setter($value);
}
$em->persist($whitemark);
$em->flush();
return $this->json($this->objectToArrayApp($registry, $whitemark));
} else {
return $this->json(['error' => 'La agencia relacionada no existe']);
}
}
}