src/Controller/Controller_Frontoffice/Utilisateur/UtilisateurController.php line 985
<?php
namespace App\Controller\Controller_Frontoffice\Utilisateur;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Commande;
use App\Entity\Membres;
use App\Entity\Newsletter;
use App\Entity\Panier;
use App\Entity\Token;
use App\Entity\Articles;
use App\Entity\CodePromo;
use App\Entity\HistoriquePrixArticle;
use App\Entity\Images;
use App\Entity\Slider;
use App\Entity\SousCategories;
use App\Entity\Entreprise;
use App\Entity\Categories;
use App\Service\SendMailService;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\Serializer\SerializerInterface;
use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
class UtilisateurController extends AbstractController
{
private $clientRegistry;
public function __construct(ClientRegistry $clientRegistry , CsrfTokenManagerInterface $csrfTokenManager,int $length = 12)
{
$this->clientRegistry = $clientRegistry;
$this->length = $length;
$this->characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$this->csrfTokenManager = $csrfTokenManager;
}
#[Route('/connect/google', name: 'connect_google_start')]
public function connectGoogle(): RedirectResponse
{
return $this->clientRegistry
->getClient('google')
->redirect([], []);
}
#[Route('/connect/google/check', name: 'connect_google_check')]
public function connectGoogleCheck(EntityManagerInterface $entityManager): RedirectResponse
{
$session = new Session();
$client = $this->clientRegistry->getClient('google');
$panier = array();
if($session->get("panier")){
$panier = $session->get("panier");
}
try {
$password = '';
$maxIndex = strlen($this->characters) - 1;
for ($i = 0; $i < $this->length; $i++) {
$password .= $this->characters[random_int(0, $maxIndex)];
}
$user = $client->fetchUser();
// Extract information from the GoogleUser object
$response = $user->toArray();
$email = $response['email'];
$prenom = $response['given_name'];
$nom = $response['family_name'];
$fullName = $response['name'];
$profilePicture = $response['picture'];
$emailVerified = $response['email_verified'];
$repository = $entityManager->getRepository(Membres::class);
$membre = $repository->findOneBy(array("email"=>$email));
if(!$membre){
// Create new member entity and set its properties
$membre = new Membres();
$membre->setEtat(1);
$membre->setEmail($email);
$membre->setAdresse('');
$membre->setAdresseComplement('');
$membre->setVille('');
$membre->setCnss(0);
$membre->setCodeType(1);
$membre->setDateCreation(new \DateTime());
$membre->setIce(0);
$membre->setIdentifiantF(0);
$membre->setLan(0);
$membre->setLat(0);
$membre->setNom($prenom);
$membre->setPassword(md5($password));
$membre->setPattente(0);
$membre->setPrenom($nom);
$membre->setRc("");
//$membre->setRs("");
$membre->setTokenId(0);
$membre->setType('Particulier');
$membre->setTel("");
$entityManager->persist($membre);
$entityManager->flush();
//------------ création du panier ----------//
if($membre->getEtat() == 1){
$commande = new Commande();
$commande->setDateCommande(new \DateTime());
$commande->setIdMembre($membre->getId());
$commande->setTotal(0);
$commande->setEtat(0);
$commande->setValidationUser(0);
$commande->setCodePromo("");
$commande->setLivraison(0);
$commande->setPromo(0);
$entityManager->persist($commande);
$entityManager->flush();
//-------INITIALISATION DU PANIER--------//
$repository = $entityManager->getRepository(Commande::class);
$commande = $repository->findOneBy(array("idMembre"=>$membre->getId(),"validationUser"=>0));
if($commande){
//-------Ajout de l'ancien panier et du nouveau-------//
$repository = $entityManager->getRepository(Panier::class);
$pan = $repository->findBy(array("idCommande"=>$commande->getId()));
for($i=0;$i<count($pan);$i++){
if (array_key_exists($pan[$i]->getIdArticle(), $panier) == false) {
$panier[$pan[$i]->getIdArticle()] = $pan[$i];
//-----mettre les articles dans le petit panier
$repository = $entityManager->getRepository(Articles::class);
$t = $repository->findOneById($pan[$i]->getIdArticle());
$petitpan[$pan[$i]->getIdArticle()]['produit'] = $t;
$petitpan[$pan[$i]->getIdArticle()]["panier"] = $pan[$i];
}
}
$total = 0;
foreach ($panier as $p){
$repository = $entityManager->getRepository(Articles::class);
$article = $repository->findOneById($p->getIdArticle());
if($article){
$q = $p->getQte();
$prixU = 0;
if($membre->getCodeType() == 1){
$prixU = $article->getPrixTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixTTC()){
$prixU = $article->getPrixPromo();
}
}else{
$prixU = $article->getPrixProTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixProTTC()){
$prixU = $article->getPrixPromo();
}
}
$total = $total + ($prixU * $q);
$repository = $entityManager->getRepository(Panier::class);
$pan = $repository->findOneBy(array("idArticle"=>$p->getIdArticle(),"idCommande"=>$commande->getId()));
if($pan){
$pan->setQte($q);
$pan->setPrixU($prixU);
$t = $prixU * $q;
$pan->setPrixTotal($t);
$entityManager->flush();
}
else{
$t = $prixU * $q;
$p->setPrixU($prixU);
$p->setPrixTotal($t);
$p->setIdCommande($commande->getId());
$entityManager->persist($p);
$entityManager->flush();
}
}
}
$repository = $entityManager->getRepository(Entreprise::class);
$entreprise = $repository->findOneById(1);
$livraison = 0;
if($total <= $entreprise->getPrixMinCmd() && $total > 0){
$livraison = $entreprise->getFraisLivraison();
}
if($total > $entreprise->getPrixMinCmd2()){
$livraison = $entreprise->getFraisLivraison2();
}
$commande->setLivraison($livraison);
$commande->setTotal($total);
$entityManager->flush();
$session->set("panier",$panier);
$session->set("connectU","OK");
$session->set("userU",$membre);
$session->set("commande",$commande->getId());
}
}
else{
$response = "Votre compte a été créer avec succès, Il sera validé dans les plus brefs délais.";
}
return $this->redirect("/monProfil");
}else{
$session->set("connectU","OK");
$session->set("userU",$membre);
return $this->redirect("/monProfil");
}
} catch (IdentityProviderException $e) {
var_dump($e->getMessage());
return $this->redirectToRoute('/');
}
}
#[Route('/connect/facebook', name: 'connect_facebook_start')]
public function connectFacebook(): RedirectResponse
{
$session = new Session();
$state = $this->csrfTokenManager->getToken('facebook')->getValue();
$session->set('oauth2state', $state);
return $this->clientRegistry
->getClient('facebook')
->redirect([], ['state' => $state]);
}
#[Route('/connect/facebook/check', name: 'connect_facebook_check')]
public function connectFacebookCheck(EntityManagerInterface $entityManager): RedirectResponse
{
$session = new Session();
$client = $this->clientRegistry->getClient('facebook');
$panier = array();
if($session->get("panier")){
$panier = $session->get("panier");
}
$state = $session->get('oauth2state');
if (empty($state)) {
$session->remove('oauth2state');
throw new \RuntimeException('Invalid state');
}
try {
$password = '';
$maxIndex = strlen($this->characters) - 1;
for ($i = 0; $i < $this->length; $i++) {
$password .= $this->characters[random_int(0, $maxIndex)];
}
$user = $client->fetchUser();
$facebookData = $user->toArray();
$email = $facebookData['email'] ?? null;
$firstName = $facebookData['first_name'] ?? null;
$lastName = $facebookData['last_name'] ?? null;
$profilePicture = $facebookData['picture']['data']['url'] ?? null;
$repository = $entityManager->getRepository(Membres::class);
$membre = $repository->findOneBy(array("email"=>$email));
if(!$membre){
// Create new member entity and set its properties
$membre = new Membres();
$membre->setEtat(1);
$membre->setEmail($email);
$membre->setAdresse('');
$membre->setAdresseComplement('');
$membre->setVille('');
$membre->setCnss(0);
$membre->setCodeType(1);
$membre->setDateCreation(new \DateTime());
$membre->setIce(0);
$membre->setIdentifiantF(0);
$membre->setLan(0);
$membre->setLat(0);
$membre->setNom($lastName);
$membre->setPassword(md5($password));
$membre->setPattente(0);
$membre->setPrenom($firstName);
$membre->setRc("");
//$membre->setRs("");
$membre->setTokenId(0);
$membre->setType('Particulier');
$membre->setTel("");
$entityManager->persist($membre);
$entityManager->flush();
//------------ création du panier ----------//
if($membre->getEtat() == 1){
$commande = new Commande();
$commande->setDateCommande(new \DateTime());
$commande->setIdMembre($membre->getId());
$commande->setTotal(0);
$commande->setEtat(0);
$commande->setValidationUser(0);
$commande->setCodePromo("");
$commande->setLivraison(0);
$commande->setPromo(0);
$entityManager->persist($commande);
$entityManager->flush();
//-------INITIALISATION DU PANIER--------//
$repository = $entityManager->getRepository(Commande::class);
$commande = $repository->findOneBy(array("idMembre"=>$membre->getId(),"validationUser"=>0));
if($commande){
//-------Ajout de l'ancien panier et du nouveau-------//
$repository = $entityManager->getRepository(Panier::class);
$pan = $repository->findBy(array("idCommande"=>$commande->getId()));
for($i=0;$i<count($pan);$i++){
if (array_key_exists($pan[$i]->getIdArticle(), $panier) == false) {
$panier[$pan[$i]->getIdArticle()] = $pan[$i];
//-----mettre les articles dans le petit panier
$repository = $entityManager->getRepository(Articles::class);
$t = $repository->findOneById($pan[$i]->getIdArticle());
$petitpan[$pan[$i]->getIdArticle()]['produit'] = $t;
$petitpan[$pan[$i]->getIdArticle()]["panier"] = $pan[$i];
}
}
$total = 0;
foreach ($panier as $p){
$repository = $entityManager->getRepository(Articles::class);
$article = $repository->findOneById($p->getIdArticle());
if($article){
$q = $p->getQte();
$prixU = 0;
if($membre->getCodeType() == 1){
$prixU = $article->getPrixTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixTTC()){
$prixU = $article->getPrixPromo();
}
}else{
$prixU = $article->getPrixProTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixProTTC()){
$prixU = $article->getPrixPromo();
}
}
$total = $total + ($prixU * $q);
$repository = $entityManager->getRepository(Panier::class);
$pan = $repository->findOneBy(array("idArticle"=>$p->getIdArticle(),"idCommande"=>$commande->getId()));
if($pan){
$pan->setQte($q);
$pan->setPrixU($prixU);
$t = $prixU * $q;
$pan->setPrixTotal($t);
$entityManager->flush();
}
else{
$t = $prixU * $q;
$p->setPrixU($prixU);
$p->setPrixTotal($t);
$p->setIdCommande($commande->getId());
$entityManager->persist($p);
$entityManager->flush();
}
}
}
$repository = $entityManager->getRepository(Entreprise::class);
$entreprise = $repository->findOneById(1);
$livraison = 0;
if($total <= $entreprise->getPrixMinCmd() && $total > 0){
$livraison = $entreprise->getFraisLivraison();
}
if($total > $entreprise->getPrixMinCmd2()){
$livraison = $entreprise->getFraisLivraison2();
}
$commande->setLivraison($livraison);
$commande->setTotal($total);
$entityManager->flush();
$session->set("panier",$panier);
$session->set("connectU","OK");
$session->set("userU",$membre);
$session->set("commande",$commande->getId());
}
}
else{
$response = "Votre compte a été créer avec succès, Il sera validé dans les plus brefs délais.";
}
return $this->redirect("/monProfil");
}else{
$session->set("connectU","OK");
$session->set("userU",$membre);
return $this->redirect("/monProfil");
}
} catch (IdentityProviderException $e) {
var_dump($e->getMessage());
return $this->redirectToRoute('/');
}
}
#[Route('/account', name: 'account')]
public function compteAction(EntityManagerInterface $entityManager,Request $request): Response
{
$session = new Session();
if($session->get("connectU") == "OK" && $session->get("userU") != null){
return $this->redirect("/monProfil/");
}
$panier = array();
if($session->get("panier")){
$panier = $session->get("panier");
}
$n = count($panier);
$response = "";
if($request->getMethod() == "POST"){
$email = $request->get("email");
$password = $request->get("password");
$repository = $entityManager->getRepository(Membres::class);
$membre = $repository->findOneBy(array("email"=>$email,"password"=>md5($password)));
if($membre){
if($membre->getEtat() == 0){
$response = "Votre compte n'est pas actif ! veuillez nous contacter pour avoir plus de details";
}
else{
$session->set("connectU","OK");
$session->set("userU",$membre);
//-------INITIALISATION DU PANIER--------//
$repository = $entityManager->getRepository(Commande::class);
$commande = $repository->findOneBy(array("idMembre"=>$membre->getId(),"validationUser"=>0));
if($commande){
//-------Ajout de l'ancien panier et du nouveau-------//
$repository = $entityManager->getRepository(Panier::class);
$pan = $repository->findBy(array("idCommande"=>$commande->getId()));
for($i=0;$i<count($pan);$i++){
if (array_key_exists($pan[$i]->getIdArticle(), $panier) == false) {
$panier[$pan[$i]->getIdArticle()] = $pan[$i];
//-----mettre les articles dans le petit panier
$repository = $entityManager->getRepository(Articles::class);
$t = $repository->findOneById($pan[$i]->getIdArticle());
$petitpan[$pan[$i]->getIdArticle()]['produit'] = $t;
$petitpan[$pan[$i]->getIdArticle()]["panier"] = $pan[$i];
}
}
$total = 0;
foreach ($panier as $p){
$repository = $entityManager->getRepository(Articles::class);
$article = $repository->findOneById($p->getIdArticle());
if($article){
$q = $p->getQte();
$prixU = 0;
if($membre->getCodeType() == 1){
$prixU = $article->getPrixTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixTTC()){
$prixU = $article->getPrixPromo();
}
}else{
$prixU = $article->getPrixProTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixProTTC()){
$prixU = $article->getPrixPromo();
}
}
$total = $total + ($prixU * $q);
$repository = $entityManager->getRepository(Panier::class);
$pan = $repository->findOneBy(array("idArticle"=>$p->getIdArticle(),"idCommande"=>$commande->getId()));
if($pan){
$pan->setQte($q);
$pan->setPrixU($prixU);
$t = $prixU * $q;
$pan->setPrixTotal($t);
$entityManager->flush();
}
else{
$t = $prixU * $q;
$p->setPrixU($prixU);
$p->setPrixTotal($t);
$p->setIdCommande($commande->getId());
$entityManager->persist($p);
$entityManager->flush();
}
}
}
$repository = $entityManager->getRepository(Entreprise::class);
$entreprise = $repository->findOneById(1);
$livraison = 0;
if($total <= $entreprise->getPrixMinCmd() && $total > 0){
$livraison = $entreprise->getFraisLivraison();
}
if($total > $entreprise->getPrixMinCmd2()){
$livraison = $entreprise->getFraisLivraison2();
}
$commande->setLivraison($livraison);
$commande->setTotal($total);
$entityManager->flush();
$session->set("panier",$panier);
//$session->set("petitpan",$petitpan);
$session->set("commande",$commande->getId());
}
else{
$commande = new Commande();
$commande->setDateCommande(new \DateTime());
$commande->setIdMembre($membre->getId());
$commande->setTotal(0);
$commande->setEtat(0);
$commande->setValidationUser(0);
$commande->setCodePromo("");
$commande->setLivraison(0);
$commande->setPromo(0);
$entityManager->persist($commande);
$entityManager->flush();
$total = 0;
foreach ($panier as $p) {
$repository = $entityManager->getRepository(Articles::class);
$article = $repository->findOneById($p->getIdArticle());
if($article){
$q = $p->getQte();
$prixU = 0;
if($membre->getCodeType() == 1){
$prixU = $article->getPrixTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixTTC()){
$prixU = $article->getPrixPromo();
}
}else{
$prixU = $article->getPrixProTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixProTTC()){
$prixU = $article->getPrixPromo();
}
}
$p->setPrixU($prixU);
$total = $total + ($prixU * $q);
$p->setPrixTotal($prixU * $q);
$p->setIdCommande($commande->getId());
$entityManager->persist($p);
$entityManager->flush();
}
}
$repository = $entityManager->getRepository(Entreprise::class);
$entreprise = $repository->findOneById(1);
$livraison = 0;
if($total <= $entreprise->getPrixMinCmd() && $total > 0){
$livraison = $entreprise->getFraisLivraison();
}
if($total > $entreprise->getPrixMinCmd2()){
$livraison = $entreprise->getFraisLivraison2();
}
$commande->setLivraison($livraison);
$commande->setTotal($total);
$entityManager->flush();
$session->set("commande",$commande->getId());
}
return $this->redirect("/monProfil/");
}
}
else{
$response = "Login ou mot de passe incorrect !";
}
}
return $this->render('frontoffice_bundle/utilisateur/compte.html.twig', array('controller_name' => 'UtilisateurController',"response"=>$response,"npanier"=>$n));
}
#[Route('/account/new/{type}/', name: 'account_new')]
public function inscriptionAction($type, EntityManagerInterface $entityManager,Request $request): Response
{
$session = new Session();
if($session->get("connectU") == "OK" && $session->get("userU") != null){
return $this->redirect("/monProfil/");
}
$panier = array();
if($session->get("panier")){
$panier = $session->get("panier");
}
$n = count($panier);
if($type != "Professionnel" && $type != "Particulier"){
return $this->redirect("/account/");
}
$panier = array();
if($session->get("panier")){
$panier = $session->get("panier");
}
$response = "";
if($request->getMethod() == "POST"){
$nom = $request->get("nom");
$prenom = $request->get("prenom");
$tel = $request->get("tel");
$adresse = $request->get("adresse");
$adresse1 = $request->get("complementAdresse");
$ville = $request->get("ville");
$email = $request->get("email");
$password1 = $request->get("password1");
$password2 = $request->get("password2");
$rs = "";
$rc = "";
$if = "";
$pattente = "";
$cnss = "";
$ice = "";
$etat = 1;
$code = 1;
$this->get_lat_long($adresse." ".$adresse1,$ville);
$ifAllOk = true;
if(empty($nom) || empty($prenom) || empty($tel) || empty($adresse) || empty($adresse1) || empty($ville) || empty($email) || empty($password1) || empty($password2)){
$ifAllOk = false;
}
if($type == "Professtionnel"){
$rs = $request->get("rs");
$rc = $request->get("rc");
$if = $request->get("if");
$pattente = $request->get("pattente");
$cnss = $request->get("cnss");
$ice = $request->get("ice");
$etat = 0;
$code = 2;
if(empty($rs) || empty($rc) || empty($if) || empty($pattente) || empty($cnss) || empty($ice)){
$ifAllOk = false;
}
}
if($ifAllOk){
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
$repository = $entityManager->getRepository(Membres::class);
$membre = $repository->findOneByEmail($email);
if($membre){
$response = "Utilisateur existant dans notre base de données";
}
else{
if(strlen($password1) >= 8){
if($password1 == $password2){
$latlong = $this->get_lat_long($adresse." ".$adresse1,$ville);
$map = explode(',' ,$latlong);
$mapLat = $map[0];
$mapLong = $map[1];
$membre = new Membres();
$membre->setEtat($etat);
$membre->setEmail($email);
$membre->setAdresse($adresse1);
$membre->setAdresseComplement($adresse1);
$membre->setVille($ville);
$membre->setCnss($cnss);
$membre->setCodeType($code);
$membre->setDateCreation(new \DateTime());
$membre->setIce($ice);
$membre->setIdentifiantF($if);
$membre->setLan($mapLong);
$membre->setLat($mapLat);
$membre->setNom($nom);
$membre->setPassword(md5($password1));
$membre->setPattente($pattente);
$membre->setPrenom($prenom);
$membre->setRc($rc);
// $membre->setRs($rs);
$membre->setTokenId(0);
$membre->setType($type);
$membre->setTel($tel);
$entityManager->persist($membre);
$entityManager->flush();
//------------ création du panier ----------//
if($etat == 1){
$commande = new Commande();
$commande->setDateCommande(new \DateTime());
$commande->setIdMembre($membre->getId());
$commande->setTotal(0);
$commande->setEtat(0);
$commande->setValidationUser(0);
$commande->setCodePromo("");
$commande->setLivraison(0);
$commande->setPromo(0);
$entityManager->persist($commande);
$entityManager->flush();
$total = 0;
foreach ($panier as $p) {
$repository = $entityManager->getRepository(Articles::class);
$article = $repository->findOneById($p->getIdArticle());
if($article){
$q = $p->getQte();
$prixArticle = $article->getPrixTTC();
if($article->getPrixPromo() > 0 && $article->getPrixPromo() < $article->getPrixTTC()){
$prixArticle = $article->getPrixPromo();
}
$p->setPrixU($prixArticle);
$total = $total + ($prixArticle * $q);
$p->setPrixTotal($prixArticle * $q);
$p->setIdCommande($commande->getId());
$entityManager->persist($p);
$entityManager->flush();
}
}
$repository = $entityManager->getRepository(Entreprise::class);
$entreprise = $repository->findOneById(1);
$livraison = 0;
if($total <= $entreprise->getPrixMinCmd() && $total > 0){
$livraison = $entreprise->getFraisLivraison();
}
if($total > $entreprise->getPrixMinCmd2()){
$livraison = $entreprise->getFraisLivraison2();
}
$commande->setLivraison($livraison);
$commande->setTotal($total);
$entityManager->flush();
$session->set("connectU", "OK");
$session->set("userU", $membre);
$session->set("commande", $commande->getId());
return $this->Redirect('/monProfil/');
}
else{
$response = "Votre compte a été créer avec succès, Il sera validé dans les plus brefs délais.";
}
}
else{
$response = "Les deux mots de passe ne sont pas identiques !";
}
}
else{
$response = "Le mot de passe doit comprendre 8 caractères au minimum !";
}
}
}
else{
$response = "Adresse email invalide !";
}
}
else{
$response = "Un des champs est vide !";
}
}
return $this->render('frontoffice_bundle/utilisateur/inscription.html.twig', array('controller_name' => 'UtilisateurController',"npanier"=>$n,"type"=>$type,"response"=>$response));
}
private function get_lat_long($address,$ville)
{
$address = str_replace(" ", "+", $address." ".$ville);
// $json = file_get_contents("http://maps.google.com/maps/api/geocode/json?address=$address&sensor=false®ion=$ville&key=AIzaSyCHSOeo1mvoLyLbWUUCqi9jFyu4NCxqk5o");
$json = file_get_contents("https://api.geoapify.com/v1/geocode/search?street=$address&postcode=11000&city=$ville&country=Maroc&format=json&apiKey=1cea42924b5f4366b8919ff4272cff58");
$json = json_decode($json);
$lat = null;
$long = null;
if(($json->{'results'}[0])){
$lat = $json->{'results'}[0]->{'lat'};
$long = $json->{'results'}[0]->{'lon'};
}
return $lat.','.$long;
}
#[Route('/deconnect', name: 'deconnect')]
public function deconnectAction(EntityManagerInterface $entityManager,Request $request): Response
{
$session = new Session();
$session->set("connectU","NO");
$session->set("userU","");
return $this->Redirect('/');
}
#[Route('/contact', name: 'contact')]
public function contactAction(Request $request,SendMailService $sendMailService)
{
$session = new Session();
$destinataire = $request->get("email");
$Sujet = $request->get("subject");
$Message = $request->get("message");
$Prenom = $request->get("name");
$panier = array();
if($session->get("panier")){
$panier = $session->get("panier");
}
$n = count($panier);
if($destinataire)
{
$sendMailService->sendEmailContact($destinataire, $Sujet, $Message,$Prenom);
}
return $this->render('frontoffice_bundle/utilisateur/contact.html.twig', array("npanier"=>$n));
}
#[Route('/updatePassword', name: 'updatePassword')]
public function updatepasswordAction(EntityManagerInterface $entityManager,Request $request): Response
{
$session = new Session();
if($session->get("connectU") == "OK" && $session->get("userU") != null){
return $this->redirect("/monProfil/");
}
$panier = array();
if($session->get("panier")){
$panier = $session->get("panier");
}
$n = count($panier);
$response = "";
if($request->getMethod() == "POST"){
$email = $request->get("email");
if (!filter_var($email, FILTER_VALIDATE_EMAIL)){
$response = "Adresse email invalide";
}
else{
$repository = $entityManager->getRepository(Membres::class);
$us = $repository->findOneBy(array("email"=>$email));
if($us){
$repository = $entityManager->getRepository(Token::class);
$token = $repository->findOneByIdMembre($us->getId());
$t = "";
if($token){
$t = $token->getToken();
}
else{
$date = new \DateTime();
$d = date_format($date, "Y-m-d H:i");
$t = md5($us->getEmail().$us->getId().$d);
$token = new Token();
$token->setToken($t);
$token->setEmail($email);
$token->setDate(new \DateTime());
$token->setIdMembre($us->getId());
$entityManager->persist($token);
$entityManager->flush();
}
$to = $email;
$subject = "Mot de passe oublié";
$message = "\n";
$message = $message."Bonjour ".$us->getNom();
$message = $message." \n\n"."Vous pouvez reinitialiser votre mot de passe en cliquant sur ce lien : http://www.epicerie-rabat.ma/reset/".$t."/?id=".$us->getId();
$message = $message." \n\n\n\n"."Epicerie de Rabat : ";
$entetedate = date("D, j M Y H:i:s -0600");
$headers = 'From: support@epicerie-rabat.ma '. "\n";
$headers = $headers."Date: ".$entetedate." \n";
if(mail($to, $subject, $message, $headers)){
$response = "OK";
}
else{
$response = "NO";
}
}
else{
$response = "Cette adresse email ne figure pas dans notre base de données";
}
}
}
return $this->render('frontoffice_bundle/utilisateur/updatepassword.html.twig', array("response"=>$response,"npanier"=>$n));
}
}