src/Controller/ProgressionController.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Progression;
  4. use App\Entity\ProgressionDetail;
  5. use App\Form\ProgressionType;
  6. use App\Repository\ProgressionRepository;
  7. use DateTime;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
  10. use Knp\Snappy\Pdf;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. #[Route('/progression')]
  16. class ProgressionController extends AbstractController
  17. {
  18.     #[Route('/'name'app_progression_index'methods: ['GET'])]
  19.     public function index(ProgressionRepository $progressionRepository): Response
  20.     {
  21.         /*$formPdf = $this->createForm(ProgressionPdfSequenceType::class, null ,[
  22.             'action' => $this->generateUrl('app_progression_pdf_sequence'),
  23.         ]);
  24.         $formPage = $this->createForm(ProgressionPdfSequenceType::class, null ,[
  25.             'action' => $this->generateUrl('app_progression_pdf_sequence'),
  26.         ]);*/
  27.         return $this->renderForm('progression/index.html.twig', [
  28.             'progressions' => $progressionRepository->findAll(),
  29.             //'formPage' => $formPage,
  30.             //'formPdf' => $formPdf,
  31.         ]);
  32.     }
  33.     #[Route('/new'name'app_progression_new'methods: ['GET''POST'])]
  34.     public function new(Request $requestProgressionRepository $progressionRepository): Response
  35.     {
  36.         $progression = new Progression();
  37.         $form $this->createForm(ProgressionType::class, $progression);
  38.         $form->handleRequest($request);
  39.         if ($form->isSubmitted() && $form->isValid()) {
  40.             $progressionRepository->add($progressiontrue);
  41.             return $this->redirectToRoute('app_progression_index', [], Response::HTTP_SEE_OTHER);
  42.         }
  43.         return $this->renderForm('progression/new.html.twig', [
  44.             'progression' => $progression,
  45.             'form' => $form,
  46.         ]);
  47.     }
  48.     #[Route('/{id}'name'app_progression_show'methods: ['GET'])]
  49.     public function show(Progression $progression): Response
  50.     {
  51.         return $this->render('progression/show.html.twig', [
  52.             'progression' => $progression,
  53.         ]);
  54.     }
  55.     #[Route('/{id}/edit'name'app_progression_edit'methods: ['GET''POST'])]
  56.     public function edit(Request $requestProgression $progressionProgressionRepository $progressionRepository): Response
  57.     {
  58.         $form $this->createForm(ProgressionType::class, $progression);
  59.         $form->handleRequest($request);
  60.         if ($form->isSubmitted() && $form->isValid()) {
  61.             $progressionRepository->add($progressiontrue);
  62.             return $this->redirectToRoute('app_progression_index', [], Response::HTTP_SEE_OTHER);
  63.         }
  64.         return $this->renderForm('progression/edit.html.twig', [
  65.             'progression' => $progression,
  66.             'form' => $form,
  67.         ]);
  68.     }
  69.     #[Route('/{id}'name'app_progression_delete'methods: ['POST'])]
  70.     public function delete(Request $requestProgression $progressionProgressionRepository $progressionRepository): Response
  71.     {
  72.         if ($this->isCsrfTokenValid('delete'.$progression->getId(), $request->request->get('_token'))) {
  73.             $progressionRepository->remove($progressiontrue);
  74.         }
  75.         return $this->redirectToRoute('app_progression_index', [], Response::HTTP_SEE_OTHER);
  76.     }
  77.     #[Route('/{id}/generer'name'app_progression_generate'methods: ['GET'])]
  78.     public function generer(Request $requestProgression $progressionEntityManagerInterface $entityManager): Response
  79.     {
  80.         if(!$progression->isEstGenere()){
  81.             $date $progression->getDateDebut();
  82.             $jours =[];
  83.             foreach ($progression->getRefBlocHeure() as $bloc ){
  84.                 if (!in_array($bloc->getJour(),$jours))
  85.                     $jours[] = $bloc->getJour();
  86.             }
  87.             $dateFin date_format($progression->getDateFin(),"Ymd");
  88.             while (date_format($date,"Ymd") <= $dateFin){
  89.                 $dayOfDate date_format($date,"N");
  90.                 if(in_array($dayOfDate,$jours)){
  91.                     foreach ($progression->getRefBlocHeure() as $bloc ){
  92.                         if ($bloc->getJour() == $dayOfDate){
  93.                             $progressionDetail = new ProgressionDetail();
  94.                             $progressionDetail->setDate(new DateTime(date_format($date,"Y-m-d")));
  95.                             $progressionDetail->setJour($dayOfDate);
  96.                             $progressionDetail->setRefBlocHeure($bloc);
  97.                             $progressionDetail->setRefProgression($progression);
  98.                             foreach ($progression->getRefPeriodeCle() as $periode){
  99.                                 if(is_null($progressionDetail->getRefPeriodeCle()) && date_format($date,"Ymd") >= date_format($periode->getDebut(),"Ymd") && date_format($date,"Ymd") <= date_format($periode->getFin(),"Ymd")){
  100.                                     $progressionDetail->setRefPeriodeCle($periode);
  101.                                 }
  102.                             }
  103.                             $entityManager->persist($progressionDetail);
  104.                         }
  105.                     }
  106.                     dump(date_format($date,"Ymd")." / ".date_format($progression->getDateFin(),"Ymd"));
  107.                 }
  108.                 if ($dayOfDate == 5)
  109.                     $date->modify('+3 day');
  110.                 else
  111.                     $date->modify('+1 day');
  112.             }
  113.             $progression->setEstGenere(true);
  114.             $entityManager->flush();
  115.         }
  116.         return $this->redirectToRoute('app_progression_index', [], Response::HTTP_SEE_OTHER);
  117.     }
  118.     #[Route('/{id}/tableau/sequence'name'app_progression_tableau_sequence'methods: ['GET'])]
  119.     public function tableauSequence(Progression $progression): Response
  120.     {
  121.         return $this->render('pdf/ficheProgressionSequence.html.twig', [
  122.             'progression' => $progression,
  123.             'page' => true,
  124.         ]);
  125.     }
  126.     #[Route('/{id}/pdf/sequence'name'app_progression_pdf_sequence'methods: ['GET'])]
  127.     public function pdfSequence(Pdf $pdf,Progression $progression): Response
  128.     {
  129.         $pageUrl $this->renderView('pdf/ficheProgressionSequence.html.twig', array(
  130.             'progression' => $progression,
  131.             'page' => false,
  132.         ));
  133.         return new PdfResponse(
  134.             $pdf->getOutputFromHtml($pageUrl,[
  135.                 "orientation" => 'Landscape',
  136.                 "enable-local-file-access" => true,
  137.                 "enable-javascript" => true,
  138.                 "page-size" => "A3"
  139.             ]),
  140.             iconv('UTF-8','ASCII//TRANSLIT',$progression->getLibelle()) .'.pdf'
  141.         );
  142.     }
  143.     #[Route('{id}/page/sequence'name'app_progression_page_sequence'methods: ['GET'])]
  144.     public function pageSequence(Progression $progression): Response
  145.     {
  146.         return $this->render('pdf/ficheProgressionSequence.html.twig', array(
  147.             'progression' => $progression,
  148.             'page' => true,
  149.         ));
  150.     }
  151. }