src/Controller/higotrigo/EscandalloController.php line 265

Open in your IDE?
  1. <?php
  2. namespace App\Controller\higotrigo;
  3. use App\Entity\Escandallo;
  4. use App\Entity\EscandalloProduct;
  5. use App\Entity\FamilyEscandallo;
  6. use App\Entity\HtMenu;
  7. use App\Entity\Product;
  8. use App\Form\EscandalloType;
  9. use App\Repository\EscandalloRepository;
  10. use App\Repository\FamilyEscandalloRepository;
  11. use Doctrine\ORM\EntityManagerInterface;
  12. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\HttpFoundation\Response;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\HttpFoundation\JsonResponse;
  18. use Symfony\Component\Serializer\Normalizer\AbstractNormalizer;
  19. use Symfony\Component\Serializer\SerializerInterface;
  20. use Symfony\Contracts\Translation\TranslatorInterface;
  21. /**
  22.  * @Route("/higotrigo/escandallo")
  23.  */
  24. class EscandalloController extends AbstractController
  25. {
  26.     private $translator;
  27.     public function __construct(TranslatorInterface $translator) {
  28.         $this->translator $translator;
  29.     }
  30.     /**
  31.      * @Route("/", name="app_escandallo_index", methods={"GET"})
  32.      */
  33.     public function index(EscandalloRepository $escandalloRepository): Response
  34.     {
  35.         return $this->render('higotrigo/escandallo/index.html.twig', [
  36.             'escandallos' => $escandalloRepository->findBy([], ['nombre' => 'ASC']),
  37.         ]);
  38.     }
  39.     /**
  40.      * @Route("/new", name="app_escandallo_new", methods={"GET", "POST"})
  41.      */
  42.     public function new(Request $requestEscandalloRepository $escandalloRepository): Response
  43.     {
  44.         $escandallo = new Escandallo();
  45.         $escandallo->setEscandalloPax(10); // Por defecto tiene que aparecer como 10
  46.         $escandallo->setCosteDirectoPerc(25); // Por defecto tiene que aparecer como 25
  47.         $escandallo->addEscandalloProduct(new EscandalloProduct); // Con esto aparece una fila de producto por defecto activa
  48.         $form $this->createForm(EscandalloType::class, $escandallo);
  49.         $form->handleRequest($request);
  50.         if ($form->isSubmitted() && $form->isValid()) {
  51.             $user $this->getUser();
  52.             $escandallo->setCreatedId($user);
  53.             $escandallo->setUpdatedId($user);
  54.             //Recorremos los escandalloProducts para aƱadirle el usuario que los crea
  55.             $escandalloProducts $escandallo->getEscandalloProducts();
  56.             foreach ($escandalloProducts as $product) {
  57.                 $escandallo->removeEscandalloProduct($product);
  58.                 
  59.                 $product->setCreatedId($user);
  60.                 $product->setUpdatedId($user);
  61.                 $escandallo->addEscandalloProduct($product);
  62.             }
  63.             $file $form->get('foto')->getData();
  64.             if ($file) {
  65.                 $fileName md5(rand() * time());
  66.                 $camino "assets/document/higotrigo/escandallo/";
  67.                 if (!file_exists($camino)) { mkdir($camino,0777,true); }
  68.                 $extension $file->guessExtension();
  69.                 $file_id $fileName.'.'.$extension;
  70.                 $file->move($camino$file_id);
  71.                 $escandallo->setFoto($file_id);
  72.             }
  73.             $escandalloRepository->add($escandallotrue);
  74.             return $this->redirectToRoute('app_escandallo_index', [], Response::HTTP_SEE_OTHER);
  75.         }
  76.         return $this->renderForm('higotrigo/escandallo/new.html.twig', [
  77.             'escandallo' => $escandallo,
  78.             'form' => $form,
  79.         ]);
  80.     }
  81.     /**
  82.      * @Route("/{id}", name="app_escandallo_show", methods={"GET"})
  83.      */
  84.     public function show(Escandallo $escandallo): Response
  85.     {
  86.         return $this->render('higotrigo/escandallo/show.html.twig', [
  87.             'escandallo' => $escandallo,
  88.         ]);
  89.     }
  90.     /**
  91.      * @Route("/{id}/edit", name="app_escandallo_edit", methods={"GET", "POST"})
  92.      */
  93.     public function edit(Request $requestEscandallo $escandalloEscandalloRepository $escandalloRepositoryEntityManagerInterface $em): Response
  94.     {
  95.         $form $this->createForm(EscandalloType::class, $escandallo);
  96.         $form->handleRequest($request);
  97.         if ($form->isSubmitted() && $form->isValid()) {
  98.             $user $this->getUser();
  99.             $escandallo->setUpdatedId($user);
  100.             //Recorremos los escandalloProducts para aƱadirle el usuario que los edita
  101.             $escandalloProducts $escandallo->getEscandalloProducts();
  102.             foreach ($escandalloProducts as $product) {
  103.                 $escandallo->removeEscandalloProduct($product);
  104.                 
  105.                 if($product->getCreatedId() == NULL){
  106.                     $product->setCreatedId($user);
  107.                 }
  108.                 $product->setUpdatedId($user);
  109.                 $escandallo->addEscandalloProduct($product);
  110.             }
  111.             $file $form->get('foto')->getData();
  112.             if ($file) {
  113.                 $fileName md5(rand() * time());
  114.                 $camino "assets/document/higotrigo/escandallo/";
  115.                 if (!file_exists($camino)) { mkdir($camino,0777,true); }
  116.                 $extension $file->guessExtension();
  117.                 $file_id $fileName.'.'.$extension;
  118.                 $file->move($camino$file_id);
  119.                 $escandallo->setFoto($file_id);
  120.             }
  121.             $escandalloRepository->add($escandallotrue);
  122.             return $this->redirectToRoute('app_escandallo_index', [], Response::HTTP_SEE_OTHER);
  123.         }
  124.         $products $em->getRepository(Product::class)->findAll(); //Para poder poner el precio del producto en la vista
  125.         $escandallos $escandalloRepository->findAll(); //Para poder poner el precio del escandallo
  126.         return $this->renderForm('higotrigo/escandallo/edit.html.twig', [
  127.             'escandallo' => $escandallo,
  128.             'form' => $form,
  129.             'escandallos' => $escandallos,
  130.             'products' => $products,
  131.         ]);
  132.     }
  133.     /**
  134.      * @Route("/{id}", name="app_escandallo_delete", methods={"POST"})
  135.      */
  136.     public function delete(Request $requestEscandallo $escandalloEscandalloRepository $escandalloRepository): Response
  137.     {
  138.         if ($this->isCsrfTokenValid('delete'.$escandallo->getId(), $request->request->get('_token'))) {
  139.             $escandalloRepository->remove($escandallotrue);
  140.         }
  141.         return $this->redirectToRoute('app_escandallo_index', [], Response::HTTP_SEE_OTHER);
  142.     }
  143.     /**
  144.      * @Route("/{id}/duplicate", name="app_escandallo_duplicate", methods={"GET", "POST"})
  145.      */
  146.     public function duplicate(Escandallo $escandalloEscandalloRepository $escandalloRepository): Response
  147.     {
  148.         $user $this->getUser();
  149.         $newEscandallo = new Escandallo();
  150.         $newEscandallo->setFamilyEscandallo($escandallo->getFamilyEscandallo());
  151.         $newEscandallo->setEscandalloPax($escandallo->getEscandalloPax());
  152.         $newEscandallo->setTotalTenPax($escandallo->getTotalTenPax());
  153.         $newEscandallo->setCostePax($escandallo->getCostePax());
  154.         $newEscandallo->setPvp($escandallo->getPvp());
  155.         $newEscandallo->setPvpNotVat($escandallo->getPvpNotVat());
  156.         $newEscandallo->setCosteDirectoPerc($escandallo->getCosteDirectoPerc());
  157.         $newEscandallo->setBeneficio($escandallo->getBeneficio());
  158.         $newEscandallo->setFoto($escandallo->getFoto());
  159.         $newEscandallo->setDecription($escandallo->getDecription());
  160.         $newEscandallo->setObservaciones($escandallo->getObservaciones());
  161.         $newEscandallo->setNombre('DUPLICADO DE: '.$escandallo->getNombre());
  162.         $newEscandallo->setCreatedId($user);
  163.         $newEscandallo->setUpdatedId($user);
  164.         $escandalloProducts $escandallo->getEscandalloProducts();
  165.         foreach ($escandalloProducts as $item){
  166.             $newEscandalloProduct = new EscandalloProduct();
  167.             $newEscandalloProduct->setCantidad($item->getCantidad());
  168.             $newEscandalloProduct->setCodigo($item->getCodigo());
  169.             $newEscandalloProduct->setCoste($item->getCoste());
  170. //            $newEscandalloProduct->setEscandallo($item->getEscandallo());
  171.             $newEscandalloProduct->setProduct($item->getProduct());
  172.             $newEscandalloProduct->setEscandalloChild($item->getEscandalloChild());
  173.             $newEscandalloProduct->setCreatedId($user);
  174.             $newEscandalloProduct->setUpdatedId($user);
  175.             $newEscandallo->addEscandalloProduct($newEscandalloProduct);
  176.         }
  177.         $escandalloRepository->add($newEscandallotrue);
  178.         return $this->redirectToRoute('app_escandallo_edit', ['id' => $newEscandallo->getId()], Response::HTTP_SEE_OTHER);
  179.     }
  180.     /**
  181.      * @Route("/{id}/price", name="app_escandallo_get_price", methods={"GET"})
  182.      */
  183.     public function getPreice(Escandallo $escandallo): JsonResponse
  184.     {
  185.         $return = array( 'price' => $escandallo->getCostePax(), );
  186.         $response = new JsonResponse($return);
  187.         return $response;
  188.     }
  189.     /**
  190.      * @Route("/{id}/escandallo-by-family", name="app_escandallo_escandallo_by_family", methods={"GET"})
  191.      */
  192.     function getEscandallosByFamily($idEscandalloRepository $escandalloRepositoryFamilyEscandalloRepository $familyEscandalloRepositorySerializerInterface $serializerInterface) : JsonResponse {
  193.         $familyEscandallo $familyEscandalloRepository->findById($id);
  194.         if($familyEscandallo){
  195.             $escandallos $escandalloRepository->findBy(['familyEscandallo' => $familyEscandallo]);
  196.         }else{
  197.             $escandallos $escandalloRepository->findAll();
  198.         }
  199.         $data $serializerInterface->serialize($escandallos'json', [
  200.             AbstractNormalizer::GROUPS => ['escandallo:read']
  201.         ]);
  202.         return $this->json(json_decode($data), JsonResponse::HTTP_OK);
  203.     }
  204.     /**
  205.      * @Route("/{id}/details", name="app_escandallo_get_details", methods={"GET"})
  206.      */
  207.     function getEscandalloDetails(Escandallo $escandalloEscandalloRepository $escandalloRepositorySerializerInterface $serializerInterface) : JsonResponse {
  208.         $data $serializerInterface->serialize($escandallo'json', [
  209.             AbstractNormalizer::GROUPS => ['escandallo:read']
  210.         ]);
  211.         return $this->json(json_decode($data), JsonResponse::HTTP_OK);
  212.     }
  213.     /**
  214.      * @Route("/{escandalloId}/add-to-menu/{menuId}", name="app_escandallo_add_to_menu", methods={"GET"})
  215.      * @ParamConverter("escandallo", class="App\Entity\Escandallo", options={"id" = "escandalloId"})
  216.      * @ParamConverter("htMenu", class="App\Entity\HtMenu", options={"id" = "menuId"})
  217.      */
  218.     function addToMenu(Escandallo $escandalloHtMenu $htMenuEscandalloRepository $escandalloRepositorySerializerInterface $serializerInterface) : JsonResponse {
  219.         $escandallo->addHtMenu($htMenu);
  220.         $escandalloRepository->add($escandallotrue);
  221.         $data $serializerInterface->serialize($escandallo'json', [
  222.             AbstractNormalizer::GROUPS => ['escandallo:read']
  223.         ]);
  224.         return $this->json(json_decode($data), JsonResponse::HTTP_OK);
  225.     }
  226.     /**
  227.      * @Route("/{escandalloId}/remove-to-menu/{menuId}", name="app_escandallo_remove_to_menu", methods={"GET"})
  228.      * @ParamConverter("escandallo", class="App\Entity\Escandallo", options={"id" = "escandalloId"})
  229.      * @ParamConverter("htMenu", class="App\Entity\HtMenu", options={"id" = "menuId"})
  230.      */
  231.     function removeToMenu(Escandallo $escandalloHtMenu $htMenuEscandalloRepository $escandalloRepositorySerializerInterface $serializerInterface) : JsonResponse {
  232.         $escandallo->removeHtMenu($htMenu);
  233.         $escandalloRepository->add($escandallotrue);
  234.         $data $serializerInterface->serialize($escandallo'json', [
  235.             AbstractNormalizer::GROUPS => ['escandallo:read']
  236.         ]);
  237.         return $this->json(json_decode($data), JsonResponse::HTTP_OK);
  238.     }
  239. }