src/Controller/SinistreController.php line 129

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Sinistre;
  4. use App\Form\SinistreType;
  5. use App\Entity\SinistreRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route; 
  11. use App\Service\FileUploader;
  12. use DateTimeImmutable;
  13. #[Route('/sinistre')] 
  14. class SinistreController extends AbstractController
  15. {
  16.     #[Route('/liste_sinistre', name: 'app_sinistre_index', methods: ['GET'])]
  17.     public function index(EntityManagerInterface $entityManager): Response
  18.     {
  19.         $sinistres = $entityManager
  20.             ->getRepository(Sinistre::class)
  21.             ->findAll(); 
  22.         return $this->render('sinistre/index.html.twig', [
  23.             'sinistres' => $sinistres,
  24.         ]);
  25.     }
  26.     #[Route('/new_sinistre', name: 'app_sinistre_new', methods: ['GET', 'POST'])]
  27.     public function new(Request $request, EntityManagerInterface $entityManager, FileUploader $uploader): Response
  28.     {
  29.         $sinistre = new Sinistre(); 
  30.         $form = $this->createForm(SinistreType::class, $sinistre);
  31.         $form->handleRequest($request);
  32.         if ($form->isSubmitted() && $form->isValid()) {
  33.             $date = $request->request->get("date");
  34.             $dateAccident= (\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', $date . '00:00:00'));
  35.             $assurance = $form['photo_assurance']->getData();
  36.             $permis = $form['permis_conduire']->getData();
  37.             $carteGrise = $form['carte_grise']->getData();
  38.             $proces_verbal = $form['proces_verbal']->getData();
  39.             $sinistre->setDateAccident($dateAccident)
  40.                 ->setCreatedAt(new \DateTimeImmutable('now'))
  41.                 ->setStatut(0); 
  42.             $entityManager->persist($sinistre);
  43.             $entityManager->flush();        
  44.             $mat = "Document";
  45.             $array = array("png", "PNG","jpg","JPG","jpeg","JPEG");
  46.             if (empty($assurance) || empty($permis) || empty($carteGrise) || empty($proces_verbal)) 
  47.             {
  48.             $filename="";
  49.             }   else
  50.             {
  51.                 $idSinistre = $sinistre->getId();
  52.                 $filename = $assurance->getClientOriginalName();
  53.                 $filename = explode('.' , $filename);
  54.                 $filename = $mat.'_assurance'.$idSinistre.'.'.$filename[1];
  55.                 $extension=substr(strrchr($filename,'.'),1);
  56.                 $filename1 = $permis->getClientOriginalName();
  57.                 $filename1 = explode('.' , $filename1);
  58.                 $filename1 = $mat.'_permis'.$idSinistre.'.'.$filename1[1];
  59.                 $extension=substr(strrchr($filename1,'.'),1);
  60.                 $filename2 = $permis->getClientOriginalName();
  61.                 $filename2 = explode('.' , $filename2);
  62.                 $filename2 = $mat.'carteGrise'.$idSinistre.'.'.$filename2[1];
  63.                 $extension=substr(strrchr($filename2,'.'),1);
  64.                 $filename3 = $permis->getClientOriginalName();
  65.                 $filename3 = explode('.' , $filename3);
  66.                 $filename3 = $mat.'proces_verbal'.$idSinistre.'.'.$filename3[1];
  67.                 $extension=substr(strrchr($filename3,'.'),1);
  68.                 if (in_array($extension, $array, true))
  69.                     {
  70.                     // $uploader->upload($upload7, $document, $filename);
  71.                     $uploader->upload("../public/images/assurances", $assurance, $filename);
  72.                     $uploader->upload("../public/images/permis", $permis, $filename1);
  73.                     $uploader->upload("../public/images/carteGrises", $carteGrise, $filename2);
  74.                     $uploader->upload("../public/images/proces_verbal", $proces_verbal, $filename3);
  75.                     // $protocol = 'http';  
  76.                     $protocol = 'https'; 
  77.                     $HTTP_HOST = $_SERVER['HTTP_HOST'];
  78.                     //  $REQUEST_URI = $_SERVER['REQUEST_URI'];
  79.                         $lienDocument = $protocol. '://'.$HTTP_HOST.'/'.'images/assurances/'.$filename;
  80.                         $lienDocument1 = $protocol. '://'.$HTTP_HOST.'/'.'images/permis/'.$filename1;
  81.                         $lienDocument2 = $protocol. '://'.$HTTP_HOST.'/'.'images/carteGrises/'.$filename2;
  82.                         $lienDocument3 = $protocol. '://'.$HTTP_HOST.'/'.'images/proces_verbal/'.$filename3;
  83.                     }else{ 
  84.                 
  85.                     $this->addFlash('warning', "Ce format de fichier pour l'image n'est pas accepté par le système!!");
  86.                     return $this->redirectToRoute('app_sinistre_new', [], Response::HTTP_SEE_OTHER);
  87.             
  88.                     }
  89.             }
  90.             $sinistre->setPhotoAssurance($lienDocument)
  91.                     ->setPermisConduire($lienDocument1)
  92.                     ->setProcesVerbal($lienDocument3)
  93.                     ->setCarteGrise($lienDocument2); 
  94.             $entityManager->persist($sinistre);
  95.             $entityManager->flush();
  96.             $this->addFlash('success', 'Votre déclaration sinistre a été envoyer avec succès.');
  97.             return $this->redirectToRoute('app_home', [], Response::HTTP_SEE_OTHER);
  98.         }
  99.         return $this->renderForm('sinistre/new.html.twig', [
  100.             'sinistre' => $sinistre,
  101.             'form' => $form,
  102.         ]);
  103.     }
  104. }