src/Controller/ComDocumentosSoporteCasoComexController.php line 36

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\ComCasoComex;
  4. use App\Entity\ComDocumentosSoporteCasoComex;
  5. use App\Form\ComDocumentosSoporteCasoComexType;
  6. use App\Repository\ComDocumentosSoporteCasoComexRepository;
  7. use App\Services\DocumentHandler;
  8. use App\Services\MailerCore;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. #[Route('/com/documentos/soporte/caso/comex')]
  16. class ComDocumentosSoporteCasoComexController extends AbstractController
  17. {
  18.     private $entityManager;
  19.     private $repository;
  20.     private $code 0;
  21.     private $msj "";
  22.     private $url "";
  23.     private $html "";
  24.     private $mailerCore;
  25.     public function __construct(EntityManagerInterface $entityManagerMailerCore $mailerCore)
  26.     {
  27.         $this->entityManager $entityManager;
  28.         $this->mailerCore $mailerCore;
  29.     }
  30.     #[Route('/com/documentos_caso_comex/new/{id}'name'app_com_documentos_soporte_caso_comex_new')]
  31.     public function new(Request $requestEntityManagerInterface $entityManager$id nullDocumentHandler $documentHandler): Response
  32.     {
  33.         $casoComex $this->entityManager->getRepository(ComCasoComex::class)->find($id);
  34.         if (!$casoComex) {
  35.             throw $this->createNotFoundException('No se encontro el registro');
  36.         }
  37.         $comDocumentosSoporteCasoComex = new ComDocumentosSoporteCasoComex();
  38.         $form $this->createForm(ComDocumentosSoporteCasoComexType::class, $comDocumentosSoporteCasoComex, [
  39.             'method' => 'POST',
  40.             'action' => $this->generateUrl('app_com_documentos_soporte_caso_comex_new', [
  41.                 'id' => $casoComex->getId(),
  42.             ])
  43.         ]);
  44.         $form->handleRequest($request);
  45.         $files $form->get('file')->getData(); //traemos el array de archivos ya que marcamos multiple en el type
  46.         if ($form->isSubmitted() && $form->isValid()) {
  47.             $ultimoDocumento null;
  48.             if ($files) {
  49.                 foreach ($files as $file) {
  50.                     $rutaArchivo $documentHandler->cargarArchivo($fileComCasoComex::class);
  51.                     if ($rutaArchivo['code'] === 'success') {
  52.                         $documento = new ComDocumentosSoporteCasoComex();
  53.                         $documento->setArchivos($rutaArchivo['msj']);
  54.                         $documento->setComCasoComex($casoComex);
  55.                         $documento->setCreateAt(new \DateTime('now'));
  56.                         $documento->setCreateUser($this->getUser()->getUsername());
  57.                         $documento->setUpdateAt(new \DateTime('now'));
  58.                         $documento->setUpdateUser($this->getUser()->getUsername());
  59.                         $entityManager->persist($documento);
  60.                         $ultimoDocumento $documento// guardo el último para la redirección
  61.                     } else {
  62.                         $this->code 'warning';
  63.                         $this->msj "Imposible cargar el archivo, {$rutaArchivo['msj']}";
  64.                         return new Response(json_encode(['code' => $this->code'msj'  => $this->msj'url'  => $this->url'html' => $this->html
  65.                             ])
  66.                         );
  67.                     }
  68.                 }
  69.                 $entityManager->flush();
  70.             }
  71.             $this->code 'success';
  72.             $this->msj "Registro creado exitosamente";
  73.             $this->url $this->generateUrl('app_com_caso_comex_new', [
  74.                 'id'  => $casoComex->getTerEmpresaCliente()->getId(),
  75.                 'idC' => $casoComex->getId(),
  76.             ]);
  77.             $this->html '';
  78.             return new Response(json_encode(['code' => $this->code'msj'  => $this->msj'url'  => $this->url'html' => $this->html
  79.                 ])
  80.             );
  81.         }
  82.         return $this->renderForm('com_documentos_soporte_caso_comex/new.html.twig', [
  83.             'com_documentos_soporte_caso_comex' => $comDocumentosSoporteCasoComex,
  84.             'form' => $form,
  85.         ]);
  86.     }
  87.     #[Route('/com/documentos_caso_comex/edit/{id}'name'app_com_documentos_soporte_caso_comex_edit'methods: ['GET''POST'])]
  88.     public function edit(Request $requestComDocumentosSoporteCasoComex $comDocumentosSoporteCasoComexEntityManagerInterface $entityManagerDocumentHandler $documentHandler): Response
  89.     {
  90.         $casoComex $comDocumentosSoporteCasoComex->getComCasoComex();
  91.         if (!$casoComex) {
  92.             throw $this->createNotFoundException('No se encontro el registro');
  93.         }
  94.         if (!$comDocumentosSoporteCasoComex) {
  95.             throw $this->createNotFoundException('Registro no encontrado');
  96.         }
  97.         //Definimos si es edicion para mostrar en el campo de file que solo pueda cargar un archivo el usuario
  98.         $esEdicion true;
  99.         //Lo pasamos al formulario
  100.         $form $this->createForm(ComDocumentosSoporteCasoComexType::class, $comDocumentosSoporteCasoComex, [
  101.             'esEdicion' => $esEdicion,
  102.             'method' => 'POST',
  103.             'action' => $this->generateUrl('app_com_documentos_soporte_caso_comex_edit', [
  104.                 'id' => $comDocumentosSoporteCasoComex->getId(),
  105.             ])
  106.         ]);
  107.         $form->handleRequest($request);
  108.         //obtenemos el archivo que se subio
  109.         $file $form->get('file')->getData();
  110.         if ($form->isSubmitted() && $form->isValid()) {
  111.             $comDocumentosSoporteCasoComex->setUpdateAt(new \DateTime('now'));
  112.             $comDocumentosSoporteCasoComex->setUpdateUser($this->getUser()->getUsername());
  113.             //Cargamos el archivo
  114.             if($file){
  115.                 $rutaArchivo $documentHandler->cargarArchivo($fileComCasoComex::class);
  116.                 if($rutaArchivo['code'] === 'success'){
  117.                     $comDocumentosSoporteCasoComex->setArchivos($rutaArchivo['msj']);
  118.                     $entityManager->persist($comDocumentosSoporteCasoComex);
  119.                 }else {
  120.                     $this->code 'warning';
  121.                     $this->msj "Imposible cargar el archivo, {$rutaArchivo['msj']}";
  122.                     return new Response(json_encode(['code' => $this->code'msj'  => $this->msj'url'  => $this->url'html' => $this->html]));
  123.                 }
  124.                 $entityManager->flush();
  125.             }
  126.             $this->code 'success';
  127.             $this->msj "Registro actualizado exitosamente";
  128.             $this->url $this->generateUrl('app_com_caso_comex_new', [
  129.                 'id'  => $casoComex->getTerEmpresaCliente()->getId(),
  130.                 'idC' => $casoComex->getId(),
  131.             ]);
  132.             $this->html '';
  133.             return new Response(json_encode(['code' => $this->code'msj'  => $this->msj'url'  => $this->url'html' => $this->html
  134.                 ])
  135.             );
  136.         }
  137.         return $this->renderForm('com_documentos_soporte_caso_comex/edit.html.twig', [
  138.             'com_documentos_soporte_caso_comex' => $comDocumentosSoporteCasoComex,
  139.             'form' => $form,
  140.         ]);
  141.     }
  142.     #[Route('/com/documentos_caso_comex/delete/{id}'name'app_com_documentos_soporte_caso_comex_delete')]
  143.     public function delete(Request $requestComDocumentosSoporteCasoComex $comDocumentosSoporteCasoComexEntityManagerInterface $entityManager): Response
  144.     {
  145.         $casoComex $comDocumentosSoporteCasoComex->getComCasoComex();
  146.         if (!$casoComex) {
  147.             throw $this->createNotFoundException('No se encontro el registro');
  148.         }
  149.         if (!$comDocumentosSoporteCasoComex) {
  150.             throw $this->createNotFoundException('Registro no encontrado');
  151.         }
  152.         $entityManager->remove($comDocumentosSoporteCasoComex);
  153.         $entityManager->flush();
  154.         $url $this->generateUrl('app_com_caso_comex_new', [
  155.             'id'  => $casoComex->getTerEmpresaCliente()->getId(),
  156.             'idC' => $casoComex->getId(),
  157.         ]);
  158.         return new JsonResponse([
  159.             'code' => 'success',
  160.             'msj' => 'Registro eliminado exitosamente',
  161.             'url' => $url,
  162.             'html' => ''
  163.         ]);
  164.     }
  165. }