<?php
// src/Controller/AccueilController
/*
*
* Date de modification:16/05/2025
* Description:Controller LayoutAccueil 5sur5 Séjour
*
*/
namespace App\Controller;
use App\Entity\Fonctions;
use App\Entity\User;
use App\Service\AttachementService;
use App\Service\BlogService;
use App\Service\SejourService;
use App\Service\SiteService;
use App\Service\TypeProduiteService;
use App\Service\UserService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
class AccueilController extends AbstractController
{
private $typeProduiteService;
private $siteService;
private $blogService;
private $UserService;
private $sejourService;
private $attachementService;
public function __construct(TypeProduiteService $typeProduiteService, SiteService $siteService, BlogService $blogService, UserService $UserService, SejourService $sejourService, AttachementService $attachementService)
{
$this->typeProduiteService = $typeProduiteService;
$this->siteService = $siteService;
$this->blogService = $blogService;
$this->UserService = $UserService;
$this->sejourService = $sejourService;
$this->attachementService = $attachementService;
}
/**
* @Route("/Accueil5sur5", name="layoutAccueil")
* */
public function layoutAccueil()
{
return $this->render('Accueil/layoutAccueil.html.twig');
}
/**
* @Route("/Accueil5sur5/header_layoutAccueil", name="header_layoutAccueil")
*/
public function header(Request $request): Response
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
// dd($liste);
$session = $request->getSession();
$Products = $session->get("Panier");
if ($Products == Null) {
$Products = [];
}
return $this->render('Accueil/header.html.twig', [
'produit' => $liste,
'Products' => $Products,
]);
}
/**
* @Route("/Accueil5sur5/header_Parent", name="header_Parent")
*/
public function header_Parent(Request $request): Response
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
// dd($liste);
$session = $request->getSession();
$Products = $session->get("Panier");
if ($Products == Null) {
$Products = [];
}
return $this->render('Accueil/headerParents.html.twig', [
'produit' => $liste,
'Products' => $Products,
]);
}
/**
* @Route("/Accueil5sur5/headerLogin", name="headerLogin")
*/
public function headerLogin(Request $request): Response
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
// dd($liste);
$session = $request->getSession();
$Products = $session->get("Panier");
if ($Products == Null) {
$Products = [];
}
return $this->render('Accueil/headerLogin.html.twig', [
'produit' => $liste,
'Products' => $Products,
]);
}
/**
* @Route("/", name="page_Accueil")
*/
public function PageAccueil()
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
$siteservice = $this->siteService;
$site = $siteservice->getActiveSite();
$list = $this->blogService->allblog();
//dd($list);
return $this->render('Accueil/PageAccueil.html.twig', ["site" => $site, 'list' => $list, 'produit' => $liste]);
}
/**
* @Route("/Parent/", name="Parent")
*/
public function Acceuil(Request $request)
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
$siteservice = $this->siteService;
$site = $siteservice->getActiveSite();
$list = $this->blogService->allblog();
$session = $request->getSession();
$Products = $session->get("Panier");
if ($Products == Null) {
$Products = [];
}
return $this->render('Accueil/PageAccueil.html.twig', ["site" => $site, 'list' => $list, 'produit' => $liste, 'Products' => $Products]);
}
/**
* @Route("/Accueil5sur5/footer_layoutAccueil", name="footer_layoutAccueil")
*/
public function footer()
{
return $this->render('Accueil/footer.html.twig');
}
/**
* @Route("/Accompagnateur/register", name="accomp_register",methods={"POST","GET"})
*/
public function register(Request $request)
{
ini_set("max_execution_time", -1);
ini_set('memory_limit', '-1');
$em = $this->getDoctrine()->getManager();
$UserService = $this->UserService;
$SejourService = $this->sejourService;
$AttachementService = $this->attachementService;
$nom = $request->get("nom_acc");
$prenom = $request->get('prenom_acc');
$etablisment = $request->get("etablisment");
$fonction = $request->get("fonction");
$EntityFonction = $em->getRepository(Fonctions::class)->find($fonction);
if ($EntityFonction) {
$nameFonction = $EntityFonction->getName();
} else {
$nameFonction = "";
}
$adressetablisment = $request->get("adressetablisment");
// prix et reverse
$prixcnxparent = 2.90;
$prixcnxpartenaire = 0;
$reversecnxpart = 0;
$reverseventepart = 0;
$phoneacc = $request->get("phone_acc");
$mail = $request->get("email");
$password = $request->get("password");
$role = "ROLE_ACC";
$themSejour = $request->get('theme_sejour');
$adressSejour = $request->get("adress_sejour");
$codePostal = $request->get("codePostal");
$dateDebut = $request->get("date_debut_sejour");
$FinSejour = $request->get("date_fin_sejour");
$AgeDugroupe = $request->get("age_dugroupe_sejour");
$NbEnfant = $request->get("NbEnfant");
$connpay = $request->get("connpay");
if ($prixcnxparent != 0) {
$connpay == 1;
} else {
$connpay == 0;
}
$pays = $request->get("pays");
$ville = $request->get("ville");
$CODEpOSTALetablisment = $request->get("CODEpOSTALetablisment");
$villeetablisment = $request->get("villeetablisment");
$type = "ECOLES/AUTRES";
$bytes = random_bytes(5);
$passAcommpa = bin2hex($bytes);
if ($NbEnfant) {
$NbEnfant = $NbEnfant;
} else {
$NbEnfant = 0;
}
$dateSJoue = new \Datetime();
$Milliseconde = $dateSJoue->format('u');
$annes = $dateSJoue->format('y');
$joours = $dateSJoue->format('d');
$joours = $dateSJoue->format('t');
$emailaccf = "Acompa" . $annes . $joours . $Milliseconde . "@fictif.com";
//CREATION ACCOMPAGNATEUR
$accomp = $UserService->creationNewAcommpa($nom, $prenom, $etablisment, $nameFonction, $adressetablisment, $phoneacc, $emailaccf, $role, $passAcommpa, $mail);
$accomp->setIdFonction($EntityFonction);
$em->persist($accomp);
$em->flush();
//CREATION PARTENAIRE
$part = $em->getRepository(User::class)->VerifierAddresseEmailPartenaire($mail, 'ROLE_PARTENAIRE');
if (is_null($part)) {
$part = $UserService->creationNewUser($nom, $prenom, $etablisment, $nameFonction, $adressetablisment, $phoneacc, $mail, $passAcommpa, "ROLE_PARTENAIRE");
$part->setIdFonction($EntityFonction);
$em->persist($part);
$em->flush();
}
//CREATION ETABLISSEMENT + PARTENAIRE
$Etablisment = $UserService->creationNewEtablisment($part, $nom, $prenom, $etablisment, $fonction, $adressetablisment, $phoneacc, $mail, "ROLE_PARTENAIRE", $password, $prixcnxparent, $prixcnxpartenaire, $reversecnxpart, $reverseventepart);
if ($CODEpOSTALetablisment == "") {
$CODEpOSTALetablisment = null;
}
$Etablisment->setCodepostaleatb($CODEpOSTALetablisment);
$Etablisment->setVille($villeetablisment);
$em->persist($Etablisment);
$em->flush();
//CREATION SEJOUR ACCOM + PARTENAIRE + ETABILSSEMENT
if ($EntityFonction) {
if ($EntityFonction->getType() == "vip") {
$connpay = 0;
}
}
$sejour = $SejourService->CreationNouveauSejourParAccompagnateur($themSejour, $adressSejour, $dateDebut, $FinSejour, $AgeDugroupe, $type, $NbEnfant, $connpay, $pays, $ville, $prixcnxparent, $prixcnxpartenaire, $reversecnxpart, $reverseventepart);
$sejour->setCodePostal(intval($codePostal));
$SejourService->affecterAccompaniateur($sejour, $accomp);
$SejourService->affecterPartenaire($sejour, $part);
$SejourService->affecteretablisment($sejour, $Etablisment);
$em->persist($sejour);
$em->flush();
//AFFECTAION LOGO TO USER PARTENAIRE ADN ACCOMPAGNATEUR
if ($request->request->has('path')) {
$ty = "logo séjour";
$AttachementService->creationLogoSejour($accomp, $request->get('path'), $ty);
$AttachementService->creationLogoSejour($part, $request->get('path'), $ty);
}
$TypeSejour = 8;
$UserService->EnvoyerEmailSwiftAcommpatActivation($sejour,$accomp);
// $SejourService->EnvoyerEmailCodeSejourToPartenaireAndAcco($sejour->getId());
//ENVOI EMAIL ACCOMPAGNATEUR MAIL CREATION COMPTE + MEAIL CODE SEJOUR
// $SejourService->EnvoyerEmailNewAccoNewSejour($emailaccf, $accomp, $sejour->getId(), $passAcommpa);
// $SejourService->EnvoyerEmailCodeSejourAccompagnateur($sejour->getId(), $TypeSejour, $passAcommpa);
//ENVOI EMAIL PARTENAIRE CREATION COMPTE + MAIL CODE SEJOUR
//send if Active // verif l activation du l accompagnteur
;
// $SejourService->EnvoyerEmailPasswordSejourToPartenaireAndAcco($sejour->getId());
// $SejourService->EnvoyerEmailNewPartenaire($part);
// $SejourService->EnvoyerEmailCodeSejour($sejour->getId(), $TypeSejour);
// rederection
// $providerKey = 'main_Acommpa'; // your firewall name
// $token = new UsernamePasswordToken($accomp, null, $providerKey, $accomp->getRoles());
// $this->container->get('security.token_storage')->setToken($token);
//set sejour dans la session oubligatoire
$session = $request->getSession();
$session->set('Sejour', $sejour->getId());
//$this->redirectToRoute('app_back_Acommpa');
return new JsonResponse(["idSejour" => $sejour->getId()]);
}
//inscription du parent
/**
* @Route("/Parent/register", name="parent_register",methods={"POST","GET"})
*/
public function registerparent(Request $request)
{
$UserService = $this->UserService;
//
$nom = $request->get("nomparent");
$prenom = $request->get('prenomparent');
$mailparent = $request->get("mailprent");
$numtel = $request->get("numtel");
$passwordparent = $request->get("passwordparent");
$confirmpassword = $request->get("confirmpassword");
$notifsms = $request->get("sms");
$notifmail = $request->get('mailnotif');
if ($confirmpassword != $passwordparent) {
return new JsonResponse('erorpasswordconfirm');
}
$role = "ROLE_PARENT";
$verification = $UserService->verifmailold($mailparent);
//var_dump($verification);
if ($verification == NULL) {
$accomp = $UserService->creationNewParent($nom, $prenom, $mailparent, $numtel, $role, $passwordparent, $notifsms, $notifmail);
return new JsonResponse('done');
} else {
return new JsonResponse('eror');
}
}
/**
* @Route("/Accueil5sur5/5sur5", name="sur5")
*/
public function sur5()
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
//dd($liste);
return $this->render('Accueil/5sur5.html.twig', [
'produit' => $liste,
]);
}
/**
* @Route("/Parent/Accueil5sur5/5sur5", name="5sur5Parent")
*/
public function sur5Parent()
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
//dd($liste);
return $this->render('Accueil/5sur5.html.twig', [
'produit' => $liste,
]);
}
/**
* @Route("/Accueil5sur5/album/{id}", name="album")
*/
public function produitlist($id)
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
$produit = $id;
//dd($liste);
return $this->render('Accueil/album.html.twig', [
'produit' => $liste,
'showArt' => $produit,
]);
}
/**
* @Route("/Parent/Accueil5sur5/album/{id}", name="albumParent")
*/
public function produitlistParent($id)
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
// dd($liste);
$produit = $id;
return $this->render('Accueil/album.html.twig', [
'produit' => $liste,
'showArt' => $produit,
]);
}
/**
* @Route("/Accueil5sur5/AlaUne", name="AlaUne")
*/
public function AlaUne()
{
$blogsbolt = $this->blogService;
$list = $blogsbolt->allblog();
//dd($list);
return $this->render('Accueil/AlaUne.html.twig', ['list' => $list]);
}
/**
* @Route("/Parent/Accueil5sur5/AlaUne", name="AlaUneParent")
*/
public function AlaUneParent()
{
$blogsbolt = $this->blogService;
$list = $blogsbolt->allblog();
//dd($list);
return $this->render('Accueil/AlaUneParent.html.twig', ['list' => $list]);
}
/**
* @Route("/Accueil5sur5/DetailsAlaUne/{id}", name="DetailsAlaUne")
*/
public function DetailsAlaUne($id)
{
$blo = $this->blogService;
$blog = $blo->myblog($id);
return $this->render('Accueil/DetailsAlaUne.html.twig', ['blog' => $blog]);
}
/**
* @Route("/ServiceClient", name="ServiceClient")
* */
public function ServiceClient()
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
// dd($liste);
return $this->render('Accueil/ServiceClient.html.twig', [
'produit' => $liste,
]);
}
/**
* @Route("/Besoindaide", name="Besoindaide")
*/
public function Besoindaide(): Response
{
$produit = $this->typeProduiteService;
$liste = $produit->produitlistType();
// dd($liste);
return $this->render('Accueil/Besoindaide.html.twig', [
'produit' => $liste,
]);
}
/**
* @Route("/Mentionlegale", name="Mentionlegale")
*/
public function Mentionlegale()
{
return $this->render('Accueil/mentionlegal.html.twig', []);
}
/**
* @Route("/Conditongeneral", name="Conditongeneral")
*/
public function Conditongeneral()
{
return $this->render('Accueil/Condition.html.twig', []);
}
/**
* @Route("/Politique", name="Politique")
*/
public function Politique()
{
return $this->render('Accueil/politique.html.twig', []);
}
}