src/Controller/MeetingController.php line 62

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Controller\Admin\DemandeCrudController;
  4. use App\Controller\Admin\FormUserCrudController;
  5. use App\Entity\Demande;
  6. use App\Entity\FormUser;
  7. use App\Entity\Meeting;
  8. use App\Entity\User;
  9. use App\Form\MeetingType;
  10. use App\Repository\FormUserRepository;
  11. use App\Repository\MeetingRepository;
  12. use App\Security\EmailVerifier;
  13. use App\Service\NotificationManager;
  14. use Doctrine\ORM\EntityManagerInterface;
  15. use EasyCorp\Bundle\EasyAdminBundle\Config\Action;
  16. use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
  17. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  18. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\HttpFoundation\Response;
  21. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  22. use Symfony\Component\Mime\Address;
  23. use Symfony\Component\Routing\Annotation\Route;
  24. use Symfony\Component\Routing\Generator\UrlGenerator;
  25. use Symfony\Component\Validator\Validator\ValidatorInterface;
  26. class MeetingController extends AbstractController
  27. {
  28.     private $emailVerifier;
  29.     private $adminUrlGenerator;
  30.     public function __construct(EmailVerifier $emailVerifierAdminUrlGenerator $adminUrlGenerator)
  31.     {
  32.         $this->emailVerifier $emailVerifier;
  33.         $this->adminUrlGenerator $adminUrlGenerator;
  34.     }
  35.     #[Route('/meeting'name'app_meeting'methods: ['GET'])]
  36.     public function index(MeetingRepository $meetingRepository): Response
  37.     {
  38.         $new_meeting = new Meeting();
  39.         $user $this->getUser();
  40.         $meeting_demande $meetingRepository->getMyMeetingsForDemande($user);
  41.         $meeting_formUser $meetingRepository->getMyMeetingsForFormUser($user);
  42.         $meeting array_merge($meeting_demande$meeting_formUser);
  43.         usort($meeting, function ($a$b) {     return $a->getId() <=> $b->getId(); });
  44.         $form_meeting $this->createForm(MeetingType::class, $new_meeting);
  45.         return $this->render('meeting/index_meeting.html.twig', [
  46.             'meeting' => $meeting,
  47.             'form_meeting' => $form_meeting->createView(),
  48.         ]);
  49.     }
  50.     #[Route('/planifi-meeting/{type}/{id}'name'planifi_meeting')]
  51.     public function scheduleMeetingConfirm(
  52.         $id,
  53.         $type 'formuser',
  54.         Request $request,
  55.         SessionInterface $session,
  56.         EntityManagerInterface $entityManager,
  57.         NotificationManager $notificationManager,
  58.         ValidatorInterface $validator
  59.     ): Response
  60.     {
  61.         $meeting = new Meeting();
  62.         $errors $validator->validate($meeting);
  63.         if ( $type == 'formuser' ){
  64.             $demande $entityManager->getRepository(FormUser::class)->find($id);
  65.         }else{
  66.             $demande $entityManager->getRepository(Demande::class)->find($id);
  67.         }
  68.         $formMeeting $this->createForm(MeetingType::class, $meeting);
  69.         $formMeeting->handleRequest($request);
  70.         if ($formMeeting->isSubmitted()){
  71.             $meeting_creneau $request->request->get('meeting_creneau');
  72.             $meeting_date $request->request->get('meeting')['meeting_date'];
  73.             $meeting_date_heure $meeting_date ' ' $meeting_creneau.':00';
  74.             if ( $type == 'formuser' ){
  75.                 $meeting->setFormUser($demande);
  76.             }else{
  77.                 $meeting->setDemande($demande);
  78.             }
  79.             $meeting->setMeetingDate(new \DateTime($meeting_date_heure));
  80.             $entityManager->persist($meeting);
  81.             $entityManager->flush();
  82.             if ( $type == 'formuser' ){
  83.                 $edit_redirect_demande_url $this->adminUrlGenerator
  84.                     ->setController(FormUserCrudController::class)
  85.                     ->setAction(Action::EDIT)
  86.                     ->setEntityId($id)
  87.                     ->set'meeting_id'$meeting->getId() )
  88.                     ->generateUrl();
  89.                 $show_demande_url $this->generateUrl('form_show', array( 'id' => $id'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  90.             }else{
  91.                 $edit_redirect_demande_url $this->adminUrlGenerator
  92.                     ->setController(DemandeCrudController::class)
  93.                     ->setAction(Action::EDIT)
  94.                     ->setEntityId($id)
  95.                     ->generateUrl();
  96.                 $show_demande_url $this->generateUrl('app_demande_show', array( 'id' => $id'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  97.             }
  98.             // send notification of reception of M//eeting : "demandeur"
  99.             $date_meeting $meeting->getMeetingDate()->format('d-m-Y - H:m');
  100.             $demandeur $meeting->getCreatedBy();
  101.             $edit_demande_url $this->generateUrl('app_redirect_email', array( 'id' => $demande->getId(), 'type' => 'formuser' ), UrlGenerator::ABSOLUTE_URL );
  102.             if ( $meeting->getDemande() ){
  103.                 foreach ( $meeting->getDemande()->getResponsables() as $responsable ){
  104.                     $this->emailVerifier->sendEmailConfirmation(
  105.                         'app_verify_email',
  106.                         $demandeur,
  107.                         (new TemplatedEmail())
  108.                             ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  109.                             ->to$responsable->getEmail() )
  110.                             ->subject('Une nouvelle réunion a été Planifié !')
  111.                             ->htmlTemplate('email/email_reception_meeting_schedule_responsable.html.twig')
  112.                             ->context([
  113.                                 'demandeur' => $demandeur,
  114.                                 'demande_url' => $show_demande_url,
  115.                                 'demande_id' => $meeting->getId(),
  116.                             ])
  117.                     );
  118.                     $notification_message 'Une nouvelle réunion a été Planifié  !';
  119.                     $notificationManager->pushMessage('Une nouvelle réclamation a été ajoutée !'$notification_message$responsable$edit_demande_url);
  120.                 }
  121.             }
  122.             if ( $meeting->getFormUser() ){
  123.                 foreach ( $meeting->getFormUser()->getResponsables() as $responsable ){
  124.                     $this->emailVerifier->sendEmailConfirmation(
  125.                         'app_verify_email',
  126.                        $demandeur,
  127.                         (new TemplatedEmail())
  128.                             ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  129.                             ->to$responsable->getEmail() )
  130.                             ->subject('Une nouvelle réunion a été Planifié !')
  131.                             ->htmlTemplate('email/email_reception_meeting_schedule_responsable.html.twig')
  132.                             ->context([
  133.                                 'demandeur' => $demandeur,
  134.                                 'demande_url' => $show_demande_url,
  135.                                 'demande_id' => $meeting->getId(),
  136.                             ])
  137.                     );
  138.                     $notification_message 'Une nouvelle réunion  a été Planifié !';
  139.                     $notificationManager->pushMessage('Une nouvelle réunion a été Planifiée !'$notification_message$responsable$edit_demande_url);
  140.                 }
  141.             }
  142.             $this->emailVerifier->sendEmailConfirmation(
  143.                 'app_verify_email',
  144.                 $this->getUser(),
  145.                 (new TemplatedEmail())
  146.                     ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  147.                     ->to$this->getUser()->getEmail() )
  148.                     ->subject('Planification de réunion !')
  149.                     ->htmlTemplate('email/email_reception_meeting_schedule_demandeur.html.twig')
  150.                     ->context([
  151.                         'demande_url' => $show_demande_url,
  152.                         'demandeur' => $demandeur,
  153.                         'date_meeting' => $date_meeting,
  154.                         'demande_id' => $meeting->getId(),
  155.                     ])
  156.             );
  157.             if ( $type == 'formuser' ){
  158.                 $notification_message 'Planification de réunion !' $demande->getId() . ' du formulaire ' $demande->getForm()->getNom();
  159.             }else{
  160.                 $notification_message 'Planification de réunion !' $demande->getId() . ' du formulaire de demande d’assistance technique de l’IGPPP';
  161.             }
  162.             $notificationManager->pushMessage('Planification de réunion !'$notification_message$this->getUser(), $show_demande_url);
  163.             // send notification of reception of Meeting : "admin"
  164.             $edit_demande_url $this->generateUrl('app_redirect_email', array( 'id' => $demande->getId(), 'type' => 'formuser' ), UrlGenerator::ABSOLUTE_URL );
  165.             $this->emailVerifier->sendEmailConfirmation(
  166.                 'app_verify_email',
  167.                 $this->getUser(),
  168.                 (new TemplatedEmail())
  169.                     ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  170.                     ->to$this->getParameter('EmailNotification') )
  171.                     ->subject('Planification de réunion !')
  172.                     ->htmlTemplate('email/email_reception_meeting_schedule_admin.html.twig')
  173.                     ->context([
  174.                         'edit_demande_url' => $edit_demande_url,
  175.                         'demandeur' => $demandeur,
  176.                         'demande_id' => $meeting->getId(),
  177.                     ])
  178.             );
  179.             $admins $entityManager->getRepository(User::class)->findByRole('ROLE_ADMIN');
  180.             foreach ( $admins as $admin){
  181.                 if ( $type == 'formuser' ){
  182.                     $notification_message 'Planification de réunion !' $demande->getId() . ' du formulaire ' $demande->getForm()->getNom();
  183.                 }else{
  184.                     $notification_message 'Planification de réunion !' $demande->getId() . ' du formulaire de demande d’assistance technique de l’IGPPP';
  185.                 }
  186.                 $notificationManager->pushMessage('Planification de réunion !'$notification_message$admin$edit_demande_url);
  187.             }
  188.             if ( $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_RD' ) ){
  189.                 return $this->redirect($edit_redirect_demande_url);
  190.             }
  191.             return $this->redirect($show_demande_url);
  192.         }
  193.     }
  194.     #[Route('/replanifier/meeting/{id}'name'reschedule_meeting')]
  195.     public function rescheduleMeeting($id,
  196.         Request $request,
  197.         Meeting $meeting,
  198.         MeetingRepository $meetingRepository,
  199.         FormUserRepository $formUserRepository,
  200.         EntityManagerInterface $entityManager,
  201.         EmailVerifier $emailVerifier,
  202.         AdminUrlGenerator $adminUrlGenerator,
  203.         NotificationManager $notificationManager): Response
  204.     {
  205.         $new_meeting = new Meeting();
  206.         $meeting $entityManager->getRepository(Meeting::class)->find($id);
  207.         if (!$meeting) {
  208.             throw $this->createNotFoundException(
  209.                 'There are no meetings with the following id: ' $id
  210.             );
  211.         }
  212.         $form $this->createForm(MeetingType::class, $new_meeting);
  213.         $form->handleRequest($request);
  214.         if($form->isSubmitted() )
  215.         {
  216.             $meeting $meetingRepository->find($id);
  217.             $meeting->setIsConfirmed(false);
  218.             $meeting->setStatus(false);
  219.             $meeting_creneau $request->request->get('meeting_creneau');
  220.             $meeting_date $request->request->get('meeting')['meeting_date'];
  221.             $meeting_date_heure $meeting_date ' ' $meeting_creneau ':00';
  222.             $new_meeting->setMeetingDate(new \DateTime($meeting_date_heure));
  223.             $new_meeting->setFormUser($meeting->getFormUser());
  224.             $new_meeting->setDemande($meeting->getDemande());
  225.             $entityManager->persist($new_meeting);
  226.             $entityManager->flush();
  227.             if ( $meeting->getFormUser() ){
  228.                 $edit_redirect_demande_url $adminUrlGenerator->setController(FormUserCrudController::class)
  229.                     ->setAction(Action::EDIT)
  230.                     ->setEntityId($meeting->getFormUser()->getId())
  231.                     ->set'meeting_id'$new_meeting->getId() )
  232.                     ->generateUrl();
  233.                 $show_demande_url $this->generateUrl('form_show', array( 'id' => $meeting->getFormUser()->getId(), 'meeting_id' => $new_meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  234.             }else if ($meeting->getDemande()){
  235.                 $edit_redirect_demande_url $adminUrlGenerator->setController(DemandeCrudController::class)
  236.                     ->setAction(Action::EDIT)
  237.                     ->setEntityId($meeting->getDemande()->getId())
  238.                     ->set'meeting_id'$new_meeting->getId() )
  239.                     ->generateUrl();
  240.                 $show_demande_url $this->generateUrl('app_demande_show', array( 'id' => $meeting->getDemande()->getId(), 'meeting_id' => $new_meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  241.             }
  242.             // send notification of reception of Meeting : "demandeur"
  243.             $date_meeting $meeting->getMeetingDate()->format('d-m-Y - H:m');
  244.             $demandeur $meeting->getCreatedBy();
  245.             $emailVerifier->sendEmailConfirmation(
  246.                 'app_verify_email',
  247.                 $this->getUser(),
  248.                 (new TemplatedEmail())
  249.                     ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  250.                     ->to$meeting->getCreatedBy()->getEmail() )
  251.                     ->subject('Re-planification de réunion  !')
  252.                     ->htmlTemplate('email/email_reception_meeting_reschedule_demandeur.html.twig')
  253.                     ->context([
  254.                         'demande_url' => $show_demande_url,
  255.                         'date_meeting' => $date_meeting,
  256.                         'demandeur' => $demandeur,
  257.                         'demande_id' => $meeting->getId(),
  258.                     ])
  259.             );
  260.             $notification_message 'Re-planification de réunion !';
  261.             $notificationManager->pushMessage('Re-planification de réunion !'$notification_message$meeting->getCreatedBy(), $show_demande_url);
  262.             $show_demande_url $this->generateUrl('app_demande_show', array( 'id' => $id'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  263.             if ( $meeting->getDemande() ){
  264.                 foreach ( $meeting->getDemande()->getResponsables() as $responsable ){
  265.                     $this->emailVerifier->sendEmailConfirmation(
  266.                         'app_verify_email',
  267.                         $demandeur,
  268.                         (new TemplatedEmail())
  269.                             ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  270.                             ->to$responsable->getEmail() )
  271.                             ->subject('Une réunion a été re-planifié !')
  272.                             ->htmlTemplate('email/email_reception_meeting_reschedule_responsable.html.twig')
  273.                             ->context([
  274.                                 'demandeur' => $demandeur,
  275.                                 'demande_url' => $show_demande_url,
  276.                                 'demande_id' => $meeting->getId(),
  277.                             ])
  278.                     );
  279.                     $notification_message 'Une réunion a été re-planifié  !';
  280.                     $notificationManager->pushMessage('Une réunion a été re-planifié !'$notification_message$responsable$show_demande_url);
  281.                 }
  282.             }
  283.             $show_demande_url $this->generateUrl('form_show', array( 'id' => $id'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  284.             if ( $meeting->getFormUser() ){
  285.                 foreach ( $meeting->getFormUser()->getResponsables() as $responsable ){
  286.                     $this->emailVerifier->sendEmailConfirmation(
  287.                         'app_verify_email',
  288.                         $demandeur,
  289.                         (new TemplatedEmail())
  290.                             ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  291.                             ->to$responsable->getEmail() )
  292.                             ->subject('Une réunion a été re-planifié !')
  293.                             ->htmlTemplate('email/email_reception_meeting_reschedule_responsable.html.twig')
  294.                             ->context([
  295.                                 'demandeur' => $demandeur,
  296.                                 'demande_url' => $show_demande_url,
  297.                                 'demande_id' => $meeting->getId(),
  298.                             ])
  299.                     );
  300.                     $notification_message 'Une réunion a été re-planifié  !';
  301.                     $notificationManager->pushMessage('Une réunion a été re-planifié !'$notification_message$responsable$show_demande_url);
  302.                 }
  303.             }
  304.             // send notification of reception of Meeting : "admin"
  305.             $emailVerifier->sendEmailConfirmation('app_verify_email'$this->getUser(),
  306.                 (new TemplatedEmail())
  307.                     ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  308.                     ->to$this->getParameter('EmailNotification') )
  309.                     ->subject('Re-planification de réunion !')
  310.                     ->htmlTemplate('email/email_reception_meeting_reschedule_admin.html.twig')
  311.                     ->context([
  312.                         'demande_url' => $edit_redirect_demande_url,
  313.                         'demandeur' => $demandeur,
  314.                         'date_meeting' => $date_meeting,
  315.                         'demande_id' => $meeting->getId(),
  316.                     ])
  317.             );
  318.             $admins $entityManager->getRepository(User::class)->findByRole('ROLE_ADMIN');
  319.             foreach ( $admins as $admin){
  320.                 if ( $meeting->getFormUser()){
  321.                     $notification_message 'Re-planification de réunion !' $id ' du formulaire ' $meeting->getFormUser()->getForm()->getNom();
  322.                 }else if ($meeting->getDemande()){
  323.                     $notification_message 'Re-planification de réunion !' $id' du formulaire de demande d’assistance technique de l’IGPPP';
  324.                 }
  325.                 $notificationManager->pushMessage('Re-planification réunion !'$notification_message$admin$edit_redirect_demande_url);
  326.             }
  327.             if ( $this->isGranted("ROLE_RD") || $this->isGranted'ROLE_RD' ) ) {
  328.                 return $this->redirect$edit_redirect_demande_url );
  329.             }
  330.             return $this->redirect$show_demande_url );
  331.         }
  332.     }
  333.     #[Route('/valid/{id}'name'valid-meeting')]
  334.     public function validDemandeMeeting($id,
  335.         AdminUrlGenerator $adminUrlGenerator,
  336.         EntityManagerInterface $entityManager,
  337.         EmailVerifier $emailVerifier,
  338.         NotificationManager $notificationManager): Response
  339.     {
  340.         $meeting $entityManager->getRepository(Meeting::class)->find($id);
  341.         if ( $meeting->getFormUser() ){
  342.             $edit_redirect_demande_url $adminUrlGenerator->setController(FormUserCrudController::class)
  343.                 ->setAction(Action::EDIT)
  344.                 ->setEntityId($meeting->getFormUser()->getId())
  345.                 ->set'meeting_id'$meeting->getId() )
  346.                 ->generateUrl();
  347.             $show_demande_url $this->generateUrl('form_show', array( 'id' => $meeting->getFormUser()->getId(), 'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  348.         }elseif ($meeting->getDemande()){
  349.             $edit_redirect_demande_url $adminUrlGenerator->setController(DemandeCrudController::class)
  350.                 ->setAction(Action::EDIT)
  351.                 ->setEntityId($meeting->getDemande()->getId())
  352.                 ->set'meeting_id'$meeting->getId() )
  353.                 ->generateUrl();
  354.             $show_demande_url $this->generateUrl('app_demande_show', array( 'id' => $meeting->getDemande()->getId(), 'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  355.         }
  356.         if (!$meeting) {
  357.             throw $this->createNotFoundException(
  358.                 'No meeting found for id '.$id
  359.             );
  360.         }
  361.         $meeting->setIsConfirmed(1);
  362.         $meeting->setStatus(0);
  363.         $entityManager->flush();
  364.         // send notification of reception of Meeting : "demandeur"
  365.          $date_meeting $meeting->getMeetingDate()->format('d-m-Y - H:m');
  366.          $demandeur $meeting->getCreatedBy();
  367.          $emailVerifier->sendEmailConfirmation('app_verify_email'$this->getUser(),
  368.              (new TemplatedEmail())
  369.                  ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  370.                  ->to$meeting->getCreatedBy()->getEmail() )
  371.                  ->subject('Validation de réunion  !')
  372.                  ->htmlTemplate('email/email_validation_meeting_demandeur.html.twig')
  373.                  ->context([
  374.                      'demande_url' => $show_demande_url,
  375.                      'date_meeting' => $date_meeting,
  376.                      'demandeur' => $demandeur,
  377.                      'demande_id' => $meeting->getId(),
  378.                  ])
  379.          );
  380.          $notification_message 'Validation de réunion !';
  381.          $notificationManager->pushMessage('Validation de réunion  !'$notification_message$meeting->getCreatedBy(), $show_demande_url);
  382.         $show_demande_url $this->generateUrl('form_show', array( 'id' => $id'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  383.         if ( $meeting->getDemande() ){
  384.             foreach ( $meeting->getDemande()->getResponsables() as $responsable ){
  385.                 $this->emailVerifier->sendEmailConfirmation(
  386.                     'app_verify_email',
  387.                     $demandeur,
  388.                     (new TemplatedEmail())
  389.                         ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  390.                         ->to$responsable->getEmail() )
  391.                         ->subject('Une réunion a été validé !')
  392.                         ->htmlTemplate('email/email_reception_meeting_reschedule_responsable.html.twig')
  393.                         ->context([
  394.                             'demandeur' => $demandeur,
  395.                             'demande_url' => $show_demande_url,
  396.                             'demande_id' => $meeting->getId(),
  397.                         ])
  398.                 );
  399.                 $notification_message 'Une réunion a été validé !';
  400.                 $notificationManager->pushMessage('Une réunion a été validé !'$notification_message$responsable$show_demande_url);
  401.             }
  402.         }
  403.         if ( $meeting->getFormUser() ){
  404.             foreach ( $meeting->getFormUser()->getResponsables() as $responsable ){
  405.                 $this->emailVerifier->sendEmailConfirmation(
  406.                     'app_verify_email',
  407.                     $demandeur,
  408.                     (new TemplatedEmail())
  409.                         ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  410.                         ->to$responsable->getEmail() )
  411.                         ->subject('Une réunion a été validé !')
  412.                         ->htmlTemplate('email/email_reception_meeting_reschedule_responsable.html.twig')
  413.                         ->context([
  414.                             'demandeur' => $demandeur,
  415.                             'demande_url' => $show_demande_url,
  416.                             'demande_id' => $meeting->getId(),
  417.                         ])
  418.                 );
  419.                 $notification_message 'Une réunion a été validée  !';
  420.                 $notificationManager->pushMessage('Une réunion a été validé!'$notification_message$responsable$show_demande_url);
  421.             }
  422.         }
  423.         // send notification of reception of Meeting : "admin"
  424.         $emailVerifier->sendEmailConfirmation('app_verify_email'$this->getUser(),
  425.             (new TemplatedEmail())
  426.                 ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  427.                 ->to$this->getParameter('EmailNotification') )
  428.                 ->subject('Validation de réunion !')
  429.                 ->htmlTemplate('email/email_validation_meeting_admin.html.twig')
  430.                 ->context([
  431.                     'demande_url' => $edit_redirect_demande_url,
  432.                     'demandeur' => $demandeur,
  433.                     'date_meeting' => $date_meeting,
  434.                     'demande_id' => $meeting->getId(),
  435.                 ])
  436.         );
  437.         $admins $entityManager->getRepository(User::class)->findByRole('ROLE_ADMIN');
  438.         foreach ( $admins as $admin){
  439.             if ( $meeting->getFormUser()){
  440.                 $notification_message 'Validation de réunion !' $id ' du formulaire ' $meeting->getFormUser()->getForm()->getNom();
  441.             }else if ($meeting->getDemande()){
  442.                 $notification_message 'Validation de réunion !' $id' du formulaire de demande d’assistance technique de l’IGPPP';
  443.             }
  444.             $notificationManager->pushMessage('Validation de réunion !'$notification_message$admin$edit_redirect_demande_url);
  445.         }
  446.         if ( $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_RD' ) ){
  447.                 return $this->redirect($edit_redirect_demande_url);
  448.         }
  449.         return $this->redirect($show_demande_url);
  450.     }
  451.     #[Route('/cancel/{id}'name'cancel-meeting')]
  452.     public function cancelDemandeMeeting($id,
  453.         EntityManagerInterface $entityManager,
  454.         EmailVerifier $emailVerifier,
  455.         NotificationManager $notificationManager,
  456.         AdminUrlGenerator $adminUrlGenerator): Response
  457.     {
  458.         $meeting $entityManager->getRepository(Meeting::class)->find($id);
  459.         if (!$meeting) {
  460.             throw $this->createNotFoundException(
  461.                 'No meeting found for id '.$id
  462.             );
  463.         }
  464.         if ( $meeting->getFormUser() ){
  465.             $edit_redirect_demande_url $adminUrlGenerator
  466.                 ->setController(FormUserCrudController::class)
  467.                 ->setAction(Action::EDIT)
  468.                 ->setEntityId($id)
  469.                 ->set'meeting_id'$meeting->getId() )
  470.                 ->generateUrl();
  471.             $show_demande_url $this->generateUrl('form_show', array( 'id' => $id'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  472.         }elseif ( $meeting->getDemande() ) {
  473.             $edit_redirect_demande_url $adminUrlGenerator
  474.                 ->setController(DemandeCrudController::class)
  475.                 ->setAction(Action::EDIT)
  476.                 ->setEntityId($id)
  477.                 ->set'meeting_id'$meeting->getId() )
  478.                 ->generateUrl();
  479.             $show_demande_url $this->generateUrl('app_demande_show', array( 'id' => $id'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  480.         }
  481.         $meeting->setIsConfirmed(0);
  482.         $meeting->setStatus(0);
  483.         $entityManager->flush();
  484.         // send notification of reception of Meeting : "demandeur"
  485.         $date_meeting $meeting->getMeetingDate()->format('d-m-Y - H:m');
  486.         $demandeur $meeting->getCreatedBy();
  487.         $emailVerifier->sendEmailConfirmation(
  488.             'app_verify_email',
  489.             $this->getUser(),
  490.             (new TemplatedEmail())
  491.                 ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  492.                 ->to$meeting->getCreatedBy()->getEmail() )
  493.                 ->subject('Annulation de réunion  !')
  494.                 ->htmlTemplate('email/email_refuse_meeting_demandeur.html.twig')
  495.                 ->context([
  496.                     'demande_url' => $show_demande_url,
  497.                     'date_meeting' => $date_meeting,
  498.                     'demandeur' => $demandeur,
  499.                     'demande_id' => $meeting->getId(),
  500.                 ])
  501.         );
  502.         $notification_message 'Annulation de réunion !';
  503.         $notificationManager->pushMessage('Annulation de réunion !'$notification_message$meeting->getCreatedBy(), $show_demande_url);
  504.         $show_demande_url $this->generateUrl('form_show', array( 'id' => $id'meeting_id' => $meeting->getId() ), UrlGenerator::ABSOLUTE_URL );
  505.         if ( $meeting->getDemande() ){
  506.             foreach ( $meeting->getDemande()->getResponsables() as $responsable ){
  507.                 $this->emailVerifier->sendEmailConfirmation(
  508.                     'app_verify_email',
  509.                     $demandeur,
  510.                     (new TemplatedEmail())
  511.                         ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  512.                         ->to$responsable->getEmail() )
  513.                         ->subject('Une réunion a été annulée !')
  514.                         ->htmlTemplate('email/email_refuse_meeting_responsable.html.twig')
  515.                         ->context([
  516.                             'demandeur' => $demandeur,
  517.                             'demande_url' => $show_demande_url,
  518.                             'demande_id' => $meeting->getId(),
  519.                         ])
  520.                 );
  521.                 $notification_message 'Une réunion a été annulée !';
  522.                 $notificationManager->pushMessage('Une réunion a été annulée !'$notification_message$responsable$show_demande_url);
  523.             }
  524.         }
  525.         if ( $meeting->getFormUser() ){
  526.             foreach ( $meeting->getFormUser()->getResponsables() as $responsable ){
  527.                 $this->emailVerifier->sendEmailConfirmation(
  528.                     'app_verify_email',
  529.                     $demandeur,
  530.                     (new TemplatedEmail())
  531.                         ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  532.                         ->to$responsable->getEmail() )
  533.                         ->subject('Une réunion a été annulée!')
  534.                         ->htmlTemplate('email/email_refuse_meeting_responsable.html.twig')
  535.                         ->context([
  536.                             'demandeur' => $demandeur,
  537.                             'demande_url' => $show_demande_url,
  538.                             'demande_id' => $meeting->getId(),
  539.                         ])
  540.                 );
  541.                 $notification_message 'Une réunion a été annulée  !';
  542.                 $notificationManager->pushMessage('Une réunion a été annulée !'$notification_message$responsable$show_demande_url);
  543.             }
  544.         }
  545.         // send notification of reception of Meeting : "admin"
  546.         $emailVerifier->sendEmailConfirmation('app_verify_email'$this->getUser(),
  547.             (new TemplatedEmail())
  548.                 ->from(new Address($this->getParameter('EmailAdmin'), 'IGPPP'))
  549.                 ->to$this->getParameter('EmailNotification') )
  550.                 ->subject('Annulation de réunion !')
  551.                 ->htmlTemplate('email/email_refuse_meeting_admin.html.twig')
  552.                 ->context([
  553.                     'demande_url' => $edit_redirect_demande_url,
  554.                     'demandeur' => $demandeur,
  555.                     'date_meeting' => $date_meeting,
  556.                     'demande_id' => $meeting->getId(),
  557.                 ])
  558.         );
  559.         $admins $entityManager->getRepository(User::class)->findByRole('ROLE_ADMIN');
  560.         foreach ( $admins as $admin){
  561.             if ( $meeting->getFormUser()){
  562.                 $notification_message 'Annulation de réunion !' $id ' du formulaire ' $meeting->getFormUser()->getForm()->getNom();
  563.             }else if ($meeting->getDemande()){
  564.                 $notification_message 'Annulation de réunion !' $id' du formulaire de demande d’assistance technique de l’IGPPP';
  565.             }
  566.             $notificationManager->pushMessage('Annulation de réunion !'$notification_message$admin$edit_redirect_demande_url);
  567.         }
  568.         if ( $this->isGranted('ROLE_ADMIN') || $this->isGranted('ROLE_RD' ) ){
  569.             return $this->redirect($edit_redirect_demande_url);
  570.         }
  571.         return $this->redirect($show_demande_url);
  572.     }
  573. }