src/Controller/MarriageCertificateController.php line 200

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\DocumentCategory;
  4. use App\Entity\Folder;
  5. use App\Entity\MarriageCertificate;
  6. use App\Entity\Media;
  7. use App\Entity\Sites;
  8. use App\Form\MarriageCertificateType;
  9. use App\Form\SiteCbmType;
  10. use App\Service\FileUploader;
  11. use Doctrine\Persistence\ManagerRegistry;
  12. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Endroid\QrCode\QrCode;
  15. class MarriageCertificateController extends AbstractController
  16. {
  17.     private FileUploader $fileUploader;
  18.    private ManagerRegistry $managerRegistry;
  19.     /**
  20.      * @param FileUploader $fileUploader
  21.      * @param ManagerRegistry $managerRegistry
  22.      */
  23.     public function __construct(FileUploader $fileUploaderManagerRegistry $managerRegistry)
  24.     {
  25.         $this->fileUploader $fileUploader;
  26.         $this->managerRegistry $managerRegistry;
  27.     }
  28.     public function add(Request $request)
  29.     {
  30.         $marriage = new MarriageCertificate();
  31.         $marriageForm $this->createForm(MarriageCertificateType::class, $marriage);
  32.         $marriageForm->handleRequest($request);
  33.         if ($marriageForm->isSubmitted() && $marriageForm->isValid()) {
  34.             #que l'ages des parents et des mariés sont correctes
  35.             $folder = new Folder();
  36.             $folder->setUserCreate($this->getUser());
  37.             $dc $this->managerRegistry->getRepository(DocumentCategory::class)->findOneBy([
  38.                 'number' => 'AA2',
  39.                 'isDeleted' => false,
  40.             ]);
  41.             if (!is_null($dc)) {
  42.                 $folder->setDocumentCategory($dc);
  43.             }
  44.             $folder->setSite($this->getUser()->getSite());
  45.             $folder->setBeneficiary($marriage->getMan());
  46.             $marriage->setUserCreate($this->getUser());
  47.             $marriage->setStatus(2);
  48.             $marriage->setSite($this->getUser()->getSite());
  49.             $em $this->managerRegistry->getManager();
  50.             $em->persist($marriage);
  51.             $em->flush();
  52.             $documentFile $marriageForm->get('file')->getData();
  53.             if ($documentFile) {
  54.                 $media = new Media();
  55.                 $this->fileUploader->setTargetDirectory($this->getParameter('demandes_directory'));
  56.                 $documentFileName $this->fileUploader->upload($documentFile);
  57.                 $media->setPath($documentFileName);
  58.                 $media->setDocumentId($marriage->getId());
  59.                 $media->setUserCreate($this->getUser());
  60.                 $em $this->managerRegistry->getManager();
  61.                 $em->persist($media);
  62.                 $em->flush();
  63.             }
  64.             $m $this->managerRegistry->getRepository(MarriageCertificate::class)->findOneBy([
  65.                 'man' => $marriage->getMan(),
  66.                 'women' => $marriage->getWomen(),
  67.                 'witness_1' => $marriage->getWitness1(),
  68.                 'witness_2' => $marriage->getWitness2(),
  69.                 'userCreate' => $this->getUser(),
  70.                 'isDeleted' => false,
  71.             ]);
  72.             if (!is_null($m)) {
  73.                 $folder->setRequestId($m->getId() . "");
  74.             }
  75.             $folder->setStatus(2);
  76.             $em->persist($folder);
  77.             $em->flush();
  78.             $this->addFlash('add_mc_success'"L'acte de mariage enregistré avec succès");
  79.         }
  80.         return $this->render('marriage_certificate/add.html.twig', [
  81.             'marriageForm' => $marriageForm->createView(),
  82.             'media'        => null
  83.         ]);
  84.     }
  85.     public function update(Request $request)
  86.     {
  87.         $marriage $this->managerRegistry->getRepository(MarriageCertificate::class)->findOneBy([
  88.             'id' => $request->get('mc_id'),
  89.             'isDeleted' => false,
  90.         ]);
  91.         if ($marriage === null) {
  92.             $this->addFlash('not_found_mc'"L'acte " ucfirst($request->get('mc_id')) . "n'a pas été trouvé");
  93.             return $this->redirectToRoute('app_folder_register');
  94.         }
  95.         $media $this->managerRegistry->getRepository(Media::class)->findOneBy(['documentId' => $marriage->getId() ]);
  96.         $marriageForm $this->createForm(MarriageCertificateType::class, $marriage);
  97.         $marriageForm->handleRequest($request);
  98.         if ($marriageForm->isSubmitted() && $marriageForm->isValid()) {
  99.             $marriage->setUserUpdate($this->getUser());
  100.             $marriage->setDateUpdate(new \DateTime());
  101.             $em $this->managerRegistry->getManager();
  102.             $em->persist($marriage);
  103.             $em->flush();
  104.             $folder $this->managerRegistry->getRepository(Folder::class)->findOneBy([
  105.                 'documentCategory' => 2,
  106.                 'requestId' => $marriage->getId() . '',
  107.                 'isDeleted' => false,
  108.             ]);
  109.             if ($folder === null) {
  110.                 $this->addFlash('update_folder_success'"L'acte " ucfirst($request->get('mc_id')) . "n'a pas été trouvé");
  111.                 return $this->redirectToRoute('app_folder_register');
  112.             }
  113.             $this->addFlash('update_mc_success'"L'acte de mariage a été modifié avec succès!");
  114.             return $this->redirectToRoute('app_folder_view', [
  115.                 'folder_id' => $folder->getId()
  116.             ]);
  117.         }
  118.         return $this->render('marriage_certificate/add.html.twig', [
  119.             'marriageForm' => $marriageForm->createView(),
  120.             'media'        => $media
  121.         ]);
  122.     }
  123.     public function publish(Request $request)
  124.     {
  125.         $marriage $this->managerRegistry->getRepository(MarriageCertificate::class)->findOneBy([
  126.             'id' => $request->get('mc_id'),
  127.             'isDeleted' => false,
  128.         ]);
  129.         if ($marriage === null) {
  130.             $this->addFlash('not_found_mc'"L'acte " ucfirst($request->get('mc_id')) . "n'a pas été trouvé");
  131.             return $this->redirectToRoute('app_folder_register');
  132.         }
  133.         $marriage->setUserUpdate($this->getUser());
  134.         $marriage->setDatePublish(new \DateTime());
  135.         $marriage->setIsPublished(true);
  136.         $em $this->managerRegistry->getManager();
  137.         $em->persist($marriage);
  138.         $em->flush();
  139.         $folder $this->managerRegistry->getRepository(Folder::class)->findOneBy([
  140.             'documentCategory' => 2,
  141.             'requestId' => $marriage->getId() . '',
  142.             'isDeleted' => false,
  143.         ]);
  144.         if ($folder === null) {
  145.             $this->addFlash('update_folder_success'"L'acte " ucfirst($request->get('mc_id')) . "n'a pas été trouvé");
  146.             return $this->redirectToRoute('app_folder_register');
  147.         }
  148.         $this->addFlash('publish_mc_success'"Le mariage a été publié avec succès!");
  149.         return $this->redirectToRoute('app_folder_view', [
  150.             'folder_id' => $folder->getId()
  151.         ]);
  152.     }
  153.     public function register(Request $request)
  154.     {
  155.         $marriages $this->managerRegistry->getRepository(MarriageCertificate::class)->findBy([
  156.             'isDeleted' => false,
  157.         ]);
  158.         return $this->render('marriage_certificate/register.html.twig', [
  159.             'marriages' => $marriages,
  160.         ]);
  161.     }
  162.     public function publishRegister(Request $request)
  163.     {
  164.         $marriages $this->managerRegistry->getRepository(MarriageCertificate::class)->findBy([
  165.             'isDeleted' => false,
  166.             'isPublished' => true,
  167.         ]);
  168.         $marriage = new MarriageCertificate();
  169.         $siteForm $this->createForm(SiteCbmType::class, $marriage);
  170.         $siteForm->handleRequest($request);
  171.         if ($siteForm->isSubmitted() && $siteForm->isValid()) {
  172.         }
  173.         return $this->render('marriage_certificate/publish_register.html.twig', [
  174.             'marriages' => $marriages,
  175.             'siteForm' => $siteForm->createView(),
  176.         ]);
  177.     }
  178.     public function viewDocHtml(Request $request)
  179.     {
  180.         $marriage $this->managerRegistry->getRepository(MarriageCertificate::class)->findOneBy([
  181.             'id' => $request->get('mc_id'),
  182.             'isDeleted' => false,
  183.         ]);
  184.         if ($marriage === null) {
  185.             $this->addFlash('not_found_mc'"L'acte " ucfirst($request->get('mc_id')) . "n'a pas été trouvé");
  186.             return $this->redirectToRoute('app_folder_register');
  187.         }
  188.         $qrCodeUrl $this->getParameter("server_url").$this->getParameter("url_scan"). $request->get('folder_id');
  189.         $qrCode = new QrCode($qrCodeUrl);
  190.         $qrCode->setSize(100);
  191.         
  192.         return $this->render('marriage_certificate/view_doc_html.html.twig', [
  193.             'marriage' => $marriage,
  194.             'qrcode' => $qrCode->writeDataUri(),
  195.             'qrCodeUrl' => $qrCodeUrl,
  196.         ]);
  197.     }
  198.     public function printDocToPdf(Request $request)
  199.     {
  200.         $doc $this->managerRegistry->getRepository(MarriageCertificate::class)->findOneBy([
  201.             'id' => $request->get('mc_id'),
  202.             'isDeleted' => false,
  203.         ]);
  204.         //Si le document n'existe pas dans la bd
  205.         if ($doc === null) {
  206.             throw $this->createNotFoundException("Document non trouvé dans la base de données");
  207.         }
  208.         $pdf = new \FPDF('P''mm''A4');
  209.         // $pdf->AddFont('RobotoCondensed', '', 'RobotoCondensed-Regular.php');
  210.         // $pdf->AddFont('RobotoCondensed', 'I', 'RobotoCondensed-Italic.php');
  211.         // $pdf->AddFont('RobotoCondensed', 'B', 'RobotoCondensed-Bold.php');
  212.         // $pdf->AddFont('RobotoCondensed', 'L', 'RobotoCondensed-Light.php');
  213.         // $pdf->AddFont('Roboto', 'B', 'Roboto-Bold.php');
  214.         $pdf->SetMargins(030);
  215.         //RECTO
  216.         $pdf->AddPage();
  217.         $pdf->SetFont('Arial''B'12);
  218.         $pdf->Cell(03utf8_decode('ENTRE LES SOUSSIGNES :'), falsetrue''false);
  219.         $pdf->Output();
  220.     }
  221.     public function validation(Request $request)
  222.     {
  223.         $document $this->managerRegistry->getRepository(MarriageCertificate::class)->findOneBy([
  224.             'id' => $request->get('pr_id'),
  225.             'isDeleted' => false,
  226.         ]);
  227.         if ($document === null) {
  228.             $this->addFlash('not_found_folder'"L'acte de mariage " ucfirst($request->get('pr_id')) . "n'a pas été trouvé");
  229.             return $this->redirectToRoute('app_folder_register');
  230.         }
  231.         $folder $this->managerRegistry->getRepository(Folder::class)->findOneBy([
  232.             'requestId' => $document->getId(),
  233.         ]);
  234.         if ($folder === null) {
  235.             $this->addFlash('not_found_folder'"L'acte de mariage" ucfirst($request->get('pr_id')) . "n'a pas été trouvé");
  236.             return $this->redirectToRoute('app_folder_register');
  237.         }
  238.         $folder->setStatus(4);
  239.         $folder->setUserValidation($this->getUser());
  240.         $folder->setDateValidation(new \DateTime());
  241.         $document->setStatus(4);
  242.         
  243.         
  244.         $em $this->managerRegistry->getManager();
  245.         $em->persist($document);
  246.         $em->persist($folder);
  247.         $em->flush();
  248.         
  249.         $this->addFlash('update_folder_success'"La demande a été validée avec succès ");
  250.         return $this->redirectToRoute('app_folder_register');
  251.         
  252.     }
  253.     public function sign(Request $request)
  254.     {
  255.         $document $this->managerRegistry->getRepository(MarriageCertificate::class)->findOneBy([
  256.             'id' => $request->get('pr_id'),
  257.             'isDeleted' => false,
  258.         ]);
  259.         if ($document === null) {
  260.             $this->addFlash('not_found_folder'"L'acte de mariage " ucfirst($request->get('pr_id')) . "n'a pas été trouvé");
  261.             return $this->redirectToRoute('app_folder_register');
  262.         }
  263.         $folder $this->managerRegistry->getRepository(Folder::class)->findOneBy([
  264.             'requestId' => $document->getId(),
  265.         ]);
  266.         if ($folder === null) {
  267.             $this->addFlash('not_found_folder'"L'acte de mariage  " ucfirst($request->get('pr_id')) . "n'a pas été trouvé");
  268.             return $this->redirectToRoute('app_folder_register');
  269.         }
  270.         $folder->setStatus(5);
  271.         $folder->setUserAutority($this->getUser());
  272.         $folder->setDateSign(new \DateTime());
  273.         $document->setStatus(5);
  274.         
  275.         $em $this->managerRegistry->getManager();
  276.         $em->persist($document);
  277.         $em->persist($folder);
  278.         $em->flush();
  279.         
  280.         $this->addFlash('update_folder_success'"Le document a été signé avec succès ");
  281.         return $this->redirectToRoute('app_folder_register');
  282.         
  283.     }
  284. }