src/Controller/EspaceCEController.php line 57

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Commande;
  4. use App\Entity\EnterpriseRequest;
  5. use App\Entity\Contact;
  6. use App\Entity\ContactPropertyValue;
  7. use App\Entity\Enterprise;
  8. use App\Entity\User;
  9. use App\Entity\Inscription;
  10. use App\Form\CeInscriptionParentType;
  11. use App\Entity\EnterpriseOptionSejourSession;
  12. use App\Entity\Location;
  13. use App\Entity\Media;
  14. use App\Entity\MediaCategorie;
  15. use App\Entity\Notification;
  16. use App\Entity\Property;
  17. use App\Factory\EnfantFactory;
  18. use App\Factory\EnterpriseFactory;
  19. use App\Factory\ParentFactory;
  20. use App\Form\CommandeOptionType;
  21. use App\Form\EnterpriseOptionSejourSessionType;
  22. use App\Form\EnterpriseRequestType;
  23. use App\Form\EnterpriseType;
  24. use App\Form\FileUploadType;
  25. use App\Form\FormFlow\CreateInscriptionFlow;
  26. use App\Form\InscriptionCEType;
  27. use App\Message\SendEmailMessage;
  28. use App\Message\SendNotificationMessage;
  29. use App\Storage\CommandeSessionStorage;
  30. use App\Utility\PasswordGenerator;
  31. use App\Utility\UpdateOptionCeSession;
  32. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  33. use Symfony\Component\HttpFoundation\Response;
  34. use Symfony\Component\HttpFoundation\Request;
  35. use Symfony\Component\Routing\Annotation\Route;
  36. use Doctrine\ORM\EntityManagerInterface;
  37. use Doctrine\ORM\Tools\Pagination\Paginator;
  38. use Knp\Component\Pager\PaginatorInterface;
  39. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  40. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  41. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  42. use Symfony\Component\Mailer\MailerInterface;
  43. use Symfony\Component\Messenger\MessageBusInterface;
  44. use Symfony\Component\Mime\Address;
  45. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  46. use PhpOffice\PhpSpreadsheet\IOFactory;
  47. use Symfony\Component\HttpFoundation\File\Exception\FileException;
  48. use Symfony\Component\String\Slugger\SluggerInterface;
  49. class EspaceCEController extends AbstractController
  50. {
  51. /**
  52. * @Route("demande-ce-administrations.html", name="espace_ce")
  53. */
  54. public function index(Request $request, MailerInterface $mailer, EntityManagerInterface $em, PasswordGenerator $pg, UserPasswordEncoderInterface $encoder): Response
  55. {
  56. $enterpriseRequest = new EnterpriseRequest();
  57. return $this->render('espace_ce/index.html.twig');
  58. }
  59. /**
  60. * @Route("ce-information-partenaire", name="espace_ce_information_partenaire")
  61. */
  62. public function informationPartenaire(Request $request, EntityManagerInterface $em)
  63. {
  64. $enterprise = new Enterprise();
  65. $enterprise->setContact($this->getUser()->getContact());
  66. $form = $this->createForm(EnterpriseType::class, $enterprise);
  67. $form->get('contact')->remove('email');
  68. $form->get('contact')->add('email', null, ['attr' => ['class' => 'form-control', 'readonly' => true, 'placeholder' => 'Email']]);
  69. return $this->render('espace_ce/formCreationCompte.html.twig', [
  70. 'form' => $form->createView(),
  71. 'pageTitle' => 'information partenaire'
  72. ]);
  73. }
  74. /**
  75. * @Route("demande-ce-sejour-groupe", name="espace_ce_demande_groupe")
  76. */
  77. public function demandeGroupe(Request $request, EntityManagerInterface $em, MailerInterface $mailer)
  78. {
  79. $enterpriseRequest = new EnterpriseRequest();
  80. $form = $this->createForm(EnterpriseRequestType::class, $enterpriseRequest);
  81. $form->handleRequest($request);
  82. if ($form->isSubmitted() and $form->isValid()) {
  83. $location = $enterpriseRequest->getEnterprise()->getLocation();
  84. $contact = $enterpriseRequest->getEnterprise()->getContact();
  85. $userExist = $em->getRepository(User::class)->findOneByEmail($contact->getEmail());
  86. $em->persist($location);
  87. $name = "";
  88. if ($user->getContact() !== null) {
  89. $name = $user->getContact()->getFirstName() . ' ' . $user->getContact()->getLastName();
  90. }
  91. $em->flush();
  92. $em->persist($enterpriseRequest);
  93. $em->flush();
  94. $email =
  95. (new TemplatedEmail())
  96. //TODO: voir pour les adresses mails.
  97. ->from(new Address('siteinternet@croqvacances.org', 'Croqvacances'))
  98. ->to($user->getEmail())
  99. ->subject('Création compte acces au site de croqvacances')
  100. ->htmlTemplate('emails/creation_compte.html.twig')
  101. ->context([
  102. 'password' => $plainPassword,
  103. 'userEmail' => $user->getEmail(),
  104. 'name' => $name,
  105. ]);
  106. $mailer->send($email);
  107. $this->addFlash('success', 'Votre demande a été envoyée. Par ailleurs, nous vous avons envoyé un mail avec des identifiants pour vous connecter à l\'espace CE');
  108. return $this->redirectToRoute('espace_ce_general');
  109. }
  110. return $this->render('espace_ce/_formDemandeGroupe.html.twig', ['form' => $form->createView()]);
  111. }
  112. /**
  113. * @Route("espace-ce",name="espace_ce_general")
  114. */
  115. public function espaceCeGeneral(EntityManagerInterface $em, PaginatorInterface $paginator, Request $request): Response
  116. {
  117. $optionOuvert = $em->getRepository(EnterpriseOptionSejourSession::class)->findBy(['enterprise' => $this->getUser()->getContact()->getEnterprise()]);
  118. if ($this->getUser()->getContact()->getEnterprise() == null)
  119. return $this->redirectToRoute("espace_ce_creation_entreprise");
  120. $dql = "SELECT r FROM " . EnterpriseRequest::class . " r WHERE r.enterprise =" . $this->getUser()->getContact()->getEnterprise()->getId();
  121. $query = $em->createQuery($dql);
  122. $pagination = $paginator->paginate(
  123. $query, /* query NOT result */
  124. $request->query->getInt('page', 1), /*page number*/
  125. 10 /*limit per page*/
  126. );
  127. // parameters to template
  128. return $this->render('espace_ce/list.html.twig', [
  129. 'pagination' => $pagination,
  130. 'options' => $optionOuvert
  131. ]);
  132. }
  133. /**
  134. * @Route("espace-ce/creation-entreprise", name="espace_ce_creation_entreprise")
  135. */
  136. public function creationEnteprise(EntityManagerInterface $em, Request $request, EnterpriseFactory $enterpriseFactory)
  137. {
  138. $enterprise = $enterpriseFactory->createEnterprise();
  139. if ($this->getUser() !== null)
  140. $enterprise->setContact($this->getUser()->getContact());
  141. $cpv = new ContactPropertyValue();
  142. $property = $em->getRepository(Property::class)->findOneByName('Telephone');
  143. $cpv->setProperty($property);
  144. $enterprise->getContact()->addContactPropertyValue($cpv);
  145. $form = $this->createForm(EnterpriseType::class, $enterprise);
  146. $form->get('contact')->remove('email');
  147. $form->get('contact')->add('email', null, ['attr' => ['class' => 'form-control', 'readonly' => true, 'placeholder' => 'Email']]);
  148. $form->handleRequest($request);
  149. if ($form->isSubmitted() and $form->isValid()) {
  150. $loc = $enterprise->getLocation();
  151. $em->persist($loc);
  152. $enterprise->setLocation($loc);
  153. $em->persist($enterprise);
  154. $em->flush();
  155. $this->getUser()->getContact()->setEnterprise($enterprise);
  156. $em->flush();
  157. return $this->redirectToRoute('espace_ce_general');
  158. }
  159. return $this->render('espace_ce/formCreationCompte.html.twig', [
  160. 'form' => $form->createView(),
  161. 'pageTitle' => 'Création du compte partenaire'
  162. ]);
  163. }
  164. /**
  165. * @Route("espace-ce-vue-option/{id}",name="espace_ce_vue_option")
  166. */
  167. public function ajoutInscriptionParent2(
  168. EntityManagerInterface $em,
  169. int $id,
  170. ParentFactory $pf,
  171. EnfantFactory $ef,
  172. UpdateOptionCeSession $uocs,
  173. Request $request,
  174. PasswordGenerator $pg,
  175. UserPasswordEncoderInterface $encoder,
  176. MessageBusInterface $bus,
  177. MailerInterface $mailer,
  178. CommandeSessionStorage $css
  179. ): Response {
  180. $option = $em->getRepository(EnterpriseOptionSejourSession::class)->findOneById($id);
  181. //TODO: mettre voters.
  182. $parent = $pf->createContact();
  183. $enfant = $ef->createContact();
  184. $sejourSession = $option->getSejourSession();
  185. $inscription = new Inscription();
  186. $inscription->setSejourSession($sejourSession);
  187. $inscription->setEnterpriseOptionSejourSession($option);
  188. $inscription->setParent($parent);
  189. $commande = new Commande();
  190. $commande->addInscription($inscription);
  191. $em->persist($commande);
  192. $em->persist($inscription);
  193. $em->flush();
  194. $uocs->updateSingleOption($option);
  195. $em->flush();
  196. return $this->redirectToRoute("mesCommande_infos_ce");
  197. }
  198. /**
  199. * @Route("/espace-ce/nouvelle_demande",name="espace_ce_nouvelle_demande")
  200. */
  201. public function nouvelleDemande(Request $request, EntityManagerInterface $em, MessageBusInterface $bus)
  202. {
  203. $er = new EnterpriseRequest();
  204. $er->setEnterprise($this->getUser()->getContact()->getEnterprise());
  205. $form = $this->createForm(EnterpriseRequestType::class, $er);
  206. $form->handleRequest($request);
  207. if ($form->isSubmitted() and $form->isValid()) {
  208. $url = $this->generateUrl('admin_request_index');
  209. $notif = (new Notification())
  210. ->setRole("ROLE_COMPTA")
  211. ->setTitle("Nouvelle demande de séjour collectif")
  212. ->setSubtitle($er->getEnterprise()->getName())
  213. ->setStatut(Notification::STATUT_OPEN)
  214. ->setUrl($url);
  215. $em->persist($notif);
  216. $em->persist($er);
  217. $em->flush();
  218. $bus->dispatch(new SendEmailMessage('inscription_ce_demande_collective', Inscription::class, $er->getId(), null));
  219. $this->addFlash('success', 'demande bien prise en compte');
  220. return $this->redirectToRoute('espace_ce_general');
  221. }
  222. return $this->render('espace_ce/_formDemandeGroupe.html.twig', [
  223. 'form' => $form->createView(),
  224. 'pageTitle' => 'Nouvelle demande '
  225. ]);
  226. }
  227. /**
  228. * @Route("/espace-ce/inscription-enfant/{id}", name="espace_ce_inscription_enfant")
  229. */
  230. public function ajoutInscriptionEnfant(EntityManagerInterface $em, int $id, Request $request, MessageBusInterface $bus)
  231. {
  232. $eoss = $em->getRepository(EnterpriseOptionSejourSession::class)->findOneBy([
  233. 'id' => $id,
  234. 'enterprise' => $this->getUser()->getContact()->getEnterprise()
  235. ]);
  236. if ($eoss == null) {
  237. $this->addFlash('success', 'attention, vous ne pouvez plus effectué de réservation sur cette option. Toutes les places sont dédiées');
  238. return $this->redirectToRoute('index');
  239. }
  240. if ($eoss->getNbreBooke() >= $eoss->getNbreSouhaite()) {
  241. $this->addFlash('success', 'attention, vous ne pouvez plus effectué de réservation sur cette option. Toutes les places sont dédiées');
  242. return $this->redirectToRoute('index');
  243. }
  244. $inscription = new Inscription();
  245. $inscription->setEnterpriseOptionSejourSession($eoss);
  246. $inscription->setSejourSession($eoss->getSejourSession());
  247. $inscription->setParent($this->getUser()->getContact());
  248. $form = $this->createForm(InscriptionCEType::class, $inscription);
  249. $form->remove('parent');
  250. $form->add('valider', SubmitType::class);
  251. $form->handleRequest($request);
  252. if ($form->IsSubmitted() and $form->isValid()) {
  253. $em->persist($inscription);
  254. $eoss->setNbreBooke($eoss->getNbreBooke() + 1);
  255. $em->flush();
  256. $bus->dispatch(new SendEmailMessage('email_inscription_parent_ce', Inscription::class, $inscription->getId(), $inscription->getParent()->getEmail()));
  257. $this->addFlash('success', 'inscription effectuée. Le parent va recevoir un email de connexion à l\'espace parent');
  258. return $this->redirectToRoute('espace_ce_general');
  259. }
  260. return $this->render('espace_ce/_formInscriptionEnfant.html.twig', ['form' => $form->createView(), 'pageTitle' => 'Inscription à un séjour']);
  261. }
  262. /**
  263. * @Route("/espace-ce/inscription-parent/{id}",name="espace_ce_inscription_parent")
  264. */
  265. public function ajoutInscriptionParent(
  266. int $id,
  267. EntityManagerInterface $em,
  268. Request $request,
  269. MessageBusInterface $bus,
  270. UserPasswordHasherInterface $userPasswordHasher,
  271. ) {
  272. $eoss = $em->getRepository(EnterpriseOptionSejourSession::class)->findOneBy([
  273. 'id' => $id,
  274. 'enterprise' => $this->getUser()->getContact()->getEnterprise()
  275. ]);
  276. if ($eoss == null) {
  277. $this->addFlash('success', 'attention, vous ne pouvez plus effectué de réservation sur cette option. Toutes les places sont dédiées');
  278. return $this->redirectToRoute('espace_ce_general');
  279. }
  280. if ($eoss->getNbreBooke() >= $eoss->getNbreSouhaite()) {
  281. $this->addFlash('success', 'attention, vous ne pouvez plus effectué de réservation sur cette option. Toutes les places sont dédiées');
  282. return $this->redirectToRoute('espace_ce_general');
  283. }
  284. $inscription = new Inscription();
  285. $inscription->setEnterpriseOptionSejourSession($eoss);
  286. $inscription->setSejourSession($eoss->getSejourSession());
  287. $inscription->setStatut(Inscription::OPTION);
  288. $form = $this->createForm(InscriptionCEType::class, $inscription);
  289. $form->add('valider', SubmitType::class, ['attr' => ['class' => 'btn btn-primary']]);
  290. $form->handleRequest($request);
  291. if ($form->IsSubmitted() and $form->isValid()) {
  292. $debutSejour = $inscription->getSejourSession()->getDateDebut();
  293. $age = $inscription->getEnfant()->getAgeComplete($debutSejour);
  294. $age2 = $inscription->getEnfant()->getAge();
  295. $dateNaissance = $inscription->getEnfant()->getBirthDate();
  296. //$age = date_diff($dateNaissance, $debutSejour)->y;
  297. $sejour = $inscription->getSejourSession()->getSejour();
  298. if ($age < $sejour->getAgeMin() || $age2 > $sejour->getAgeMax()) {
  299. $this->addFlash('warning', 'Votre enfant n\'a pas l\'âge requis pour le séjour L\'enfant a ' . $age . ' ans . Pour le séjour son âge doit être entre ' . $sejour->getAgeMin() . ' et ' . $sejour->getAgeMax() . ' ans');
  300. return $this->render('espace_ce/_formInscriptionEnfant.html.twig', ['form' => $form->createView(), 'pageTitle' => 'Inscription à un séjour']);
  301. }
  302. $email = $inscription->getParent()->getEmail();
  303. $contact = $em->getRepository(Contact::class)->findOneByEmail($email);
  304. if ($contact !== null) {
  305. $inscription->setParent($contact);
  306. if ($contact->getUser() == null) {
  307. $user = new User();
  308. $user->setContact($contact);
  309. $user->addRole(User::ROLE_PARENT);
  310. $user->setEmail($contact->getEmail());
  311. $user->setIsVerified(true);
  312. $password = $userPasswordHasher->hashPassword($user, uniqid());
  313. $user->setPassword($password);
  314. $inscription->getParent()->setUser($user);
  315. }
  316. } else {
  317. $contact = $inscription->getParent();
  318. $user = new User();
  319. $user->setContact($contact);
  320. $user->addRole(User::ROLE_PARENT);
  321. $user->setEmail($contact->getEmail());
  322. $user->setIsVerified(true);
  323. $password = $userPasswordHasher->hashPassword($user, uniqid());
  324. $user->setPassword($password);
  325. $contact->setUser($user);
  326. $inscription->setParent($contact);
  327. }
  328. $inscription->getEnfant()->setParent($inscription->getParent());
  329. $em->persist($inscription);
  330. $eoss->setNbreBooke($eoss->getNbreBooke() + 1);
  331. $em->flush();
  332. $bus->dispatch(new SendEmailMessage('email_inscription_parent_ce', Inscription::class, $inscription->getId(), $inscription->getParent()->getEmail()));
  333. $this->addFlash('success', 'inscription effectuée. Le parent va recevoir un email de connexion à l\'espace parent');
  334. return $this->redirectToRoute('espace_ce_general');
  335. }
  336. return $this->render('espace_ce/_formInscriptionEnfant.html.twig', ['form' => $form->createView(), 'pageTitle' => 'Inscription à un séjour']);
  337. }
  338. /**
  339. * @Route("/espace-ce/upload/{id}",name="espace_ce_upload_fichier")
  340. */
  341. public function uploadFichier(Request $request, EntityManagerInterface $em, $id, SluggerInterface $slugger)
  342. {
  343. $option = $em->getRepository(EnterpriseOptionSejourSession::class)->findOneById($id);
  344. $this->denyAccessUnlessGranted('POST_EDIT', $option);
  345. $form = $this->createForm(FileUploadType::class);
  346. $form->handleRequest($request);
  347. if ($form->isSubmitted() and $form->isValid()) {
  348. $file = $request->files->get('file_upload')["file"];
  349. $originalFilename = pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME);
  350. // this is needed to safely include the file name as part of the URL
  351. $safeFilename = $slugger->slug($originalFilename);
  352. $newFilename = $safeFilename . '-' . uniqid() . '.' . $file->guessExtension();
  353. // Move the file to the directory where brochures are stored
  354. try {
  355. $file->move(
  356. $this->getParameter('import_directory'),
  357. $newFilename
  358. );
  359. } catch (FileException $e) {
  360. dump($e);
  361. // ... handle exception if something happens during file upload
  362. }
  363. $file = IOFactory::load($this->getParameter('import_directory') . "/" . $newFilename);
  364. $data = [];
  365. foreach ($file->getWorksheetIterator() as $worksheet) {
  366. $worksheetTitle = "import";
  367. $data[$worksheetTitle] = [
  368. 'columnNames' => [],
  369. 'columnValues' => [],
  370. ];
  371. foreach ($worksheet->getRowIterator() as $row) {
  372. $rowIndex = $row->getRowIndex();
  373. if ($rowIndex > 2) {
  374. $data[$worksheetTitle]['columnValues'][$rowIndex] = [];
  375. }
  376. $cellIterator = $row->getCellIterator();
  377. $cellIterator->setIterateOnlyExistingCells(false); // Loop over all cells, even if it is not set
  378. foreach ($cellIterator as $cell) {
  379. if ($rowIndex === 2) {
  380. $data[$worksheetTitle]['columnNames'][] = $cell->getValue();
  381. }
  382. if ($rowIndex > 2) {
  383. $data[$worksheetTitle]['columnValues'][$rowIndex][] = $cell->getValue();
  384. }
  385. }
  386. }
  387. }
  388. $data = $data["import"];
  389. $error = [];
  390. $sejourSession = $option->getSejourSession();
  391. $nbreInscription = count($option->getInscriptions());
  392. foreach ($data as $inscriptionRaw) {
  393. if (count($inscriptionRaw) == 0) continue;
  394. $nbreInscription++;
  395. //session a assez de place
  396. $placesDispo = $sejourSession->getPlaceDispo();
  397. if ($placesDispo <= 0)
  398. $error[] = "Aucune place de disponible sur ce séjour";
  399. //options a encore des places
  400. $placesAvailable = $option->getNbreSouhaite();
  401. if ($nbreInscription >= $placesAvailable)
  402. $error[] = "Vous avez alloué tous vos séjours:";
  403. //enfants passe dans l'age
  404. $age = 8;
  405. $age2 = 8;
  406. $sejour = $sejourSession->getSejour();
  407. if ($age < $sejour->getAgeMin() || $age2 > $sejour->getAgeMax()) {
  408. $error[] = 'Votre enfant n\'a pas l\'âge requis pour le séjour L\'enfant a ' . $age . ' ans . Pour le séjour son âge doit être entre ' . $sejour->getAgeMin() . ' et ' . $sejour->getAgeMax() . ' ans';
  409. }
  410. if (count($error) > 0) {
  411. $this->addFlash("warning", implode("\n", $error));
  412. } else {
  413. $user = $em->getRepository(User::class)->findOneByEmail($inscriptionRaw[3]);
  414. if ($user == null) {
  415. $contact = (new Contact())
  416. ->setEmail($inscriptionRaw[3])
  417. ->setFirstName($inscriptionRaw[1])
  418. ->setLastName($inscriptionRaw[2])
  419. ->setSexe($inscriptionRaw[0] == "Md" ? "F" : "M");
  420. $user = (new User())
  421. ->setEmail($inscriptionRaw[3])
  422. ->setContact($contact)
  423. ->setIsActive(true)
  424. ->setRoles(["ROLE_USER"])
  425. ->setPassword(uniqid());
  426. $enfant = (new Contact())
  427. ->setSexe($inscriptionRaw[9] == "M" ? "M" : "F")
  428. ->setFirstName($inscriptionRaw[10])
  429. ->setLastName($inscriptionRaw[11])
  430. ->setBirthDate((new \DateTime())->setTimestamp(($inscriptionRaw[12] - 25569) * 86400));
  431. $location = (new Location())
  432. ->setHouseNumber($inscriptionRaw[4])
  433. ->setStreet($inscriptionRaw[5])
  434. ->setZipCode($inscriptionRaw[6])
  435. ->setCity($inscriptionRaw[7])
  436. ->setCountry($inscriptionRaw[8]);
  437. $contact->setLocation($location);
  438. $em->persist($user);
  439. } else {
  440. $exist = false;
  441. foreach ($user->getContact()->getChildren() as $child) {
  442. if ($child->getFirstName() == $inscriptionRaw[10] and $child->getLastName() == $inscriptionRaw[11]) {
  443. $exist = true;
  444. $enfant = $child;
  445. }
  446. }
  447. if (!$exist) {
  448. $enfant = (new Contact())
  449. ->setBirthDate((new \DateTime())->setTimestamp(($inscriptionRaw[12] - 25569) * 86400))
  450. ->setFirstName($inscriptionRaw[10])
  451. ->setLastName($inscriptionRaw[11]);
  452. $user->getContact()->addChild($enfant);
  453. }
  454. }
  455. $inscription = new Inscription();
  456. $inscription->setEnterpriseOptionSejourSession($option)
  457. ->setEnfant($enfant)
  458. ->setParent($user->getContact())
  459. ->setSejourSession($option->getSejourSession());
  460. $inscription->setStatut("option");
  461. $em->persist($inscription);
  462. }
  463. }
  464. $em->flush();
  465. $this->addFlash('success', 'import effectué avec succès');
  466. return $this->redirectToRoute('espace_ce_general');
  467. }
  468. return ($this->render('frontend/form.html.twig', ['form' => $form->createView(), 'pageTitle' => 'Import inscriptions']));
  469. }
  470. /**
  471. * @Route("/espace-ce/demande_sejour_individuel",name="espace_ce_demande_sejour_individuel")
  472. */
  473. public function demandeSejourIndividuel(Request $request, EntityManagerInterface $em, MessageBusInterface $bus)
  474. {
  475. $eoss = new EnterpriseOptionSejourSession();
  476. $eoss->setEnterprise($this->getUser()->getContact()->getEnterprise());
  477. $eoss->setIsIndividuel(true);
  478. $date = new \Datetime();
  479. $di = new \DateInterval('P7D');
  480. $di->invert = true;
  481. $date->add($di);
  482. $eoss->setEndDate($date);
  483. $form = $this->createForm(EnterpriseOptionSejourSessionType::class, $eoss, ['places' => false]);
  484. $form->remove('endDate');
  485. $form->remove('statut');
  486. $form->add('submit', SubmitType::class, ['attr' => ['class' => 'submit bounce bounce_green mt1']]);
  487. $form->handleRequest($request);
  488. if ($form->isSubmitted() and $form->isValid()) {
  489. $notif = new Notification();
  490. $notif->setRole("ROLE_COMPTA");
  491. $notif->setStatut(Notification::STATUT_OPEN);
  492. $notif->setTitle('Nouvelle demande individuelle');
  493. $notif->setSubtitle($eoss->getEnterprise()->getName());
  494. $notif->setUrl('');
  495. $em->persist($notif);
  496. $em->persist($eoss);
  497. $em->flush();
  498. $this->addFlash('success', "Votre demande d'inscription a été enregistrée et sera étudiée prochainement. Vous recevrez un retour par mail.");
  499. //$bus->dispatch(new SendNotificationMessage('demandeContact', '', $demandeContact->getId()));
  500. return $this->redirectToRoute("espace_ce_general");
  501. }
  502. return $this->render('frontend/form.html.twig', [
  503. 'form' => $form->createView(),
  504. 'pageTitle' => 'Nouvelle demande individuelle Partenaire',
  505. 'message' => 'Pour un séjour de 2 semaines, veuillez effectuer une demande pour chaque semaine'
  506. ]);
  507. }
  508. /**
  509. * @Route("recapitulatif-sejour/{id}",name="espace_ce_recapitulatif_sejour")
  510. */
  511. public function recapitulatifSejour(EnterpriseOptionSejourSession $eoss, int $id)
  512. {
  513. $option = $eoss->findOneById($id);
  514. return $this->render('espace-ce/recapitulatif-session.html.twig', ['option' => $option]);
  515. }
  516. }