src/Controller/RFFUIDController.php line 572

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\RFFUID;
  4. use App\Entity\RFInventarioDocumentalComercial;
  5. use App\Entity\RFInventarioDocumentalComex;
  6. use App\Entity\RFInventarioDocumentalFinanzas;
  7. use App\Entity\RFInventarioDocumentalGesHum;
  8. use App\Entity\RFInventarioDocumentalSST;
  9. use App\Entity\RFSolicitudDocumento;
  10. use App\Form\RFFUIDType;
  11. use App\Repository\RFFUIDRepository;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  14. use Symfony\Component\HttpFoundation\JsonResponse;
  15. use Symfony\Component\HttpFoundation\Request;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\Routing\Annotation\Route;
  18. use Symfony\Component\Form\Extension\Core\Type\FileType;
  19. use Symfony\Component\Validator\Constraints\File;
  20. #[Route('/rf/fuid')]
  21. class RFFUIDController extends AbstractController
  22. {
  23.     private $responseHandler;
  24.     private $documentHandler;
  25.     private $mailerCore;
  26.     private $code 0;
  27.     private $msj "";
  28.     private $url "";
  29.     private $html "";
  30.     public function __construct(\App\Services\ResponseHandler $responseHandler\App\Services\DocumentHandler $documentHandler\App\Services\MailerCore $mailerCore)
  31.     {
  32.         $this->responseHandler $responseHandler;
  33.         $this->mailerCore $mailerCore;
  34.         $this->documentHandler $documentHandler;
  35.     }
  36.     #[Route('/'name'rf_fuid'methods: ['GET'])]
  37.     public function index(RFFUIDRepository $RFFUIDRepository): Response
  38.     {
  39.         $idProceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso()->getId();
  40.         # dump($idProceso);
  41.         $entities $RFFUIDRepository->getAll(null, [], $idProceso);
  42.         return $this->render('rf_fuid/index.html.twig', [
  43.             'entities' => $entities
  44.         ]);
  45.     }
  46.     #[Route('/new'name'rf_fuid_new'methods: ['GET''POST'])]
  47.     public function new(Request $requestEntityManagerInterface $entityManager): Response
  48.     {
  49.         if ($this->getUser()->getPersona()->getSede() == null || $this->getUser()->getPersona()->getPerfilCargo() == null) {
  50.             $this->code 'warning';
  51.             $this->msj "Imposible continuar, aun no cuenta con la inforcion de sede y perfil cargo.";
  52.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  53.         }
  54.         $RFFUID = new RFFUID();
  55.         $form $this->createForm(RFFUIDType::class, $RFFUID, [
  56.             'idUsuarioElabora' => $this->getUser()->getPersona()->getId()
  57.             ,
  58.             'idSede' => $this->getUser()->getPersona()->getSede()->getId()
  59.             ,
  60.             'idProceso' => $this->getUser()->getPersona()->getPerfilCargo()->getParProceso()->getId()
  61.             ,
  62.             'method' => 'POST',
  63.             'action' => $this->generateUrl($request->attributes->get('_route'))
  64.         ]);
  65.         $form->handleRequest($request);
  66.         if ($form->isSubmitted() && $form->isValid()) {
  67.             $RFFUID->setFechaEntrada(new \DateTime('now'));
  68.             $RFFUID->setObjeto("Transferencia Primaria");
  69.             $RFFUID->setUsuarioElabora($this->getUser()->getPersona());
  70.             $RFFUID->setSede($this->getUser()->getPersona()->getSede());
  71.             $RFFUID->setProceso($this->getUser()->getPersona()->getPerfilCargo()->getParProceso());
  72.             $RFFUID->setCreateAt(new \DateTime('now'));
  73.             $RFFUID->setCreateUser($this->getUser()->getUsername());
  74.             $RFFUID->setUpdateAt(new \DateTime('now'));
  75.             $RFFUID->setUpdateUser($this->getUser()->getUsername());
  76.             $entityManager->persist($RFFUID);
  77.             $entityManager->flush();
  78.             return $this->redirectToRoute('rf_fuid_edit', ['id' => $RFFUID->getId()]);
  79.             //            $this->code = 'success';
  80. //            $this->msj = "Registro almacenado con exito.";
  81. //            return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
  82.         }
  83.         return $this->renderForm('rf_fuid/new.html.twig', [
  84.             'fuid' => $RFFUID,
  85.             'form' => $form,
  86.         ]);
  87.     }
  88.     #[Route('/{id}/edit'name'rf_fuid_edit'methods: ['GET''POST'])]
  89.     public function edit(Request $requestRFFUID $RFFUIDEntityManagerInterface $entityManager): Response
  90.     {
  91.         if ($RFFUID->getEstado() != null) {
  92.             if ($RFFUID->getEstado()->getId() != 30) {
  93.                 $this->code 'info';
  94.                 $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  95.                 return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  96.             }
  97.         }
  98.         $form $this->createForm(RFFUIDType::class, $RFFUID, [
  99.             'idUsuarioElabora' => $this->getUser()->getPersona()->getId()
  100.             ,
  101.             'idSede' => $this->getUser()->getPersona()->getSede()->getId()
  102.             ,
  103.             'idProceso' => $this->getUser()->getPersona()->getPerfilCargo()->getParProceso()->getId()
  104.             ,
  105.             'method' => 'POST',
  106.             'action' => $this->generateUrl($request->attributes->get('_route'), ['id' => $RFFUID->getId()])
  107.         ]);
  108.         $form->handleRequest($request);
  109.         if ($form->isSubmitted() && $form->isValid()) {
  110.             $RFFUID->setUpdateAt(new \DateTime('now'));
  111.             $RFFUID->setUpdateUser($this->getUser()->getUsername());
  112.             $this->code 'success';
  113.             $this->msj "Registro almacenado con exito.";
  114.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  115.         }
  116.         $res $this->getEntitiesFUID($entityManager$RFFUIDtrue);
  117.         return $this->renderForm('rf_fuid/edit.html.twig', [
  118.             'keys' => $res['encabezado'],
  119.             'fuid' => $RFFUID,
  120.             'form' => $form,
  121.             'entities' => $res['entities']
  122.         ]);
  123.     }
  124.     #[Route('/{id}/registrar_inventario'name'rf_fuid_registrar_inventario'methods: ['GET''POST'])]
  125.     public function registrarInventario(Request $requestRFFUID $RFFUIDEntityManagerInterface $entityManager): Response
  126.     {
  127.         if ($RFFUID->getEstado() != null) {
  128.             if ($RFFUID->getEstado()->getId() != 30) {
  129.                 $this->code 'info';
  130.                 $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  131.                 return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  132.             }
  133.         }
  134.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  135.         $df $proceso->getFuenteDatosRFFUID();
  136.         $formObj null;
  137.         $obj null;
  138.         $formName "";
  139.         $tituloFuid "";
  140.         // Si el proceso es Recurso Físico, se usa el formulario Comex por defecto
  141.         // ya que este proceso gestiona documentación de múltiples Ã¡reas.
  142.         if (str_contains(strtolower($proceso->getNombre()), 'recurso')) {
  143.             $df 'App\Entity\RFInventarioDocumentalComex';
  144.         }
  145.         // Si el proceso no tiene configurado un tipo de documento FUID,
  146.         // se retorna un mensaje amigable en lugar de generar un error 500.
  147.         if (!$df) {
  148.             $this->code 'warning';
  149.             $this->msj "Su proceso no tiene un FUID configurado. Contacte al administrador del sistema.";
  150.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  151.         }
  152.         switch ($df) {
  153.             case 'App\Entity\RFInventarioDocumentalComercial':
  154.                 $obj = new \App\Entity\RFInventarioDocumentalComercial();
  155.                 $formObj \App\Form\RFInventarioDocumentalComercialType::class;
  156.                 $formName "formComercial";
  157.                 $tituloFuid "Registar Documento Comercial";
  158.                 break;
  159.             case 'App\Entity\RFInventarioDocumentalComex':
  160.                 $obj = new \App\Entity\RFInventarioDocumentalComex();
  161.                 $formObj \App\Form\RFInventarioDocumentalComexType::class;
  162.                 $formName "formComex";
  163.                 $tituloFuid "Registar Documento Comex";
  164.                 break;
  165.             case 'App\Entity\RFInventarioDocumentalFinanzas':
  166.                 $obj = new \App\Entity\RFInventarioDocumentalFinanzas();
  167.                 $formObj \App\Form\RFInventarioDocumentalFinanzasType::class;
  168.                 $formName "formFinanzas";
  169.                 $tituloFuid "Registar Documento Finanzas";
  170.                 break;
  171.             case 'App\Entity\RFInventarioDocumentalGesHum':
  172.                 $obj = new \App\Entity\RFInventarioDocumentalGesHum();
  173.                 $formObj \App\Form\RFInventarioDocumentalGesHumType::class;
  174.                 $formName "formGesHum";
  175.                 $tituloFuid "Registar Documento Gestion Humana";
  176.                 break;
  177.             case 'App\Entity\RFInventarioDocumentalSST':
  178.                 $obj = new \App\Entity\RFInventarioDocumentalSST();
  179.                 $formObj \App\Form\RFInventarioDocumentalSSTType::class;
  180.                 $formName "formSST";
  181.                 $tituloFuid "Registar Documento SST";
  182.                 break;
  183.         }
  184.         $form $this->createForm($formObj$obj, ['method' => 'POST''action' => $this->generateUrl($request->attributes->get('_route'), ['id' => $RFFUID->getId()])]);
  185.         $form->handleRequest($request);
  186.         if ($form->isSubmitted() && $form->isValid()) {
  187.             $obj->setFUID($RFFUID);
  188.             $obj->setPersona($this->getUser()->getPersona());
  189.             $obj->setEstado($entityManager->getRepository(\App\Entity\ParEstado::class)->find(30));
  190.             $obj->setDisponibilidad($entityManager->getRepository(\App\Entity\ParEstado::class)->find(38));
  191.             $obj->setCreateAt(new \DateTime('now'));
  192.             $obj->setCreateUser($this->getUser()->getUsername());
  193.             $obj->setUpdateAt(new \DateTime('now'));
  194.             $obj->setUpdateUser($this->getUser()->getUsername());
  195.             dump($obj->getFolio());
  196.             $entityManager->persist($obj);
  197.             $entityManager->flush();
  198.             $this->mailerCore->FUID('notificacion', [$RFFUID]);
  199.             $this->code 'success';
  200.             $this->msj "Registro cargado exitosamente";
  201.             $this->url $this->generateUrl('rf_fuid_edit', [
  202.                 'id' => $RFFUID->getId()
  203.             ]);
  204.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  205.         }
  206.         return $this->render("rf_fuid/formArchivo.html.twig", [
  207.             'btnEditar' => true,
  208.             'tituloFUID' => $tituloFuid,
  209.             $formName => $form->createView(),
  210.             'fuid' => $RFFUID,
  211.         ]);
  212.     }
  213.     #[Route('/{id}/editar_inventario/{fuid}'name'rf_fuid_editar_inventario'methods: ['GET''POST'])]
  214.     public function editarInventario(EntityManagerInterface $entityManagerRequest $request$id$fuid): Response
  215.     {
  216.         $RFFUID $entityManager->getRepository(RFFUID::class)->find($fuid);
  217.         $inf $this->getEntitiFUID($entityManager$RFFUID$id);
  218.         $obj $inf['obj'];
  219.         $formObj $inf['formObj'];
  220.         $formName $inf['formName'];
  221.         $form $this->createForm(
  222.             $formObj,
  223.             $obj,
  224.             [
  225.                 'method' => 'POST',
  226.                 'action' => $this->generateUrl(
  227.                     'rf_fuid_editar_inventario',
  228.                     [
  229.                         'id' => $id,
  230.                         'fuid' => $RFFUID->getId()
  231.                     ]
  232.                 )
  233.             ]
  234.         );
  235.         $form->handleRequest($request);
  236.         if ($form->isSubmitted() && $form->isValid()) {
  237.             if ($RFFUID->getEstado() != null) {
  238.                 $this->code 'info';
  239.                 $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  240.                 return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  241.             }
  242.             $obj->setUpdateAt(new \DateTime('now'));
  243.             $obj->setUpdateUser($this->getUser()->getUsername());
  244.             $entityManager->persist($obj);
  245.             $entityManager->flush();
  246.             $this->code 'success';
  247.             $this->msj "Registro almacenado con exito.";
  248.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url]));
  249.         }
  250.         return $this->render("rf_fuid/formArchivo.html.twig", [
  251.             'btnEditar' => true,
  252.             'tituloFUID' => $inf['titulo'],
  253.             $formName => $form->createView(),
  254.             'fuid' => $RFFUID,
  255.         ]);
  256.     }
  257.     #[Route('/{id}/ver_inventario/{fuid}'name'rf_fuid_ver_inventario'methods: ['GET''POST'])]
  258.     public function verInventario(EntityManagerInterface $entityManagerRequest $request$id$fuid): Response
  259.     {
  260.         //Obtenemos le fuid que nos pasa el formulario
  261.         $RFFUID $entityManager->getRepository(RFFUID::class)->find($fuid);
  262.         $inf $this->getEntitiFUID($entityManager$RFFUID$id);
  263.         $obj $inf['obj'];
  264.         $formObj $inf['formObj'];
  265.         $formName $inf['formName'];
  266.         $form $this->createForm(
  267.             $formObj,
  268.             $obj,
  269.             [
  270.                 'method' => 'POST',
  271.                 'disabled_fields' => true,
  272.                 'action' => $this->generateUrl(
  273.                     'rf_fuid_editar_inventario',
  274.                     [
  275.                         'id' => $id,
  276.                         'fuid' => $RFFUID->getId()
  277.                     ]
  278.                 )
  279.             ]
  280.         );
  281.         $form->handleRequest($request);
  282.         if ($form->isSubmitted() && $form->isValid()) {
  283.             if ($RFFUID->getEstado() != null) {
  284.                 $this->code 'info';
  285.                 $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  286.                 return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  287.             }
  288.             $obj->setUpdateAt(new \DateTime('now'));
  289.             $obj->setUpdateUser($this->getUser()->getUsername());
  290.             $entityManager->persist($obj);
  291.             $entityManager->flush();
  292.             $this->code 'success';
  293.             $this->msj "Registro almacenado con exito.";
  294.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url]));
  295.         }
  296.         return $this->render("rf_fuid/formArchivo.html.twig", [
  297.             'btnEditar' => false,
  298.             'tituloFUID' => $inf['titulo'],
  299.             $formName => $form->createView(),
  300.             'fuid' => $RFFUID,
  301.         ]);
  302.     }
  303.     #[Route('/{id}/cargar_archivo_inventario/{fuid}/{idNotificacion}'name'rf_fuid_cargar_archivo_inventario'methods: ['GET''POST'])]
  304.     public function cargarArchivoInventario(EntityManagerInterface $entityManagerRequest $request$id$fuid$idNotificacion 0): Response
  305.     {
  306.         $RFFUID $entityManager->getRepository(RFFUID::class)->find($fuid);
  307.         $inf $this->getEntitiFUID($entityManager$RFFUID$id);
  308.         $obj $inf['obj'];
  309.         $formObj $inf['formObj'];
  310.         if ($obj->getArchivo() != null && $idNotificacion != 0) {
  311.             $this->code 'warning';
  312.             $this->msj "Imposible continuar, el registro ya cuenta con un documento.";
  313.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  314.             //$contrato->setEstado($this->entityManager->getRepository(\App\Entity\ParEstado::class)->find(1));
  315.         }
  316.         $form $this->createForm($formObj$obj, ['disabled_fields' => true'method' => 'POST''action' => $this->generateUrl($request->attributes->get('_route'), ['id' => $id'fuid' => $fuid])]);
  317.         $form->add('file'\Symfony\Component\Form\Extension\Core\Type\FileType::class, ['label' => 'Documentos''mapped' => false'required' => true'multiple' => true]);
  318.         $form->handleRequest($request);
  319.         if ($form->isSubmitted() && $form->isValid()) {
  320.             //            if (!$RFFUID || $RFFUID?->getEstado()?->getId() != 30 && $RFFUID?->getEstado()?->getId() != 40) {
  321. //                $this->code = 'info';
  322. //                $this->msj = "Imposible continuar, el registro no se encuentra en el estado esperado.";
  323. //                return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
  324. //            }
  325.             $files $form->get('file')->getData();
  326.             if (!$files || count($files) == 0) {
  327.                 $this->code 'warning';
  328.                 $this->msj "Imposible continuar, valide los documentos adjuntos.";
  329.                 return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  330.             }
  331.             foreach ($files as $file) {
  332.                 $rutaArchivo $this->documentHandler->cargarArchivo($file$inf['df'], ""$obj->getArchivo());
  333.                 if ($rutaArchivo['code'] != 'success') {
  334.                     $this->code 'warning';
  335.                     $this->msj "Imposible cargar el registro, {$rutaArchivo['msj']}";
  336.                     return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  337.                     //$contrato->setEstado($this->entityManager->getRepository(\App\Entity\ParEstado::class)->find(1));
  338.                 }
  339.                 $inventarioDocumentalArchivo = new \App\Entity\RFInventarioDocumentalArchivos();
  340.                 $inventarioDocumentalArchivo->setDF($inf['df']);
  341.                 $inventarioDocumentalArchivo->setIdEntidad($obj->getId());
  342.                 $inventarioDocumentalArchivo->setArchivo($rutaArchivo['msj']);
  343.                 $entityManager->persist($inventarioDocumentalArchivo);
  344.             }
  345.             $obj->setEstado($entityManager->getRepository(\App\Entity\ParEstado::class)->find(40));
  346.             $obj->setDisponibilidad($entityManager->getRepository(\App\Entity\ParEstado::class)->find(41));
  347.             $obj->setUpdateAt(new \DateTime('now'));
  348.             $obj->setUpdateUser($this->getUser()->getUsername());
  349.             $entityManager->persist($obj);
  350.             $entityManager->flush();
  351.             $this->code 'success';
  352.             $this->msj "Registro almacenado con exito.";
  353.             //adicion notificación edicion.
  354.             // $this->addFlash('success', "Registro almacenado con exito.");
  355.             if ($idNotificacion != 0) {
  356.                 $estadoInactivo $entityManager->getRepository(\App\Entity\ParEstado::class)->find(2);
  357.                 $estadoGestionado $entityManager->getRepository(\App\Entity\ParEstado::class)->find(63); //nuevo estado solicitado por ajuste
  358.                 foreach ($entityManager->getRepository(\App\Entity\RFSolicitudDocumento::class)->findBy(['idEntidad' => $obj->getId(), 'estado' => 1]) as $solpen) {
  359.                     //                    if ($solpen->getTipoSolicitud()->getId() == 1) {
  360. //                        $solpen->setEstado($estadoGestionado);
  361. //                    } else {
  362. //                        $solpen->setEstado($estadoInactivo);
  363. //                    }
  364.                     $solpen->setEstado($estadoGestionado); # Quedar siempre en estado GESTIONADO
  365.                     $solpen->setUsuarioAtiende($this->getUser()->getPersona());
  366.                     $solpen->setUpdateUser($this->getUser()->getUsername());
  367.                     $solpen->setUpdateAt(new \DateTime('now'));
  368.                     $entityManager->persist($solpen);
  369.                     $this->mailerCore->solicitudDocumento('gestionar', [$solpen]);
  370.                 }
  371.                 $entityManager->flush();
  372.                 return $this->redirectToRoute('rf_solicitud_documento');
  373.             }
  374.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  375.             //   return $this->redirectToRoute('rf_fuid_cargar_ubicar', ['id' => $RFFUID->getId()], Response::HTTP_SEE_OTHER);
  376.         }
  377.         $cantArchivos $entityManager->getRepository(\App\Entity\RFInventarioDocumentalArchivos::class)->findBy(['DF' => $inf['df'], 'idEntidad' => $obj->getId()]);
  378.         return $this->render("rf_fuid/formArchivo.html.twig", [
  379.             'tituloFUID' => $inf['titulo'],
  380.             $inf['formName'] => $form->createView(),
  381.             'fuid' => $RFFUID,
  382.             'dirAsset' => $inf['dirAsset'],
  383.             'obj' => $obj,
  384.             'cantArchivos' => $cantArchivos
  385.         ]);
  386.     }
  387.     #[Route('/{id}/notificar_archivo_fisico/{fuid}/{idNotificacion}'name'rf_fuid_notificar_archivo_fisico'methods: ['GET''POST'])]
  388.     public function notificarFisico(Request $requestEntityManagerInterface $entityManager$id$fuid$idNotificacion): Response
  389.     {
  390.         $RFFUID $entityManager->getRepository(RFFUID::class)->find($fuid);
  391.         $inf $this->getEntitiFUID($entityManager$RFFUID$id);
  392.         $obj $inf['obj'];
  393.         $formObj $inf['formObj'];
  394.         $solicitud $entityManager->getRepository(\App\Entity\RFSolicitudDocumento::class)->find($idNotificacion);
  395.         if ($solicitud->getEstado()->getId() != 1) {
  396.             $this->code 'info';
  397.             $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  398.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  399.         }
  400.         $estadoNotificado $entityManager->getRepository(\App\Entity\ParEstado::class)->find(43);
  401.         $solicitud->setFechaNotificacion(new \DateTime('now'));
  402.         $solicitud->setEstado($estadoNotificado);
  403.         $solicitud->setUsuarioAtiende($this->getUser()->getPersona());
  404.         $solicitud->setUpdateUser($this->getUser()->getUsername());
  405.         $solicitud->setUpdateAt(new \DateTime('now'));
  406.         $entityManager->persist($solicitud);
  407.         $entityManager->flush();
  408.         $this->code 'success';
  409.         $this->msj "Registro almacenado con exito.";
  410.         $this->mailerCore->solicitudDocumento('gestionar', [$solicitud]);
  411.         return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  412.         //$this->addFlash('success', "Registro almacenado con exito.");
  413.         // return $this->redirectToRoute('rf_solicitud_documento');
  414.     }
  415.     #[Route('/{id}/eliminar_archivo_inventario/{fuid}/{idArchivo}'name'rf_fuid_eliminar_archivo_inventario'methods: ['GET'])]
  416.     public function eliminarArchivoInventario(EntityManagerInterface $entityManagerRequest $request$id$fuid$idArchivo): Response
  417.     {
  418.         $RFFUID $entityManager->getRepository(RFFUID::class)->find($fuid);
  419.         $inf $this->getEntitiFUID($entityManager$RFFUID$id);
  420.         $obj $inf['obj'];
  421.         $formObj $inf['formObj'];
  422.         $archivo $entityManager->getRepository(\App\Entity\RFInventarioDocumentalArchivos::class)->find($idArchivo);
  423.         #Eliminar archivo para ser recursivo con el servidor
  424.         $this->documentHandler->eliminarArchivo(get_class($obj), $archivo->getArchivo());
  425.         # $archivo->setIdEntidad(null);
  426.         // dump(get_class($obj));
  427.         $entityManager->remove($archivo);
  428.         $obj->setArchivo(null);
  429.         $entityManager->flush();
  430.         //$limpiarArhivo = $this->documentHandler->eliminarArchivo($inf['df'], $obj->getArchivo());
  431.         $this->code 'success';
  432.         $this->msj "Registro retirado con exito.";
  433.         $this->url $this->generateUrl('rf_fuid_cargar_archivo_inventario', [
  434.             'id' => $id,
  435.             'fuid' => $fuid,
  436.         ]);
  437.         return new JsonResponse(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]);
  438.     }
  439.     #[Route('/{id}/eliminar_inventario/{fuid}'name'rf_fuid_eliminar_inventario'methods: ['POST'])]
  440.     public function eliminarInventario(Request $requestEntityManagerInterface $entityManager$id$fuid): Response
  441.     {
  442.         $RFFUID $entityManager->getRepository(RFFUID::class)->find($fuid);
  443.         $inf $this->getEntitiFUID($entityManager$RFFUID$id);
  444.         $obj $inf['obj'];
  445.         $formObj $inf['formObj'];
  446.         if ($obj->getFUID()->getEstado() != null) {
  447.             $this->code 'info';
  448.             $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  449.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  450.         }
  451.         $limpiarArhivo $this->documentHandler->eliminarArchivo($inf['df'], $obj->getArchivo());
  452.         $entityManager->remove($obj);
  453.         $entityManager->flush();
  454.         $url $this->generateUrl('rf_fuid_edit', [
  455.             'id' => $RFFUID->getId(),
  456.         ]);
  457.         return new JsonResponse([
  458.             'code' => 'success',
  459.             'msj' => 'Registro eliminado exitosamente',
  460.             'url' => $url,
  461.             'html' => ''
  462.         ]);
  463.     }
  464.     #[Route('/{id}/finalizar'name'rf_fuid_finalizar'methods: ['GET'])]
  465.     public function finalizar(Request $requestRFFUID $RFFUIDEntityManagerInterface $entityManager): Response
  466.     {
  467.         if ($RFFUID->getEstado() != null) {
  468.             $this->code 'info';
  469.             $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  470.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  471.         }
  472.         $RFFUID->setEstado($entityManager->getRepository(\App\Entity\ParEstado::class)->find(30));
  473.         //$RFFUID->setEstadoDisponibilidad($entityManager->getRepository(\App\Entity\ParEstado::class)->find(38));
  474.         $RFFUID->setUpdateAt(new \DateTime('now'));
  475.         $RFFUID->setUpdateUser($this->getUser()->getUsername());
  476.         $entityManager->persist($RFFUID);
  477.         $entityManager->flush();
  478.         //$this->mailerCore->FUID('notificacion', [$RFFUID]);
  479.         $this->code 'success';
  480.         $this->msj "Registro almacenado con exito.";
  481.         return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  482.     }
  483.     #[Route('/{id}/registrar_recepcion'name'rf_fuid_registrar_recepcion'methods: ['GET''POST'])]
  484.     public function registrarRecepcion(Request $requestRFFUID $RFFUIDEntityManagerInterface $entityManager): Response
  485.     {
  486.         if (!$RFFUID->getEstado() || $RFFUID?->getEstado()?->getId() != 30) {
  487.             $this->code 'info';
  488.             $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  489.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  490.         }
  491.         $form $this->createForm(RFFUIDType::class, $RFFUID, [
  492.             'disabled_fields' => true,
  493.             'idUsuarioElabora' => $RFFUID->getUsuarioElabora()->getId()
  494.             ,
  495.             'idSede' => $RFFUID->getSede()->getId()
  496.             ,
  497.             'idProceso' => $RFFUID->getProceso()->getId()
  498.             ,
  499.             'method' => 'POST',
  500.             'action' => $this->generateUrl($request->attributes->get('_route'), ['id' => $RFFUID->getId()])
  501.         ]);
  502.         $form
  503.             ->add('resultadoRevision'null, [
  504.                 'label' => 'Resultado Revisión',
  505.                 'placeholder' => 'seleccione una opcion',
  506.                 'required' => true
  507.             ])
  508.             ->add('motivo'null, [
  509.                 'placeholder' => 'seleccione una opcion',
  510.                 'required' => true
  511.             ])
  512.             ->add('observacionRecepcion'null, [
  513.                 'label' => 'Observación Recepción',
  514.                 'attr' => [
  515.                     'placeholder' => 'seleccione una opcion'
  516.                 ],
  517.                 'required' => false
  518.             ]);
  519.         $form->handleRequest($request);
  520.         if ($form->isSubmitted() && $form->isValid()) {
  521.             $RFFUID->setUsuarioRecibe($this->getUser()->getPersona());
  522.             $RFFUID->setFechaRecepcion(new \DateTime('now'));
  523.             if ($RFFUID->getMotivo()) {
  524.                 $RFFUID->setEstado(null);
  525.                 //$RFFUID->setEstadoDisponibilidad(null);
  526.                 $this->mailerCore->FUID('rechazo', [$RFFUID]);
  527.             } else {
  528.                 $res $this->getEntitiesFUID($entityManager$RFFUID);
  529.                 $estadoArchivo $entityManager->getRepository(\App\Entity\ParEstado::class)->find(30);
  530.                 $estadoDisponible $entityManager->getRepository(\App\Entity\ParEstado::class)->find(39);
  531.                 foreach ($res['entities'] as $ent) {
  532.                     $ent->setEstado($estadoArchivo);
  533.                     $ent->setDisponibilidad($estadoDisponible);
  534.                     $ent->setUpdateAt(new \DateTime('now'));
  535.                     $ent->setUpdateUser($this->getUser()->getUsername());
  536.                     $entityManager->persist($ent);
  537.                 }
  538.             }
  539.             $RFFUID->setUpdateAt(new \DateTime('now'));
  540.             $RFFUID->setUpdateUser($this->getUser()->getUsername());
  541.             $entityManager->persist($RFFUID);
  542.             $entityManager->flush();
  543.             $this->code 'success';
  544.             $this->msj "Registro almacenado con exito.";
  545.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  546.         }
  547.         $res $this->getEntitiesFUID($entityManager$RFFUIDtrue);
  548.         return $this->renderForm('rf_fuid/recepcion.html.twig', [
  549.             'keys' => $res['encabezado'],
  550.             'fuid' => $RFFUID,
  551.             'form' => $form,
  552.             'entities' => $res['entities']
  553.         ]);
  554.     }
  555.     #[Route('/{id}/cargar_ubicar'name'rf_fuid_cargar_ubicar'methods: ['GET''POST'])]
  556.     public function cargarUbicar(Request $requestRFFUID $RFFUIDEntityManagerInterface $entityManager): Response
  557.     {
  558.         if ($RFFUID->getEstado() == null || ($RFFUID->getEstado()->getId() != 30 && $RFFUID->getEstado()->getId() != 40)) {
  559.             $this->code 'warning';
  560.             $this->msj "Imposible continuar, el registro no se encuentra en el estado esperado.";
  561.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  562.         }
  563.         $form $this->createForm(RFFUIDType::class, $RFFUID, [
  564.             'disabled_fields' => true,
  565.             'idUsuarioElabora' => $RFFUID->getUsuarioElabora()->getId()
  566.             ,
  567.             'idSede' => $RFFUID->getSede()->getId()
  568.             ,
  569.             'idProceso' => $RFFUID->getProceso()->getId()
  570.             ,
  571.             'method' => 'POST',
  572.             'action' => $this->generateUrl($request->attributes->get('_route'), ['id' => $RFFUID->getId()])
  573.         ]);
  574.         $form
  575.             ->add('resultadoRevision'null, [
  576.                 'placeholder' => 'seleccione una opcion',
  577.                 'disabled' => true
  578.             ])
  579.             ->add('motivo'null, [
  580.                 'placeholder' => 'seleccione una opcion',
  581.                 'disabled' => true
  582.             ])
  583.             ->add('observacionRecepcion'null, [
  584.                 'attr' => [
  585.                     'placeholder' => 'seleccione una opcion'
  586.                 ],
  587.                 'disabled' => true
  588.             ])
  589.             ->add('ubicacion'null, [
  590.                 'placeholder' => 'seleccione una opcion'
  591.             ])
  592.             ->add('numeroPosicion'null, [
  593.                 'label' => 'Número de Posición',
  594.             ]);
  595.         $form
  596.             ->remove('caja')
  597.             ->remove('entidadProductora')
  598.             ->remove('usuarioResponsable')
  599.             ->remove('resultadoRevision')
  600.             ->remove('motivo')
  601.             ->remove('observacionRecepcion');
  602.         $form->handleRequest($request);
  603.         if ($form->isSubmitted() && $form->isValid()) {
  604.             //control de subida archivos.
  605.             $RFFUID->setEstado($entityManager->getRepository(\App\Entity\ParEstado::class)->find(40));
  606.             // $RFFUID->setEstadoDisponibilidad($entityManager->getRepository(\App\Entity\ParEstado::class)->find(41));
  607.             $RFFUID->setUpdateAt(new \DateTime('now'));
  608.             $RFFUID->setUpdateUser($this->getUser()->getUsername());
  609.             $entityManager->persist($RFFUID);
  610.             $entityManager->flush();
  611.             $this->code 'success';
  612.             $this->msj "Registro almacenado con exito.";
  613.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  614.         }
  615.         $res $this->getEntitiesFUID($entityManager$RFFUIDtrue);
  616.         return $this->renderForm('rf_fuid/cargarUbicar.html.twig', [
  617.             'keys' => $res['encabezado'],
  618.             'fuid' => $RFFUID,
  619.             'form' => $form,
  620.             'entities' => $res['entities']
  621.         ]);
  622.     }
  623.     public function getEntitiesFUID(EntityManagerInterface $entityManagerRFFUID $RFFUID$isArray false): array
  624.     {
  625.         $entities = [];
  626.         $keys = [];
  627.         $tituloFuid "";
  628.         if ($isArray) {
  629.             if (count($RFFUID->getInventarioDocumentalComercial()) > 0) {
  630.                 $entities $entityManager->getRepository(\App\Entity\RFInventarioDocumentalComercial::class)->getAll([$RFFUID->getId()]);
  631.                 $tituloFuid "Documento Comercial";
  632.             } else if (count($RFFUID->getInventarioDocumentalComex()) > 0) {
  633.                 $entities $entityManager->getRepository(\App\Entity\RFInventarioDocumentalComex::class)->getAll([$RFFUID->getId()]);
  634.                 $tituloFuid "Documento Comex";
  635.             } else if (count($RFFUID->getInventarioDocumentalFinanzas()) > 0) {
  636.                 $entities $entityManager->getRepository(\App\Entity\RFInventarioDocumentalFinanzas::class)->getAll([$RFFUID->getId()]);
  637.                 $tituloFuid "Documento Finanzas";
  638.             } else if (count($RFFUID->getInventarioDocumentalGesHum()) > 0) {
  639.                 $entities $entityManager->getRepository(\App\Entity\RFInventarioDocumentalGesHum::class)->getAll([$RFFUID->getId()]);
  640.                 $tituloFuid "Documento Gestion Humana";
  641.             } else if (count($RFFUID->getInventarioDocumentalSST()) > 0) {
  642.                 $entities $entityManager->getRepository(\App\Entity\RFInventarioDocumentalSST::class)->getAll([$RFFUID->getId()]);
  643.                 $tituloFuid "Documento SST";
  644.             }
  645.             if (isset($entities) && !empty($entities)) {
  646.                 $keys array_keys($entities[0]);
  647.             }
  648.         } else {
  649.             if (count($RFFUID->getInventarioDocumentalComercial()) > 0) {
  650.                 $entities $RFFUID->getInventarioDocumentalComercial();
  651.                 $tituloFuid "Documento Comercial";
  652.             } else if (count($RFFUID->getInventarioDocumentalComex()) > 0) {
  653.                 $entities $RFFUID->getInventarioDocumentalComex();
  654.                 $tituloFuid "Documento Comex";
  655.             } else if (count($RFFUID->getInventarioDocumentalFinanzas()) > 0) {
  656.                 $entities $RFFUID->getInventarioDocumentalFinanzas();
  657.                 $tituloFuid "Documento Finanzas";
  658.             } else if (count($RFFUID->getInventarioDocumentalGesHum()) > 0) {
  659.                 $entities $RFFUID->getInventarioDocumentalGesHum();
  660.                 $tituloFuid "Documento Gestion Humana";
  661.             } else if (count($RFFUID->getInventarioDocumentalSST()) > 0) {
  662.                 $entities $RFFUID->getInventarioDocumentalSST();
  663.                 $tituloFuid "Documento SST";
  664.             }
  665.         }
  666.         return ['encabezado' => $keys'entities' => $entities'titulo' => $tituloFuid];
  667.     }
  668.     public function getEntitiFUID(
  669.         EntityManagerInterface $entityManager,
  670.         RFFUID $RFFUID,
  671.         $id
  672.     ): array {
  673.         $map = [
  674.             \App\Entity\RFInventarioDocumentalComercial::class => [
  675.                 'relation' => 'getInventarioDocumentalComercial',
  676.                 'form' => \App\Form\RFInventarioDocumentalComercialType::class,
  677.                 'name' => 'formComercial',
  678.                 'titulo' => 'Editar Documento Comercial',
  679.             ],
  680.             \App\Entity\RFInventarioDocumentalComex::class => [
  681.                 'relation' => 'getInventarioDocumentalComex',
  682.                 'form' => \App\Form\RFInventarioDocumentalComexType::class,
  683.                 'name' => 'formComex',
  684.                 'titulo' => 'Editar Documento Comex',
  685.             ],
  686.             \App\Entity\RFInventarioDocumentalFinanzas::class => [
  687.                 'relation' => 'getInventarioDocumentalFinanzas',
  688.                 'form' => \App\Form\RFInventarioDocumentalFinanzasType::class,
  689.                 'name' => 'formFinanzas',
  690.                 'titulo' => 'Editar Documento Finanzas',
  691.             ],
  692.             \App\Entity\RFInventarioDocumentalGesHum::class => [
  693.                 'relation' => 'getInventarioDocumentalGesHum',
  694.                 'form' => \App\Form\RFInventarioDocumentalGesHumType::class,
  695.                 'name' => 'formGesHum',
  696.                 'titulo' => 'Editar Documento Gestión Humana',
  697.             ],
  698.             \App\Entity\RFInventarioDocumentalSST::class => [
  699.                 'relation' => 'getInventarioDocumentalSST',
  700.                 'form' => \App\Form\RFInventarioDocumentalSSTType::class,
  701.                 'name' => 'formSST',
  702.                 'titulo' => 'Editar Documento SST',
  703.             ],
  704.         ];
  705.         foreach ($map as $entityClass => $config) {
  706.             // Intentamos buscar el ID en esa entidad
  707.             $obj $entityManager->getRepository($entityClass)->find($id);
  708.             if ($obj) {
  709.                 return [
  710.                     'df' => $entityClass,
  711.                     'obj' => $obj,
  712.                     'formObj' => $config['form'],
  713.                     'formName' => $config['name'],
  714.                     'titulo' => $config['titulo'],
  715.                     'dirAsset' => (new \ReflectionClass($obj))->getShortName(),
  716.                 ];
  717.             }
  718.         }
  719.         throw new \Exception('No se encontró el documento con ID: ' $id);
  720.     }
  721.     #[Route('/consulta_archivo'name'rf_fuid_consulta_archivo'methods: ['GET'])]
  722.     public function consultaArchivo(Request $requestEntityManagerInterface $entityManager): Response
  723.     {
  724.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  725.         $df $proceso->getFuenteDatosRFFUID();
  726.         if ($df) {
  727.             $entities $entityManager->getRepository($df)->consultaArchivo();
  728.         } else {
  729.             $entities = [];
  730.         }
  731.         return $this->render('rf_fuid/index.html.twig', [
  732.             'entities' => $entities
  733.         ]);
  734.     }
  735.     #[Route('/consulta_archivo_comercial'name'rf_fuid_consulta_archivo_comercial'methods: ['GET'])]
  736.     public function consultaArchivoComercial(Request $requestEntityManagerInterface $entityManager): Response
  737.     {
  738.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  739.         $df 'App\Entity\RFInventarioDocumentalComercial';
  740.         return $this->render('rf_fuid/index.html.twig', [
  741.             'entities' => $entityManager->getRepository($df)->consultaArchivo()
  742.         ]);
  743.     }
  744.     #[Route('/consulta_archivo_comex'name'rf_fuid_consulta_archivo_comex'methods: ['GET'])]
  745.     public function consultaArchivoComex(Request $requestEntityManagerInterface $entityManager): Response
  746.     {
  747.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  748.         $df 'App\Entity\RFInventarioDocumentalComex';
  749.         return $this->render('rf_fuid/index.html.twig', [
  750.             'entities' => $entityManager->getRepository($df)->consultaArchivo()
  751.         ]);
  752.     }
  753.     #[Route('/consulta_archivo_finanzas'name'rf_fuid_consulta_archivo_finanzas'methods: ['GET'])]
  754.     public function consultaArchivoFinanzas(Request $requestEntityManagerInterface $entityManager): Response
  755.     {
  756.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  757.         $df 'App\Entity\RFInventarioDocumentalFinanzas';
  758.         return $this->render('rf_fuid/index.html.twig', [
  759.             'entities' => $entityManager->getRepository($df)->consultaArchivo()
  760.         ]);
  761.     }
  762.     #[Route('/consulta_archivo_gestion_humana'name'rf_fuid_consulta_archivo_gestion_humana'methods: ['GET'])]
  763.     public function consultaArchivoGestionHumana(Request $requestEntityManagerInterface $entityManager): Response
  764.     {
  765.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  766.         $df 'App\Entity\RFInventarioDocumentalGesHum';
  767.         return $this->render('rf_fuid/index.html.twig', [
  768.             'entities' => $entityManager->getRepository($df)->consultaArchivo()
  769.         ]);
  770.     }
  771.     #[Route('/consulta_archivo_sst'name'rf_fuid_consulta_archivo_sst'methods: ['GET'])]
  772.     public function consultaArchivoSST(Request $requestEntityManagerInterface $entityManager): Response
  773.     {
  774.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  775.         $df 'App\Entity\RFInventarioDocumentalSST';
  776.         return $this->render('rf_fuid/index.html.twig', [
  777.             'entities' => $entityManager->getRepository($df)->consultaArchivo()
  778.         ]);
  779.     }
  780.     #[Route('/{id}/solicitar_archivo'name'rf_fuid_solicitar_archivo'methods: ['GET''POST'])]
  781.     public function solicitarArchivo(Request $requestEntityManagerInterface $entityManager$id): Response
  782.     {
  783.         if ($this->getUser()->getPersona()->getSede() == null || $this->getUser()->getPersona()->getPerfilCargo() == null) {
  784.             $this->code 'warning';
  785.             $this->msj "Imposible continuar, aun no cuenta con la inforcion de sede y perfil cargo.";
  786.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  787.         }
  788.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  789.         $df $proceso->getFuenteDatosRFFUID();
  790.         $obj $entityManager->getRepository($df)->find($id);
  791.         if (!$obj && !$obj?->getEstado()) {
  792.             $this->code 'warning';
  793.             $this->msj "Imposible continuar, el registro aun no esta en el estado esperado.";
  794.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  795.         }
  796.         $inf $this->getEntitiFUID($obj);
  797.         # dump($inf);
  798.         # evaluar si es viene algun mensaje de alerta
  799.         if (isset($inf['code'])) {
  800.             $this->code 'error';
  801.             $this->msj "Imposible continuar, el registro aun no esta en el estado esperado.";
  802.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  803.         }
  804.         $formObj $inf['formObj'];
  805.         $formName $inf['formName'];
  806.         $form $this->createForm($formObj$obj, ['disabled' => true]);
  807.         $RFSolicitudDocumento = new \App\Entity\RFSolicitudDocumento();
  808.         $tipoSolicitud = [];
  809.         $cantArchivos $entityManager->getRepository(\App\Entity\RFInventarioDocumentalArchivos::class)->findBy(['DF' => $inf['df'], 'idEntidad' => $obj->getId()]);
  810.         # Validar si es un objeto valido
  811.         if ($obj?->getDisponibilidad()?->getId() == 45 && $obj?->getEstado()?->getId() == 42 && count($cantArchivos) == 0) {
  812.             $tipoSolicitud = [1];
  813.         } else if ($obj?->getDisponibilidad()?->getId() == 39 && ($obj?->getEstado()?->getId() == 40 || $obj?->getEstado()?->getId() == 30)) {
  814.             $tipoSolicitud = [2];
  815.         }
  816.         $formSolicitud $this->createForm(
  817.             \App\Form\RFSolicitudDocumentoType::class,
  818.             $RFSolicitudDocumento,
  819.             ['tipoSolicitud' => $tipoSolicitud'method' => 'POST''action' => $this->generateUrl($request->attributes->get('_route'), ['id' => $id])]
  820.         );
  821.         $formSolicitud->handleRequest($request);
  822.         if ($formSolicitud->isSubmitted() && $formSolicitud->isValid()) {
  823.             $repetido $entityManager->getRepository(\App\Entity\RFSolicitudDocumento::class)->findOneBy(['FUID' => $obj->getFUID()->getId(), 'idEntidad' => $obj->getId(), 'usuarioSolicita' => $this->getUser()->getId(), 'estado' => 1]);
  824.             if (!$repetido) {
  825.                 $RFSolicitudDocumento->setFUID($obj->getFUID());
  826.                 $RFSolicitudDocumento->setDF($df);
  827.                 $RFSolicitudDocumento->setIdEntidad($obj->getId());
  828.                 $RFSolicitudDocumento->setUsuarioSolicita($this->getUser()->getPersona());
  829.                 $RFSolicitudDocumento->setCreateAt(new \DateTime('now'));
  830.                 $RFSolicitudDocumento->setCreateUser($this->getUser()->getUsername());
  831.                 $RFSolicitudDocumento->setUpdateAt(new \DateTime('now'));
  832.                 $RFSolicitudDocumento->setUpdateUser($this->getUser()->getUsername());
  833.                 $RFSolicitudDocumento->setEstado($entityManager->getRepository(\App\Entity\ParEstado::class)->find(1));
  834.                 $entityManager->persist($RFSolicitudDocumento);
  835.                 $entityManager->flush();
  836.             }
  837.             //if ($RFSolicitudDocumento->getTipoSolicitud()->getId() == 1) {
  838.             $this->mailerCore->solicitudDocumento('notificacion', [$RFSolicitudDocumento], [], $obj);
  839.             $this->code 'success';
  840.             $this->msj "Registro almacenado con exito.";
  841.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  842.         }
  843.         return $this->render('rf_fuid/solicitarArchivo.html.twig', [
  844.             'fuid' => $obj->getFUID(),
  845.             'form' => $formSolicitud->createView(),
  846.             'tituloFUID' => "",
  847.             $formName => $form->createView(),
  848.             'dirAsset' => $inf['dirAsset'],
  849.             'obj' => $obj
  850.         ]);
  851.     }
  852.     # Funcion para ver documentos
  853.     #[Route('/{id}/ver_documentos'name'rf_fuid_ver_documentos'methods: ['GET''POST'])]
  854.     public function verDocumentos(Request $requestEntityManagerInterface $entityManager$id)
  855.     {
  856.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  857.         $df $proceso->getFuenteDatosRFFUID();
  858.         #dump($df);
  859.         $obj $entityManager->getRepository($df)->find($id);
  860.         if (!$obj && !$obj?->getEstado()) {
  861.             $this->code 'warning';
  862.             $this->msj "Imposible continuar, el registro aun no esta en el estado esperado.";
  863.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  864.         }
  865.         #dump($obj);
  866.         $nombreClase = (new \ReflectionClass($obj))->getShortName();
  867.         dump($nombreClase);
  868.         return $this->render('rf_fuid/verDocumentos.html.twig', [
  869.             'entidad' => $obj# forzar la clase
  870.             'claseCarpeta' => $nombreClase,
  871.         ]);
  872.     }
  873.     #[Route('/{id}/tracking_archivo'name'rf_fuid_tracking_archivo'methods: ['GET''POST'])]
  874.     public function trackingArchivo(Request $requestEntityManagerInterface $entityManager$id): Response
  875.     {
  876.         //        if ($this->getUser()->getPersona()->getSede() == null || $this->getUser()->getPersona()->getPerfilCargo() == null) {
  877. //            $this->code = 'warning';
  878. //            $this->msj = "Imposible continuar, aun no cuenta con la inforcion de sede y perfil cargo.";
  879. //            return new Response(json_encode(['code' => $this->code, 'msj' => $this->msj, 'url' => $this->url, 'html' => $this->html]));
  880. //        }
  881.         $proceso $this->getUser()->getPersona()->getPerfilCargo()->getParProceso();
  882.         $df $proceso->getFuenteDatosRFFUID();
  883.         $obj $entityManager->getRepository($df)->find($id);
  884.         // dump($obj);
  885.         if (!$obj && !$obj?->getEstado()) {
  886.             $this->code 'warning';
  887.             $this->msj "Imposible continuar, el registro aun no esta en el estado esperado.";
  888.             return new Response(json_encode(['code' => $this->code'msj' => $this->msj'url' => $this->url'html' => $this->html]));
  889.         }
  890.         $inf $this->getEntitiFUID($entityManager$obj->getFUID(), $id);
  891.         $formObj $inf['formObj'];
  892.         $formName $inf['formName'];
  893.         $form $this->createForm($formObj$obj, ['disabled' => true]);
  894.         $solicitudes $entityManager->getRepository(\App\Entity\RFSolicitudDocumento::class)->findBy(['DF' => $inf['df'], 'idEntidad' => $obj->getId()], ['createAt' => 'DESC']);
  895.         return $this->render('rf_fuid/trackingArchivo.html.twig', [
  896.             'fuid' => $obj->getFUID(),
  897.             'tituloFUID' => "",
  898.             $formName => $form->createView(),
  899.             'dirAsset' => $inf['dirAsset'],
  900.             'obj' => $obj,
  901.             'solicitudes' => $solicitudes,
  902.         ]);
  903.     }
  904.     #[Route('/buscar_cedula_usuario'name'rf_fuid_buscar_cedula_usuario'methods: ['GET''POST'])]
  905.     public function buscarCedula(Request $requestEntityManagerInterface $entityManager): Response
  906.     {
  907.         $numDoc $request->request->get('numDoc');
  908.         $persona $entityManager->getRepository(\App\Entity\TerPersona::class)->findOneBy(['numeroDocumento' => $numDoc]);
  909.         $res = [];
  910.         if ($persona) {
  911.             $res = ['idPer' => $persona->getId()];
  912.         }
  913.         return new Response(json_encode($res));
  914.     }
  915. }