src/Controller/Mantenimiento/PedidoReparacionController.php line 77

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Mantenimiento;
  3. use App\Entity\Equipos\Maquinaria;
  4. use App\Entity\Mantenimiento\Departamento;
  5. use App\Entity\Mantenimiento\PedidoReparacion;
  6. use App\Entity\Mantenimiento\SectorPlanta;
  7. use App\Entity\Mantenimiento\SolicitantePedidoReparacion;
  8. use App\Form\Mantenimiento\PedidoReparacionType;
  9. use App\Repository\Mantenimiento\PedidoReparacionRepository;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Doctrine\ORM\EntityRepository;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  17. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  18. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  19. use Symfony\Component\Form\Extension\Core\Type\DateType;
  20. use Symfony\Component\Validator\Constraints\NotNull;
  21. use Knp\Snappy\Pdf;
  22. use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
  23. use Twig\Environment;
  24. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
  25. use Symfony\Component\Form\FormError;
  26. use Symfony\Component\HttpFoundation\JsonResponse;
  27. /**
  28.  * @Route("/pedido/reparacion")
  29.  * @Security("is_granted('ROLE_INGRESO_ANOMALIAS') or is_granted('ROLE_CALIDAD')")
  30.  */
  31. class PedidoReparacionController extends AbstractController
  32. {
  33.     private $twig;
  34.     private $pdf;
  35.     public function __construct(Environment $twigPdf $pdf)
  36.     {
  37.         $this->twig $twig;
  38.         $this->pdf $pdf;
  39.     }
  40.     /**
  41.      * @Route("/", name="app_mantenimiento_pedido_reparacion_index", methods={"GET", "POST"})
  42.      */
  43.     public function index(Request $requestPedidoReparacionRepository $pedidoReparacionRepository): Response
  44.     {
  45.         $form $this->formFilterTreas();
  46.         if ($request->isMethod('POST')) 
  47.         {
  48.             $form->handleRequest($request);
  49.  
  50.             $data $form->getData();
  51.             return $this->render('mantenimiento/pedido_reparacion/index.html.twig', [
  52.                 'pedido_reparacions' => $pedidoReparacionRepository->pedidosReparacionUsuarioWithParameters($this->getUser(), $data),
  53.                 'form' => $form->createView()
  54.             ]);
  55.             
  56.         }
  57.         return $this->render('mantenimiento/pedido_reparacion/index.html.twig', [
  58.             'pedido_reparacions' => $pedidoReparacionRepository->pedidosReparacionUsuario($this->getUser()),
  59.             'form' => $form->createView()
  60.         ]);
  61.     }
  62.    /**
  63.      * @Route("/informe/tareas/from/{from}/to/{to}/sector/{sector}/depto/{dpto}/state/{state}/export", name="app_mantenimiento_pedido_reparacion_informe_tareas_export", methods={"GET", "POST"})
  64.      */
  65.     public function eportarInformeSenasa($from$to$sector$dpto$stateRequest $requestPedidoReparacionRepository $pedidoReparacionRepository, \Doctrine\ORM\EntityManagerInterface $entityManager): Response
  66.     {
  67.         $data = [
  68.             'desde' => (new \DateTime())->setTimestamp($from),
  69.             'hasta' => (new \DateTime())->setTimestamp($to),
  70.             'sector' => $sector == 'all' null $entityManager->getRepository(SectorPlanta::class)->find($sector),
  71.             'departamento' => $dpto == 'all' null $entityManager->getRepository(Departamento::class)->find($dpto),
  72.             'estado' => $state
  73.         ];
  74.        /* $pendientes = $pedidoReparacionRepository->pedidosReparacionUsuarioWithParametersAllPendiente($data);
  75.         $realizadosDiagramados =  $pedidoReparacionRepository->pedidosReparacionUsuarioWithParametersAll($data);
  76.         $pedido_reparacions = array_merge($pendientes, $realizadosDiagramados);
  77.         usort($pedido_reparacions, function($a, $b) {
  78.             return $a['fechaPedido'] <=> $b['fechaPedido'];
  79.         });*/
  80.         $pedido_reparacions $this->getPedidosFiltrados($data$pedidoReparacionRepository);
  81.         if ($data['estado'] != 'all'
  82.         {
  83.             $filtrados array_filter($pedido_reparacions, function($item) use ($data) {
  84.                                                                 return $item['estado'] === $data['estado'];
  85.                                                             });
  86.         }
  87.         $html $this->twig->render('mantenimiento/diagrama_tarea/pedidos.html.twig', [
  88.             'pedido_reparacions' => $filtrados ?? $pedido_reparacions,
  89.             'data' => $data
  90.         ]);
  91.         $filename sprintf('informe_pedidos_reparacion_%s_%s'$data['desde']->format('d_m_Y'), $data['hasta']->format('d_m_Y'));
  92.         return new PdfResponse(
  93.             $this->pdf->getOutputFromHtml($html, [
  94.                 'margin-top'    => 10,
  95.                 'margin-right'  => 10,
  96.                 'margin-bottom' => 10,
  97.                 'margin-left'   => 10,
  98.                 'encoding'      => 'utf-8',
  99.                 'page-size'     => 'A4',
  100.                 'orientation'   => 'Landscape',
  101.             ]),
  102.             $filename '.pdf'
  103.         );
  104.     }
  105.     private function getPedidosFiltrados($dataPedidoReparacionRepository $pedidoReparacionRepository)
  106.     {
  107.         $pendientes $pedidoReparacionRepository->getAllPedidosWithParameter($data);
  108.         $detalle = array();
  109.         foreach ($pendientes as $pedido
  110.         {
  111.             $id $pedido->getId();
  112.             $detalle[$id] = [
  113.                                 'detalle' => $pedido->getDetalle(),
  114.                                 'sector' => $pedido->getSector() ? $pedido->getSector()->getNombre() : '',
  115.                                 'departamento' => $pedido->getDepartamento() ? $pedido->getDepartamento()->getNombre() : '',
  116.                                 'fechaPedido' => $pedido->getFecha(),
  117.                                 'estado' => 'pen',
  118.                                 'diagramado' => 0                                
  119.                             ];
  120.                 foreach ($pedido->getPedidosDiagramados() as $pedidoDiagramado
  121.                 {
  122.                     $diagrama $pedidoDiagramado->getDiagrama();
  123.                     if (!isset($detalle[$id]['realizada'])) //No se ha seteado el campo de realizada 
  124.                     {
  125.                         if ($diagrama->isProcesado())
  126.                         {
  127.                             $detalle[$id]['realizada'] = $pedidoDiagramado->isRealizada();
  128.                             if (!$pedidoDiagramado->isRealizada())
  129.                             {
  130.                                 unset($detalle[$id]['realizada']);
  131.                             }
  132.                                 
  133.                             $detalle[$id]['fecha'] = $diagrama->getFecha();
  134.                             $detalle[$id]['fechaDiagrama'] = $diagrama->getFecha();
  135.                             $detalle[$id]['estado'] = $pedidoDiagramado->isRealizada() ? 'rea' 'pen';
  136.                         }
  137.                         else
  138.                         {
  139.                             $detalle[$id]['realizada'] = 0;
  140.                             $detalle[$id]['fechaDiagrama'] = $diagrama->getFecha();
  141.                             $detalle[$id]['estado'] = 'pen';
  142.                             $detalle[$id]['diagramado'] = 1;
  143.                         }                       
  144.                     }
  145.                     else
  146.                     {
  147.                         if ($detalle[$id]['realizada'] == 0//Si no se ha realizado
  148.                         {
  149.                             if ($diagrama->isProcesado())
  150.                             {
  151.                                 if ($pedidoDiagramado->isRealizada())
  152.                                 {
  153.                                     $detalle[$id]['realizada'] = $pedidoDiagramado->isRealizada();
  154.                                     $detalle[$id]['fecha'] = $diagrama->getFecha();
  155.                                     $detalle[$id]['fechaDiagrama'] = $diagrama->getFecha();
  156.                                     $detalle[$id]['estado'] = 'rea';
  157.                                 }
  158.                                 else
  159.                                 {
  160.                                     unset($detalle[$id]['realizada']);
  161.                                     $detalle[$id]['fecha'] = $diagrama->getFecha();
  162.                                     $detalle[$id]['fechaDiagrama'] = $diagrama->getFecha();
  163.                                     $detalle[$id]['estado'] = 'pen';    
  164.                                 }
  165.                             }
  166.                             else
  167.                             {
  168.                                 $detalle[$id]['realizada'] = 0;
  169.                                 $detalle[$id]['fechaDiagrama'] = $diagrama->getFecha();
  170.                                 $detalle[$id]['estado'] = 'pen';
  171.                                 $detalle[$id]['diagramado'] = 1;
  172.                             }
  173.                         }
  174.                         
  175.                     }
  176.                 }
  177.             
  178.         }
  179.    
  180.         return $detalle;
  181.     }
  182.    /**
  183.      * @Route("/informe/tareas", name="app_mantenimiento_pedido_reparacion_informe_tareas", methods={"GET", "POST"})
  184.      */
  185.     public function informeSenasa(Request $requestPedidoReparacionRepository $pedidoReparacionRepository): Response
  186.     {
  187.         $form $this->formFilterInformes();
  188.         if ($request->isMethod('POST')) 
  189.         {
  190.             $form->handleRequest($request);
  191.             
  192.             if ($form->isValid()) 
  193.             {
  194.                 $data $form->getData();
  195.                 $url $this->generateUrl('app_mantenimiento_pedido_reparacion_informe_tareas_export', [
  196.                     'from' => $data['desde']->getTimestamp(),
  197.                     'to' => $data['hasta']->getTimestamp(),
  198.                     'sector' => $data['sector'] ? $data['sector']->getId() : 'all',
  199.                     'dpto' => $data['departamento'] ? $data['departamento']->getId() : 'all',
  200.                     'state' => $data['estado']
  201.                 ], 0);
  202.   
  203.              /*   $pendientes = $realizadosDiagramados = [];
  204.                 if ($data['estado'] == 'pen') 
  205.                 {
  206.                      //Representa todos los pedido de reparacion que no esten ni diagramados 
  207.                     $pendientes = $pedidoReparacionRepository->pedidosReparacionUsuarioWithParametersAllPendiente($data);
  208.                 }
  209.                 else
  210.                 {
  211.                    $realizadosDiagramados =  $pedidoReparacionRepository->pedidosReparacionUsuarioWithParametersAll($data);
  212.                    if ($data['estado'] == 'all') 
  213.                    {
  214.                         $pendientes = $pedidoReparacionRepository->pedidosReparacionUsuarioWithParametersAllPendiente($data);
  215.                    }
  216.                    
  217.                 }*/
  218.                 $pedido_reparacions $this->getPedidosFiltrados($data$pedidoReparacionRepository);
  219.                 if ($data['estado'] != 'all'
  220.                 {
  221.                     $filtrados array_filter($pedido_reparacions, function($item) use ($data) {
  222.                                                                         return $item['estado'] === $data['estado'];
  223.                                                                     });
  224.                 }
  225.                 //dd($pedido_reparacions);
  226.               //  $pedido_reparacions = array_merge($pendientes, $realizadosDiagramados);
  227.                 return $this->render('mantenimiento/pedido_reparacion/informe.html.twig', [
  228.                     'pedido_reparacions' => $filtrados ?? $pedido_reparacions,
  229.                     'form' => $form->createView(),  
  230.                     'url' => $url
  231.                 ]);
  232.             }
  233.             
  234.         }
  235.         return $this->render('mantenimiento/pedido_reparacion/informe.html.twig', [
  236.             'form' => $form->createView()
  237.         ]);
  238.     }
  239.     private function formFilterInformes()
  240.     {
  241.         $user $this->getUser();
  242.         $form $this->createFormBuilder()
  243.                      ->add('sector'EntityType::class, [
  244.                                 'class' => SectorPlanta::class,
  245.                                 'required' => false,
  246.                                 'placeholder' => 'Todos',
  247.                                 'choices' => $user->getAllSectoresActivos(),
  248.                                                     
  249.                             ])
  250.                      ->add('estado'ChoiceType::class, [
  251.                                 'choices'  => [
  252.                                     'Todos' => 'all',
  253.                                     'Pendientes' => 'pen',
  254. //                                    'Programados' => 'pro',
  255.                                     'Realizados' => 'rea',
  256.                                 ],
  257.                                 'data' => 'all',
  258.                             ])
  259.                      ->add('departamento'EntityType::class, [
  260.                                 'class' => Departamento::class,
  261.                                 'required' => false,
  262.                                 'placeholder' => 'Todos',
  263.                                 'choices' => $user->getDepartamentos()->toArray(),
  264.                             ])
  265.                      ->add('desde'DateType::class, [
  266.                                                         'widget' => 'single_text',
  267.                                                         'constraints' => [
  268.                                                             new NotNull(['message' => 'Este campo no puede estar vacío.']),
  269.                                                         ],
  270.                             ])
  271.                      ->add('hasta'DateType::class, [
  272.                                                         'widget' => 'single_text',
  273.                                                         'constraints' => [
  274.                                                             new NotNull(['message' => 'Este campo no puede estar vacío.']),
  275.                                                         ],
  276.                             ])
  277.                      ->getForm();
  278.         return $form;
  279.     }
  280.     private function formFilterTreas()
  281.     {
  282.         $user $this->getUser();
  283.         $form $this->createFormBuilder()
  284.                      ->add('realizado'ChoiceType::class, [
  285.                                 'choices'  => [
  286.                                     'Todas' => 'all',
  287.                                     'Si' => true,
  288.                                     'No' => false,
  289.                                 ],
  290.                                 'data' => 'all',
  291.                             ])
  292.                      ->add('diagramado'ChoiceType::class, [
  293.                                 'choices'  => [
  294.                                     'Todas' => 'all',
  295.                                     'Si' => true,
  296.                                     'No' => false,
  297.                                 ],
  298.                                 'data' => 'all',
  299.                             ])
  300.                      ->add('equipo'EntityType::class, [
  301.                                 'class' => Maquinaria::class,
  302.                                 'required' => false,
  303.                                 'placeholder' => 'Todos',
  304.                                 'query_builder' => function (EntityRepository $er) {
  305.                                                         return $er->createQueryBuilder('d')
  306.                                                                   ->join('d.sector''s')
  307.                                                                   ->andWhere('d.activo = true')
  308.                                                                   ->andWhere('s.active = true')
  309.                                                                   ->addOrderBy('s.nombre''ASC')
  310.                                                                   ->addOrderBy('d.nombre''ASC');
  311.                                                     },
  312.                                 'group_by' => function($choice$key$value) {
  313.                                                                                     if ($choice && $choice->getSector()) 
  314.                                                                                     {
  315.                                                                                         return $choice->getSector() . '';
  316.                                                                                     }
  317.                                                                                     return 'Sin sector';
  318.                                                                                 },
  319.                                                                            
  320.                             ])
  321.                      ->add('solicitante'EntityType::class, [
  322.                                 'class' => SolicitantePedidoReparacion::class,
  323.                                 'required' => false,
  324.                                 'placeholder' => 'Todos',
  325.                                 'query_builder' => function (EntityRepository $er) {
  326.                                                         return $er->createQueryBuilder('d')
  327.                                                                   ->andWhere('d.activo = true')
  328.                                                                   ->addOrderBy('d.nombre''ASC');
  329.                                                     },
  330.                                                                            
  331.                             ])
  332.                      ->add('sector'EntityType::class, [
  333.                                 'class' => SectorPlanta::class,
  334.                                 'required' => false,
  335.                                 'placeholder' => 'Todos',
  336.                                 'choices' => $user->getAllSectoresActivos(),
  337.                             ])
  338.                      ->add('desde'DateType::class, [
  339.                                                         'widget' => 'single_text',
  340.                                                         'data' => (new \DateTime())->modify('-1 day'),
  341.                             ])
  342.                      ->add('hasta'DateType::class, [
  343.                                                         'widget' => 'single_text',
  344.                                                         'data' => new \DateTime(),
  345.                             ])
  346.                      ->add('departamento'EntityType::class, [
  347.                                 'class' => Departamento::class,
  348.                                 'required' => false,
  349.                                 'placeholder' => 'Todos',
  350.                                 'choices' => $user->getAllDepartamentosActivos(),
  351.                             ])
  352.                      ->getForm();
  353.         return $form;
  354.     }
  355.     /**
  356.      * @Route("/new", name="app_mantenimiento_pedido_reparacion_new", methods={"GET", "POST"})
  357.      */
  358.     public function new(Request $requestPedidoReparacionRepository $pedidoReparacionRepository): Response
  359.     {
  360.         $pedidoReparacion = new PedidoReparacion();
  361.         $form $this->createForm(PedidoReparacionType::class, $pedidoReparacion, ['user' => $this->getUser()]);
  362.         $form->handleRequest($request);
  363.         if ($form->isSubmitted() && $form->isValid()) 
  364.         {
  365.             $uploadedFile $form->get('archivoImagen')->getData();
  366.             if ($uploadedFile
  367.             {
  368.                  $allowedMimeTypes = ['jpeg''JPG''JPEG''jpg''png''PNG','gif''GIF'];
  369.                  $extension $uploadedFile->getClientOriginalExtension();
  370.                 if (!in_array($extension$allowedMimeTypes)) 
  371.                 {
  372.                     $form->get('archivoImagen')->addError(new FormError('Tipo de archivo no permitido. Solo se aceptan JPEG, PNG y GIF.'));
  373.                     return $this->renderForm('mantenimiento/pedido_reparacion/new.html.twig', [
  374.                                                                                                 'pedido_reparacion' => $pedidoReparacion,
  375.                                                                                                 'form' => $form,
  376.                                                                                                 'dpto' => true
  377.                                                                                                 ]);
  378.                 }
  379.                 $originalFilename pathinfo($uploadedFile->getClientOriginalName(), PATHINFO_FILENAME);
  380.                 $safeFilename transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()'$originalFilename);
  381.                 $extension $uploadedFile->getClientOriginalExtension();                
  382.                 $newFilename $safeFilename.'-'.uniqid().'.'.$extension// Usamos $extension aquí
  383.                 try 
  384.                 {
  385.                     $uploadedFile->move(
  386.                         $this->getParameter('ruta_imagenes_pedidos'), 
  387.                         $newFilename
  388.                     );
  389.                 } catch (\Exception $e) {
  390.                     // ...
  391.                 }
  392.                 $pedidoReparacion->setNombreArchivoImagen($newFilename);
  393.             }
  394.             
  395.             $pedidoReparacionRepository->add($pedidoReparaciontrue);
  396.             return $this->redirectToRoute('app_mantenimiento_pedido_reparacion_index', [], Response::HTTP_SEE_OTHER);
  397.         }
  398.         return $this->renderForm('mantenimiento/pedido_reparacion/new.html.twig', [
  399.             'pedido_reparacion' => $pedidoReparacion,
  400.             'form' => $form,
  401.             'dpto' => true
  402.         ]);
  403.     }
  404.     /**
  405.      * @Route("/{id}/modificar/{dpto}/departamento", name="app_mantenimiento_pedido_reparacion_change_depto", methods={"GET", "POST"})
  406.      */
  407.     public function modificarDepartamento(PedidoReparacion $pedidoReparacionDepartamento $dptoPedidoReparacionRepository $pedidoReparacionRepository): Response
  408.     {
  409.         try
  410.         {
  411.             $pedidoReparacion->setDepartamento($dpto);
  412.             $pedidoReparacionRepository->add($pedidoReparaciontrue);
  413.             return new JsonResponse(['ok' => true]);
  414.         }
  415.         catch (\Exception $e)
  416.         {
  417.             return new JsonResponse(['ok' => false'message' => $e->getMessage()]);
  418.         }
  419.     }
  420.     /**
  421.      * @Route("/{id}", name="app_mantenimiento_pedido_reparacion_show", methods={"GET", "POST"})
  422.      */
  423.     public function show(PedidoReparacion $pedidoReparacion): Response
  424.     {
  425.         return $this->render('mantenimiento/pedido_reparacion/show.html.twig', [
  426.             'pedido_reparacion' => $pedidoReparacion,
  427.         ]);
  428.     }
  429.     /**
  430.      * @Route("/{id}/diagramar", name="app_mantenimiento_pedido_reparacion_diagramar", methods={"GET", "POST"})
  431.      */
  432.     public function diagramar(Request $requestPedidoReparacion $pedidoReparacionPedidoReparacionRepository $pedidoReparacionRepository): Response
  433.     {
  434.         if (in_array($this->getUser()->getId(), [1,11]))
  435.         {
  436.             $form $this->createForm(PedidoReparacionType::class, $pedidoReparacion, ['user' => $this->getUser(), 'depto' => true ]);
  437.         }
  438.         else
  439.         {
  440.             $form $this->createForm(PedidoReparacionType::class, $pedidoReparacion);
  441.         }
  442.      
  443.         $form->handleRequest($request);
  444.         if ($form->isSubmitted() && $form->isValid()) {
  445.             $pedidoReparacionRepository->add($pedidoReparaciontrue);
  446.             return $this->redirectToRoute('app_mantenimiento_pedido_reparacion_index', [], Response::HTTP_SEE_OTHER);
  447.         }
  448.         return $this->renderForm('mantenimiento/pedido_reparacion/edit.html.twig', [
  449.             'pedido_reparacion' => $pedidoReparacion,
  450.             'form' => $form,
  451.         ]);
  452.     }
  453.     /**
  454.      * @Route("/{id}/edit", name="app_mantenimiento_pedido_reparacion_edit", methods={"GET", "POST"})
  455.      */
  456.     public function edit(Request $requestPedidoReparacion $pedidoReparacionPedidoReparacionRepository $pedidoReparacionRepository): Response
  457.     {
  458.         $form $this->createForm(PedidoReparacionType::class, $pedidoReparacion, ['user' => $this->getUser(), 'depto' => in_array($this->getUser()->getId(), [1,11]) ]);
  459.         $form->handleRequest($request);
  460.         if ($form->isSubmitted() && $form->isValid()) 
  461.         {
  462.             $uploadedFile $form->get('archivoImagen')->getData();
  463.             if ($uploadedFile
  464.             {
  465.                  $allowedMimeTypes = ['jpeg''JPG''JPEG''jpg''png''PNG','gif''GIF'];
  466.                  $extension $uploadedFile->getClientOriginalExtension();
  467.                 if (!in_array($extension$allowedMimeTypes)) 
  468.                 {
  469.                     $form->get('archivoImagen')->addError(new FormError('Tipo de archivo no permitido. Solo se aceptan JPEG, PNG y GIF.'));
  470.                     return $this->renderForm('mantenimiento/pedido_reparacion/new.html.twig', [
  471.                                                                                                 'pedido_reparacion' => $pedidoReparacion,
  472.                                                                                                 'form' => $form,
  473.                                                                                                 'dpto' => true
  474.                                                                                                 ]);
  475.                 }
  476.                 $originalFilename pathinfo($uploadedFile->getClientOriginalName(), PATHINFO_FILENAME);
  477.                 $safeFilename transliterator_transliterate('Any-Latin; Latin-ASCII; [^A-Za-z0-9_] remove; Lower()'$originalFilename);
  478.                 $extension $uploadedFile->getClientOriginalExtension();                
  479.                 $newFilename $safeFilename.'-'.uniqid().'.'.$extension// Usamos $extension aquí
  480.                 try 
  481.                 {
  482.                     $uploadedFile->move(
  483.                         $this->getParameter('ruta_imagenes_pedidos'), 
  484.                         $newFilename
  485.                     );
  486.                 } catch (\Exception $e) {
  487.                     // ...
  488.                 }
  489.                 $pedidoReparacion->setNombreArchivoImagen($newFilename);
  490.             }
  491.             $pedidoReparacionRepository->add($pedidoReparaciontrue);
  492.             return $this->redirectToRoute('app_mantenimiento_pedido_reparacion_index', [], Response::HTTP_SEE_OTHER);
  493.         }
  494.         return $this->renderForm('mantenimiento/pedido_reparacion/edit.html.twig', [
  495.             'pedido_reparacion' => $pedidoReparacion,
  496.             'form' => $form,
  497.             'dpto' => in_array($this->getUser()->getId(), [1,11]),
  498.         ]);
  499.     }
  500.     /** 
  501.      * @Route("/{id}/delete/pedido", name="app_mantenimiento_pedido_reparacion_delete", methods={"POST", "DELETE"})
  502.      */
  503.     public function delete(Request $requestPedidoReparacion $pedidoReparacionEntityManagerInterface $entityManager): Response
  504.     {
  505.         
  506.         try
  507.         {
  508.             $realizada 0;
  509.             foreach ($pedidoReparacion->getPedidosDiagramados() as $pedidoDiagramado
  510.             {
  511.                 if ($pedidoDiagramado->isRealizada())
  512.                 {
  513.                     $realizada++;
  514.                 }
  515.             }
  516.             if ($realizada 0)
  517.             {
  518.                 return $this->json(['ok' => false'message' => 'No se puede eliminar el pedido de reparación. El mismo ya ha sido marcado como realizado.']);
  519.             }
  520.             $pedidoReparacion->setEliminada(true);
  521.             $entityManager->flush();
  522.             //$pedidoReparacionRepository->remove($pedidoReparacion, true);
  523.             
  524.             return $this->json(['ok' => true]);
  525.         }
  526.         catch (\Exception $e)
  527.         {
  528.             return $this->json(['ok' => false'message' => 'No se ha podido eliminar el pedido de reparación. Posiblemente esté asociado a un organigrama.']);
  529.         }
  530.     }
  531. }