src/Controller/SolicitudController.php line 98

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Equipo;
  4. use App\Entity\Impresora;
  5. use App\Entity\Otro;
  6. use App\Entity\Periodo;
  7. use App\Entity\Red;
  8. use App\Entity\Ubicacion;
  9. use App\Entity\Solicitud;
  10. use App\Entity\Unidad;
  11. use App\Entity\Usuario;
  12. use App\Form\SolicitudType;
  13. use App\Repository\SolicitudRepository;
  14. use App\Service\VistaTipoEquipo;
  15. use DateTime;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Doctrine\ORM\EntityRepository;
  18. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  19. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  20. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  21. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  22. use Symfony\Component\Form\Extension\Core\Type\DateType;
  23. use Symfony\Component\HttpFoundation\JsonResponse;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  28. #[Route('/solicitud')]
  29. class SolicitudController extends AbstractController
  30. {
  31.     public EntityManagerInterface $entityManager;
  32.     /**
  33.      * @param EntityManagerInterface $entityManager
  34.      */
  35.     public function __construct(EntityManagerInterface $entityManager)
  36.     {
  37.         $this->entityManager $entityManager;
  38.     }
  39.     #[Route('/'name'app_solicitud_index'methods: ['GET''POST'])]
  40.     public function index(SolicitudRepository $solicitudRepositoryRequest $request): Response
  41.     {
  42.         //Seccion filtro
  43.         date_default_timezone_set('America/Mexico_City');
  44.         setlocale(LC_ALL'es_MX');
  45.         /** @var Usuario $user */
  46.         $user $this->getUser();
  47.         //Seccion filtro
  48.         $perfil $request->getSession()->get('perfil');
  49.         $nivel $perfil[12]["nivel"];
  50.         if($user->getRol()->getIdRol() == 3){
  51.             $solicitudes $this->entityManager->getRepository(Solicitud::class)->registroTipoEquipoUsuario(06$user->getUnidad()->getIdUni());
  52.         }
  53.         return $this->render('solicitud/index.html.twig', [
  54.             'solicitudes' => $solicitudes
  55.         ]);
  56.     }
  57.     #[Route('/new'name'app_solicitud_new'methods: ['GET''POST'])]
  58.     public function new(Request $requestSolicitudRepository $solicitudRepository): Response
  59.     {
  60.         $solicitud = new Solicitud();
  61.         $form $this->createForm(SolicitudType::class, $solicitud);
  62.         $form->remove('fregistro');
  63.         $form->remove('fatencion');
  64.         $form->remove('ffin');
  65.         $form->handleRequest($request);
  66.         if ($form->isSubmitted() && $form->isValid()) {
  67.             $solicitudRepository->add($solicitudtrue);
  68.             return $this->redirectToRoute('app_solicitud_index', [], Response::HTTP_SEE_OTHER);
  69.         }
  70.         return $this->renderForm('solicitud/new.html.twig', [
  71.             'solicitud' => $solicitud,
  72.             'form' => $form,
  73.         ]);
  74.     }
  75.     #[Route('/{idSol}'name'app_solicitud_show'methods: ['GET'])]
  76.     public function show(Request $requestSolicitud $solicitudSolicitudRepository $solicitudRepositoryEntityManagerInterface $entityManager): Response
  77.     {
  78.         return $this->render('solicitud/show.html.twig', [
  79.             'solicitud' => $solicitud,
  80.         ]);
  81.     }
  82.     #[Route('/{idSol}/edit'name'app_solicitud_edit'methods: ['GET''POST'])]
  83.     public function edit(Request $requestSolicitud $solicitudSolicitudRepository $solicitudRepositoryEntityManagerInterface $entityManager): Response
  84.     {
  85.         /** @var Usuario $user */
  86.         $user $this->getUser();
  87.         date_default_timezone_set('America/Mexico_City');
  88.         setlocale(LC_ALL'es_MX');
  89.         $factual = new DateTime();
  90.         $form $this->createForm(SolicitudType::class, $solicitud);
  91.         $form->remove('fregistro');
  92.         $form->remove('fatencion');
  93.         $form->remove('ffin');
  94.         $form->remove('gestor');
  95.         $form->remove('usuario');
  96.         $form->remove('ubicacion');
  97.         $form->remove('periodo');
  98.         $form->remove('idEquipo');
  99.         if ($solicitud ->getTipoMantenimiento() == 'MP'){
  100.         $form->remove('tipoMantenimiento');
  101.         }
  102.         $form->handleRequest($request);
  103.         if ($solicitud->getEstatus()==1){
  104.             $estatus="Pendiente";
  105.         }else if ($solicitud->getEstatus()==2){
  106.             $estatus="En proceso";
  107.         }else if ($solicitud->getEstatus()==3){
  108.             $estatus="Atendido";
  109.         }else if ($solicitud->getEstatus()==4){
  110.             $estatus="Evaluado";
  111.         }
  112.         if($form->isSubmitted() && !$form->isValid()){
  113.             $view $this->renderView('solicitud/modal.html.twig', [
  114.                 'solicitud' => $solicitud,
  115.                 'form' => $form->createView()
  116.             ]);
  117.             $response = new JsonResponse(['form' => $view]);
  118.             $response->setStatusCode(Response::HTTP_UNPROCESSABLE_ENTITY);
  119.             return $response;
  120.         }
  121.         if ($form->isSubmitted() && $form->isValid()) {
  122.             if ($solicitud->getEstatus() == 3){
  123.                 $solicitud->setGestor($user);
  124.                 $solicitud->setFfin($factual);
  125.             }
  126.             $entityManager->persist($solicitud);
  127.             $entityManager->flush();
  128.             //dump($solicitud); die();
  129.             //$solicitudRepository->add($solicitud, true);
  130.             switch ($solicitud->getTipoEquipo()){
  131.                 case 'Equipo':
  132.                     $info $entityManager->getRepository(Equipo::class)->findOneBy([
  133.                         'idEqu' => $solicitud->getIdEquipo()
  134.                     ]);
  135.                     break;
  136.                 case 'Impresora':
  137.                     $info $entityManager->getRepository(Impresora::class)->findOneBy([
  138.                         'idImp' => $solicitud->getIdEquipo()
  139.                     ]);
  140.                     break;
  141.                 case 'Red':
  142.                     $info $entityManager->getRepository(Red::class)->findOneBy([
  143.                         'idRed' => $solicitud->getIdEquipo()
  144.                     ]);
  145.                     break;
  146.                 case 'Otro':
  147.                     $info $entityManager->getRepository(Otro::class)->findOneBy([
  148.                         'idOtro' => $solicitud->getIdEquipo()
  149.                     ]);
  150.                     break;
  151.             }
  152.             $data = array(
  153.                 'idSol' => $solicitud->getIdSol(),
  154.                 'tipoEquipo' => $solicitud->getTipoEquipo(),
  155.                 'idEquipo' => $info->getMarbete(),
  156.                 'marca' => $info->getMarca(),
  157.                 'modelo' => $info->getModelo(),
  158.                 'tipoMantenimiento' => $solicitud->getTipoMantenimiento(),
  159.                 'falla' => $solicitud->getFalla(),
  160.                 'estatus' => $estatus,
  161.                 'mensaje' => 'Se actualizo correctamente',
  162.             );
  163.             return new JsonResponse($data);
  164.             //return $this->redirectToRoute('app_solicitud_index', [], Response::HTTP_SEE_OTHER);
  165.         }
  166.         return $this->renderForm('solicitud/modal.html.twig', [
  167.             'solicitud' => $solicitud,
  168.             'form' => $form,
  169.         ]);
  170.     }
  171.     #[Route('/{idSol}'name'app_solicitud_delete'methods: ['POST'])]
  172.     public function delete(Request $requestSolicitud $solicitudSolicitudRepository $solicitudRepository): Response
  173.     {
  174.         if ($this->isCsrfTokenValid('delete'.$solicitud->getIdSol(), $request->request->get('_token'))) {
  175.             $solicitudRepository->remove($solicitudtrue);
  176.         }
  177.         return $this->redirectToRoute('app_solicitud_index', [], Response::HTTP_SEE_OTHER);
  178.     }
  179.     #[Route('/vista/contador'name'app_solicitud_vista')]
  180.     public function vistaContador() :JsonResponse
  181.     {
  182.         /** @var Usuario $user */
  183.         $user $this->getUser();
  184.         if($user->getRol()->getIdRol() == 3) {
  185.             $cTodoEquipo $this->entityManager->getRepository(Solicitud::class)->conteoEstatusTipoEquipoUsuario(05$user->getUnidad()->getIdUni());
  186.         }
  187.         return new JsonResponse(['data' => $cTodoEquipo], Response::HTTP_OK);
  188.      }
  189.     #[Route('/vista/solicitud/{id}'name'app_solicitud_vista_detalle')]
  190.      public function vistaSolicitud(Request $requestSolicitud $solicitud,EntityManagerInterface $entityManager) :Response
  191.      {
  192.          $a $this->entityManager->getRepository(Solicitud::class)->findOneBy(['idSol' => $request->get('id')]);
  193.          if ($a->getEstatus() == 1) {
  194.              $a->setEstatus(2);
  195.              $this->entityManager->persist($a);
  196.              $this->entityManager->flush();
  197.          }
  198.          $solicitud $this->entityManager->getRepository(Solicitud::class)->detalleTipoEquipoSolicitud($request->get('id'));
  199.          return $this->render('prog_solicitud/informacion_solicitud.html.twig', ['info' => $solicitud]);
  200.      }
  201.     #[Route('/registro/vista'name'app_solicitud_actualiza_vista'methods: ['GET''POST'])]
  202.     public function infoSolicitud(EntityManagerInterface $entityManager): Response
  203.     {
  204.         $solicitudes $entityManager->getRepository(Solicitud::class)->findAll();
  205.         $data = [];
  206.         $i 0;
  207.         foreach ($solicitudes as $s) {
  208.             $data[$i]['ver_equipo'] = $this->generateUrl('prog_correctivo_vista_tipo', ['tipo' => $s['tipo_equipo'], 'id' => $s['id_equipo']], UrlGeneratorInterface::ABSOLUTE_URL);
  209.             $data[$i]['ver_solicitud'] = $this->generateUrl('consulta_solicitud_vista_solicitud', ['id' => $s['id_sol']], UrlGeneratorInterface::ABSOLUTE_URL);
  210.             $data[$i]['editar'] = $this->generateUrl('app_solicitud_edit', ['idSol' => $s['id_sol']], UrlGeneratorInterface::ABSOLUTE_URL);
  211.             $data[$i]['id_sol'] = $s['id_sol'];
  212.             $data[$i]['tipo_equipo'] = $s['tipo_equipo'];
  213.             $data[$i]['marbete'] = $s['marbete'];
  214.             $data[$i]['marca'] = $s['marca'];
  215.             $data[$i]['modelo'] = $s['modelo'];
  216.             $data[$i]['tipo_mantenimiento'] = $s['tipo_mantenimiento'];
  217.             $data[$i]['falla'] = $s['falla'];
  218.             $data[$i]['estatus'] = $s['estatus'];
  219.             $data[$i]['id_equipo'] = $s['id_equipo'];
  220.             $i++;
  221.         }
  222.         return new JsonResponse($data);
  223.     }
  224.      /**
  225.       * Vista detallada por tipo, equipo, impresora, red, otro
  226.       * @Route("/vista/{tipo}/{id}", name="app_solicitud_vista_tipo", methods={"GET", "POST"})
  227.       * @param Request $request
  228.       * @return Response
  229.       */
  230.     public function vistaTipo(Request $request) :Response
  231.     {
  232.         $service = new VistaTipoEquipo($this->entityManager);
  233.         $info $service->consultaInformacion($request->get('tipo'), $request->get('id'));
  234.         return $this->render('prog_solicitud/informacion_tipo.html.twig', ['tipo' => $request->get('tipo'),'info' => $info]);
  235.     }
  236.     /**
  237.      * Consulta de solicitudes programadas por equipo, de tipo equipo
  238.      * @Route("/programada/consulta/equipo/{id}", name="prog_correctivo_programada_tipoa", methods={"GET", "POST"})
  239.      * @param Equipo $equipo
  240.      * @return Response
  241.      */
  242.     public function consultaProgramadaTipoA(Equipo $equipo) :Response
  243.     {
  244.         $info = [
  245.             'tipoEquipo' => 'Equipo',
  246.             'tipoMantenimiento' => 'Correctivo',
  247.             'siglasMantenimiento' => 'MC'
  248.         ];
  249.         $programadas $this->entityManager->getRepository(Solicitud::class)->registroEquipoSolicitud($equipo->getIdEqu(), $info['tipoEquipo'], $info['siglasMantenimiento']);
  250.         return $this->renderForm('prog_solicitud/programado.html.twig', [
  251.             'info' => $info,
  252.             'solicitud' => $programadas
  253.         ]);
  254.     }
  255.     /**
  256.      * Consulta de solicitudes programadas por equipo, de tipo impresora
  257.      * @Route("/programada/consulta/impresora/{id}", name="prog_correctivo_programada_tipob", methods={"GET", "POST"})
  258.      * @param impresora $impresora
  259.      * @return Response
  260.      */
  261.     public function consultaProgramadaTipoB(Impresora $impresora) :Response
  262.     {
  263.         $info = [
  264.             'tipoEquipo' => 'Impresora',
  265.             'tipoMantenimiento' => 'Correctivo',
  266.             'siglasMantenimiento' => 'MC'
  267.         ];
  268.         $programadas $this->entityManager->getRepository(Solicitud::class)->registroEquipoSolicitud($impresora->getIdImp(), $info['tipoEquipo'], $info['siglasMantenimiento']);
  269.         return $this->renderForm('prog_solicitud/programado.html.twig', [
  270.             'info' => $info,
  271.             'solicitud' => $programadas
  272.         ]);
  273.     }
  274.     /**
  275.      * Consulta de solicitudes programadas por equipo, de tipo red
  276.      * @Route("/programada/consulta/red/{id}", name="prog_correctivo_programada_tipoc", methods={"GET", "POST"})
  277.      * @param Red $red
  278.      * @return Response
  279.      */
  280.     public function consultaProgramadaTipoC(Red $red) :Response
  281.     {
  282.         $info = [
  283.             'tipoEquipo' => 'Red',
  284.             'tipoMantenimiento' => 'Correctivo',
  285.             'siglasMantenimiento' => 'MC'
  286.         ];
  287.         $programadas $this->entityManager->getRepository(Solicitud::class)->registroEquipoSolicitud($red->getIdRed(), $info['tipoEquipo'], $info['siglasMantenimiento']);
  288.         return $this->renderForm('prog_solicitud/programado.html.twig', [
  289.             'info' => $info,
  290.             'solicitud' => $programadas
  291.         ]);
  292.     }
  293.     /**
  294.      * Consulta de solicitudes programadas por equipo, de tipo otro
  295.      * @Route("/programada/consulta/otro/{id}", name="prog_correctivo_programada_tipod", methods={"GET", "POST"})
  296.      * @param Otro $otro
  297.      * @return Response
  298.      */
  299.     public function consultaProgramadaTipoD(Otro $otro) :Response
  300.     {
  301.         $info = [
  302.             'tipoEquipo' => 'Otro',
  303.             'tipoMantenimiento' => 'Correctivo',
  304.             'siglasMantenimiento' => 'MC'
  305.         ];
  306.         $programadas $this->entityManager->getRepository(Solicitud::class)->registroEquipoSolicitud($otro->getIdOtro(), $info['tipoEquipo'], $info['siglasMantenimiento']);
  307.         return $this->renderForm('prog_solicitud/programado.html.twig', [
  308.             'info' => $info,
  309.             'solicitud' => $programadas
  310.         ]);
  311.     }
  312.     /**
  313.      * Programar solicitud por equipo, solo tipo equipo
  314.      * @Route("/solicitud/equipo/{id}", name="app_solicitud_tipoa", methods={"GET", "POST"})
  315.      * @param Equipo $equipo
  316.      * @param Request $request
  317.      * @return Response
  318.      */
  319.     public function programarSolicitudTipoA(Request $requestEquipo $equipo) :Response
  320.     {
  321.         $periodo $this->entityManager->getRepository(Periodo::class)->findOneBy(['activo' => 1'actual' => 1]);
  322.         $info = [
  323.             'tipoEquipo' => 'Equipo',
  324.             'tipoMantenimiento' => 'Correctivo',
  325.             'marbete' => $equipo->getMarbete()
  326.         ];
  327.         $form $this->createForm(SolicitudType::class);
  328.         $form->remove('tipoEquipo');
  329.         $form->remove('idEquipo');
  330.         $form->remove('periodo');
  331.         $form->remove('tipoMantenimiento');
  332.         $form->remove('srealizado');
  333.         $form->remove('fregistro');
  334.         $form->remove('fatencion');
  335.         $form->remove('ffin');
  336.         $form->remove('evaluacion');
  337.         $form->remove('refacciones');
  338.         $form->remove('estatus');
  339.         $form->remove('usuario');
  340.         $form->remove('ubicacion');
  341.         $form->remove('gestor');
  342.         $form->handleRequest($request);
  343.         if ($form->isSubmitted() && $form->isValid()) {
  344.             if($form->get('falla')->getData() == "" || $form->get('falla') == null){
  345.                 return new JsonResponse(['mensaje' => 'El campo no debe estar vacío'], Response::HTTP_BAD_REQUEST);
  346.             }
  347.             $data = [
  348.                 "tipo" => $info['tipoEquipo'],
  349.                 "id" => $equipo->getIdEqu(),
  350.                 "marbete" => $equipo->getMarbete(),
  351.                 "iduni" => $equipo->getUnidad()->getIdUni(),
  352.                 "consuni" => $equipo->getUnidad()->getConsecutivo(),
  353.                 "unidad" => $equipo->getUnidad(),
  354.                 "usuario" => $equipo->getUsuario(),
  355.                 "ubicacion" => $equipo->getUbicacion(),
  356.                 "accion" => $form->get('falla')->getData(),
  357.                 "periodo" => $periodo
  358.             ];
  359.             $info $this->solicitudProgramacion($data);
  360.             return new JsonResponse($info);
  361.         }
  362.         if ($form->isSubmitted() && !$form->isValid()) {
  363.             $view $this->renderView('prog_solicitud/programar.html.twig', [
  364.                 'form' => $form->createView(),
  365.                 'info' => $info
  366.             ]);
  367.             $response = new JsonResponse(['form' => $view]);
  368.             $response->setStatusCode(Response::HTTP_BAD_REQUEST);
  369.             return $response;
  370.         }
  371.         return $this->renderForm('prog_solicitud/programar.html.twig', [
  372.             'form' => $form,
  373.             'info' => $info
  374.         ]);
  375.     }
  376.     /**
  377.      * Programar solicitud por equipo, solo tipo impresora
  378.      * @Route("/solicitud/impresora/{id}", name="app_solicitud_tipob", methods={"GET", "POST"})
  379.      * @param Impresora $impresora
  380.      * @param Request $request
  381.      * @return Response
  382.      */
  383.     public function programarSolicitudTipoB(Request $requestImpresora $impresora) :Response
  384.     {
  385.         $periodo $this->entityManager->getRepository(Periodo::class)->findOneBy(['activo' => 1'actual' => 1]);
  386.         $info = [
  387.             'tipoEquipo' => 'Impresora',
  388.             'tipoMantenimiento' => 'Correctivo',
  389.             'marbete' => $impresora->getMarbete()
  390.         ];
  391.         $form $this->createForm(SolicitudType::class);
  392.         $form->remove('tipoEquipo');
  393.         $form->remove('idEquipo');
  394.         $form->remove('periodo');
  395.         $form->remove('tipoMantenimiento');
  396.         $form->remove('srealizado');
  397.         $form->remove('fregistro');
  398.         $form->remove('fatencion');
  399.         $form->remove('ffin');
  400.         $form->remove('evaluacion');
  401.         $form->remove('refacciones');
  402.         $form->remove('estatus');
  403.         $form->remove('usuario');
  404.         $form->remove('ubicacion');
  405.         $form->remove('gestor');
  406.         $form->handleRequest($request);
  407.         if ($form->isSubmitted() && $form->isValid()) {
  408.             if($form->get('falla')->getData() == "" || $form->get('falla') == null){
  409.                 return new JsonResponse(['mensaje' => 'El campo no debe estar vacío'], Response::HTTP_BAD_REQUEST);
  410.             }
  411.             $data = [
  412.                 "tipo" => $info['tipoEquipo'],
  413.                 "id" => $impresora->getIdImp(),
  414.                 "marbete" => $impresora->getMarbete(),
  415.                 "iduni" => $impresora->getUnidad()->getIdUni(),
  416.                 "consuni" => $impresora->getUnidad()->getConsecutivo(),
  417.                 "unidad" => $impresora->getUnidad(),
  418.                 "usuario" => $impresora->getUsuario(),
  419.                 "ubicacion" => $impresora->getUbicacion(),
  420.                 "accion" => $form->get('falla')->getData(),
  421.                 "periodo" => $periodo
  422.             ];
  423.             $info $this->solicitudProgramacion($data);
  424.             return new JsonResponse($info);
  425.         }
  426.         if ($form->isSubmitted() && !$form->isValid()) {
  427.             $view $this->renderView('prog_solicitud/programar.html.twig', [
  428.                 'form' => $form->createView(),
  429.                 'info' => $info
  430.             ]);
  431.             $response = new JsonResponse(['form' => $view]);
  432.             $response->setStatusCode(Response::HTTP_BAD_REQUEST);
  433.             return $response;
  434.         }
  435.         return $this->renderForm('prog_solicitud/programar.html.twig', [
  436.             'form' => $form,
  437.             'info' => $info
  438.         ]);
  439.     }
  440.     /**
  441.      * Programar solicitud por equipo, solo tipo red
  442.      * @Route("/solicitud/red/{id}", name="app_solicitud_tipoc", methods={"GET", "POST"})
  443.      * @param Red $red
  444.      * @param Request $request
  445.      * @return Response
  446.      */
  447.     public function programarSolicitudTipoC(Request $requestRed $red) :Response
  448.     {
  449.         $periodo $this->entityManager->getRepository(Periodo::class)->findOneBy(['activo' => 1'actual' => 1]);
  450.         $info = [
  451.             'tipoEquipo' => 'Red',
  452.             'tipoMantenimiento' => 'Correctivo',
  453.             'marbete' => $red->getMarbete()
  454.         ];
  455.         $form $this->createForm(SolicitudType::class);
  456.         $form->remove('tipoEquipo');
  457.         $form->remove('idEquipo');
  458.         $form->remove('periodo');
  459.         $form->remove('tipoMantenimiento');
  460.         $form->remove('srealizado');
  461.         $form->remove('fregistro');
  462.         $form->remove('fatencion');
  463.         $form->remove('ffin');
  464.         $form->remove('evaluacion');
  465.         $form->remove('refacciones');
  466.         $form->remove('estatus');
  467.         $form->remove('usuario');
  468.         $form->remove('ubicacion');
  469.         $form->remove('gestor');
  470.         $form->handleRequest($request);
  471.         if ($form->isSubmitted() && $form->isValid()) {
  472.             if($form->get('falla')->getData() == "" || $form->get('falla') == null){
  473.                 return new JsonResponse(['mensaje' => 'El campo no debe estar vacío'], Response::HTTP_BAD_REQUEST);
  474.             }
  475.             $data = [
  476.                 "tipo" => $info['tipoEquipo'],
  477.                 "id" => $red->getIdRed(),
  478.                 "marbete" => $red->getMarbete(),
  479.                 "iduni" => $red->getUnidad()->getIdUni(),
  480.                 "consuni" => $red->getUnidad()->getConsecutivo(),
  481.                 "unidad" => $red->getUnidad(),
  482.                 "usuario" => $red->getUsuario(),
  483.                 "ubicacion" => $red->getUbicacion(),
  484.                 "accion" => $form->get('falla')->getData(),
  485.                 "fatencion" => null,
  486.                 "periodo" => $periodo
  487.             ];
  488.             $info $this->solicitudProgramacion($data);
  489.             return new JsonResponse($info);
  490.         }
  491.         if ($form->isSubmitted() && !$form->isValid()) {
  492.             $view $this->renderView('prog_solicitud/programar.html.twig', [
  493.                 'form' => $form->createView(),
  494.                 'info' => $info
  495.             ]);
  496.             $response = new JsonResponse(['form' => $view]);
  497.             $response->setStatusCode(Response::HTTP_BAD_REQUEST);
  498.             return $response;
  499.         }
  500.         return $this->renderForm('prog_solicitud/programar.html.twig', [
  501.             'form' => $form,
  502.             'info' => $info
  503.         ]);
  504.     }
  505.     /**
  506.      * Programar solicitud por equipo, solo tipo otro
  507.      * @Route("/solicitud/otro/{id}", name="app_solicitud_tipod", methods={"GET", "POST"})
  508.      * @param Otro $otro
  509.      * @param Request $request
  510.      * @return Response
  511.      */
  512.     public function programarSolicitudTipoD(Request $requestOtro $otro) :Response
  513.     {
  514.         $periodo $this->entityManager->getRepository(Periodo::class)->findOneBy(['activo' => 1'actual' => 1]);
  515.         $info = [
  516.             'tipoEquipo' => 'Otro',
  517.             'tipoMantenimiento' => 'Correctivo',
  518.             'marbete' => $otro->getMarbete()
  519.         ];
  520.         $form $this->createForm(SolicitudType::class);
  521.         $form->remove('tipoEquipo');
  522.         $form->remove('idEquipo');
  523.         $form->remove('periodo');
  524.         $form->remove('tipoMantenimiento');
  525.         $form->remove('srealizado');
  526.         $form->remove('fregistro');
  527.         $form->remove('fatencion');
  528.         $form->remove('ffin');
  529.         $form->remove('evaluacion');
  530.         $form->remove('refacciones');
  531.         $form->remove('estatus');
  532.         $form->remove('usuario');
  533.         $form->remove('ubicacion');
  534.         $form->remove('gestor');
  535.         $form->handleRequest($request);
  536.         if ($form->isSubmitted() && $form->isValid()) {
  537.             if($form->get('falla')->getData() == "" || $form->get('falla') == null){
  538.                 return new JsonResponse(['mensaje' => 'El campo no debe estar vacío'], Response::HTTP_BAD_REQUEST);
  539.             }
  540.             $data = [
  541.                 "tipo" => $info['tipoEquipo'],
  542.                 "id" => $otro->getIdOtro(),
  543.                 "marbete" => $otro->getMarbete(),
  544.                 "iduni" => $otro->getUnidad()->getIdUni(),
  545.                 "consuni" => $otro->getUnidad()->getConsecutivo(),
  546.                 "unidad" => $otro->getUnidad(),
  547.                 "usuario" => $otro->getUsuario(),
  548.                 "ubicacion" => $otro->getUbicacion(),
  549.                 "accion" => $form->get('falla')->getData(),
  550.                 "periodo" => $periodo
  551.             ];
  552.             $info $this->solicitudProgramacion($data);
  553.             return new JsonResponse($info);
  554.         }
  555.         if ($form->isSubmitted() && !$form->isValid()) {
  556.             $view $this->renderView('prog_solicitud/programar.html.twig', [
  557.                 'form' => $form->createView(),
  558.                 'info' => $info
  559.             ]);
  560.             $response = new JsonResponse(['form' => $view]);
  561.             $response->setStatusCode(Response::HTTP_BAD_REQUEST);
  562.             return $response;
  563.         }
  564.         return $this->renderForm('prog_solicitud/programar.html.twig', [
  565.             'form' => $form,
  566.             'info' => $info
  567.         ]);
  568.     }
  569.     /**
  570.      * Función para crear objeto tipo equipo especificado e insertar en la base de datos
  571.      * @param array $data Array con la información específica a complementar
  572.      * @return array Para creación de botón en la vista
  573.      */
  574.     private function solicitudProgramacion($data)
  575.     {
  576.         date_default_timezone_set("America/Mexico_City");
  577.         $factual = new DateTime();
  578.         # Identificador de solicitud
  579.         $partA date("y");
  580.         $partB substr($data['iduni'], 33);
  581.         $partC str_pad($data['consuni'], 4,"0"STR_PAD_LEFT);
  582.         $idSolicitud $partA.$partB.$partC;
  583.         $save = new Solicitud();
  584.         $save->setIdSol($idSolicitud);
  585.         $save->setIdEquipo($data['id']);
  586.         $save->setTipoEquipo($data['tipo']);
  587.         $save->setTipoMantenimiento("MC");
  588.         $save->setUnidad($data['unidad']);
  589.         $save->setUsuario($data['usuario']);
  590.         $save->setUbicacion($data['ubicacion']);
  591.         $save->setPeriodo($data['periodo']);
  592.         $save->setFalla($data['accion']);
  593.         $save->setFregistro($factual);
  594.         $save->setFatencion($factual);
  595.         $save->setEstatus(1);
  596.         $this->entityManager->persist($save);
  597.         $this->entityManager->flush();
  598.         $unidad $data['unidad'];
  599.         $unidad->setConsecutivo($unidad->getConsecutivo() + 1);
  600.         $this->entityManager->persist($unidad);
  601.         $this->entityManager->flush();
  602.         $info = [
  603.             'mensaje' => 'Se ha generado la solicitud de mantenimiento, con el identificador ' $save->getIdSol(),
  604.             'ver_solicitud' => $this->generateUrl('prog_correctivo_vista_solicitud', ['id' => $save->getIdSol()], UrlGeneratorInterface::ABSOLUTE_URL),
  605.             'solicitud' => $save->getIdSol(),
  606.             'tipo_equipo' => $save->getTipoEquipo(),
  607.             'equipo' => $save->getIdEquipo(),
  608.             'marbete' => $data['marbete'],
  609.             'marca' => $data['marca'],
  610.             'modelo' => $data['modelo'],
  611.             'falla' => $save->getFalla(),
  612.             'tipo_mantenimiento' => $save->getTipoMantenimiento(),
  613.             'fregistro' => $save->getFregistro()->format("d M Y, H:m"),
  614.             'estatus' => $save->getEstatus()
  615.         ];
  616.         return $info;
  617.     }
  618. }