<?php
// src/Controller/EntrepriseController.php
namespace App\Controller;
use App\Entity\SujetFAQ;
use App\Entity\Article;
use App\Entity\AppUser;
use App\Entity\Product;
use App\Entity\Review;
use App\Entity\Category;
use App\Entity\Commande;
use App\Entity\Service;
use App\Entity\Notification;
use App\Entity\Conversation;
use App\Entity\ProductOrder;
use App\Entity\Entreprise;
use App\Entity\ProductMisDeCote;
use App\Entity\SubCategory;
use App\Entity\AvisUtilisateur;
use App\Form\SujetFAQType;
use App\Form\AvisUtilisateurType;
use App\Form\AvisUtilisateurEditType;
use App\Form\ProductType;
use App\Entity\ShippingMethod;
use App\Entity\RoleBoutique;
use App\Entity\Boutique;
use App\Form\BoutiqueType;
use App\Entity\Plan;
use App\Entity\ValiditeService;
use App\Entity\UserBoutique;
use App\Entity\RequeteAjoutBoutique;
use App\Entity\TVA;
use App\Entity\ExtraSettings;
use App\Entity\Devis;
use App\Form\DevisType;
use App\Form\DevisEditType;
use Spipu\Html2Pdf\Html2Pdf;
use App\Entity\CategorieEntreprise;
use App\Entity\Produit;
use App\Entity\OffreDevis;
use App\Entity\Message;
use App\Entity\EntrepriseEnregistre;
use App\Entity\ReclamerPage;
use App\Form\OffreDevisType;
use App\Form\MessageType;
use App\Form\CompteProfessionnelFormType;
use App\Services\LikaMapService;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security as Security;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Security\Http\Authentication\UserAuthenticatorInterface;
use App\Security\LoginFormAuthenticator;
/**
* @Route("/{_locale}")
*/
class EntrepriseController extends AbstractController
{
private $session;
public function __construct(SessionInterface $session)
{
$this->session = $session;
}
/**
* @Route("/contact", name="contact")
*/
public function contactAction()
{
return $this->render('entreprise/contact.html.twig', [
]);
}
/**
* @Route("/a_propos", name="a_propos")
*/
public function aProposAction()
{
return $this->render('entreprise/a_propos.html.twig', [
]);
}
/**
* @Route("/terms-helpplace", name="terms_helpplace")
*/
public function termsHelpplaceAction()
{
return $this->render('entreprise/terms_helpplace.html.twig', [
]);
}
/**
* @Route("/nos-services", name="nos_services")
*/
public function nosServicesAction()
{
$em = $this->getDoctrine()
->getManager();
$categoriesEntreprises = $em->getRepository(CategorieEntreprise::class)
->findBy(
array(
'estSupprime' => false,
),
array('nom' => 'ASC')
);
$slidesData = array();
foreach($categoriesEntreprises as $categoriesEntreprise){
if($categoriesEntreprise->getImage() != null){
$s = array(
'img' => $categoriesEntreprise->getImage()->getUrl(),
'title' => $categoriesEntreprise->getNom(),
'description' => $categoriesEntreprise->getPhraseDAppel()
);
}else{
$s = array(
'img' => '',
'title' => $categoriesEntreprise->getNom(),
'description' => $categoriesEntreprise->getPhraseDAppel()
);
}
array_push($slidesData, $s);
}
return $this->render('entreprise/nos_services.html.twig', [
'categoriesEntreprises' => $categoriesEntreprises,
'slidesData' => json_encode($slidesData)
]);
}
/**
* @Route("/cc", name="cc")
*/
public function ccAction()
{
return $this->render('entreprise/cc.html.twig', [
]);
}
/**
* @Route("/search/{paginer}/{pageCourante}", name="search_service")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function searchServiceAction(Request $request, $nearest = false, $bestRated = false, $paginer='page', $pageCourante=1)
{
$em = $this->getDoctrine()
->getManager();
$elementParPage = 4;
$user = $this->getUser();
$q = $request->query->get('q');
$nearest = $request->query->get('nearest');
$bestRated = $request->query->get('bestRated');
$likaMap = new LikaMapService;
$boutiques = $em->getRepository(Boutique::class)
->searcheBoutique($q, $nearest, $bestRated, $elementParPage, $pageCourante);
$distances = array();
$entrepriseNom = array();
$userGPS = $likaMap->gps();
$lat_client = $userGPS['lat'];
$lng_client = $userGPS['long'];
foreach($boutiques as $uneBoutique){
$distance = $likaMap->distance($userGPS['lat'], $userGPS['long'], $uneBoutique->getLatitude(), $uneBoutique->getLongitude(), 'N');
array_push($distances, floor($distance));
$ne = array(
'lat' => $uneBoutique->getLatitude(),
'lng' => $uneBoutique->getLongitude(),
'nom_entreprise' => $uneBoutique->getNom(),
'email' => $uneBoutique->getEmail(),
'tel' => $uneBoutique->getPhone(),
'site_web' => $uneBoutique->getSiteWeb(),
'horaire_ouverture' => $uneBoutique->getHoraireDOuverture(),
'description' => $uneBoutique->getDescription(),
'nombre_avis' => $uneBoutique->getNombreAvis(),
'moy_avis' => $uneBoutique->getMoyenneAvis(),
'logo' => $uneBoutique->getLogo()->getUrl(),
'service_entreprise' => $uneBoutique->getCategorieEntreprise()->getNom(),
'adresse3Words' => $uneBoutique->getAdresse3Words(),
'localite' => $uneBoutique->getVille(),
'certif' => $uneBoutique->getEstCertifie()
);
array_push($entrepriseNom, $ne);
}
$entrepriseNom = json_encode($entrepriseNom);
$nombreDePage = ceil((count($boutiques))/$elementParPage) ;
if(($pageCourante > $nombreDePage && $nombreDePage >= 1) || $pageCourante <=0){
throw $this->createNotFoundException('Nombre invalide');
}
return $this->render('entreprise/search_service.html.twig', [
'boutiques' =>$boutiques,
'q'=> $q,
'distances' => $distances,
'entrepriseNom' => $entrepriseNom,
'nombreDePage' => $nombreDePage,
'pageCourante' => $pageCourante,
'lat_client' => $lat_client,
'lng_client' => $lng_client,
'nearest' => $nearest,
'bestRated' => $bestRated,
]);
}
/**
* @Route("/search-temp-result", name="search_temp_result")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function searchTempResultAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
if($request->getMethod() == 'POST'){
$q = $request->request->get('q');
$categorieEntreprises = $em->getRepository(CategorieEntreprise::class)
->getSearchCategorie($q);
}
return $this->render('entreprise/search_temp_result.html.twig', [
'categorieEntreprises' =>$categorieEntreprises
]);
}
/**
* @Route("/entreprise/", name="entreprise.entreprise")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function entrepriseAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$categories = $em->getRepository(CategorieEntreprise::class)
->findBy(
array(
'estSupprime' => false,
),
array('nom' => 'ASC')
);
return $this->render('entreprise/entreprise.html.twig', [
'categories' => $categories
]);
}
/**
* @Route("/lika-business/", name="entreprise.lika_business")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function likaBusinessAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$categories = $em->getRepository(CategorieEntreprise::class)
->findBy(
array(
'estSupprime' => false,
),
array('nom' => 'ASC')
);
return $this->render('entreprise/lika_business_new.html.twig', [
'categories' => $categories
]);
}
/**
* @Route("/entreprise-par-secteur/{slug}", name="entreprise_par_secteur")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function entrepriseParSecteurAction(Request $request, CategorieEntreprise $categorieEntreprise)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$boutiques = $em->getRepository(Boutique::class)
->entrepriseByCategorieEntreprise($categorieEntreprise);
return $this->render('entreprise/entreprise_par_secteur.html.twig', [
'boutiques' => $boutiques
]);
}
/**
* @Route("/devis", name="devis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function devisAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$devis = $em->getRepository(Devis::class)
->findAll();
return $this->render('entreprise/devis.html.twig', [
'devis' => $devis
]);
}
/**
* @Route("/nouveau-devis/{fromABoutique}/{boutique}", name="nouveau_devis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function nouveauDevisAction(Request $request, $fromABoutique , $boutique)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$devis = new Devis;
$boutique = $em->getRepository(Boutique::class)
->findOneById($boutique);
if($boutique != null){
$devis->setCategorieEntreprise($boutique->getCategorieEntreprise());
}
$form = $this->createForm(DevisType::class, $devis);
if($request->getMethod() == 'POST'){
if(null == $user){
return $this->redirectToRoute('security_login');
}
$form->handleRequest($request);
$devis->setUser($user);
$categorieEntreprise = (int)$request->request->get('categorieEntreprise');
//$devis->setTitre($categorieEntreprise);
$em->persist($devis);
$em->flush();
$boutiqueFourmulaire = (int)$request->request->get('boutique');
if($fromABoutique){
if($boutique == null){
$boutique = $em->getRepository(Boutique::class)
->findOneById($boutiqueFourmulaire);
}
$devis->setEstOuvert(false);
$devis->setNombreDOffre(1);
$offreDevis = new OffreDevis;
$offreDevis->setRemporte(true);
$offreDevis->setBoutique($boutique);
$offreDevis->setDevis($devis);
$em->persist($offreDevis);
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $boutique
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.proposals', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setExtraData($devis->getId());
$notification->setLien($lien);
$notification->setTypeNotification('devis');
$notification->setDescription('Quelqu\'un vous a envoyé un devis sur ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
} else{
$devisFromData = $form->getData();
$entrepriseDuneCategories = $em->getRepository(Boutique::class)
->findByCategorieEntreprise($devisFromData->getCategorieEntreprise());
$devis->setEstOuvert(true);
foreach($entrepriseDuneCategories as $entreCat){
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $entreCat
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.proposals', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setExtraData($devis->getId());
$notification->setLien($lien);
$notification->setTypeNotification('devis');
$notification->setDescription('Nouveau devis pour ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
}
}
$em->flush();
return $this->redirectToRoute('afficher_devis', array('slug' => $devis->getSlug()));
}
return $this->render('entreprise/nouveau_devis.html.twig', [
'devis' => $devis,
'form' => $form->createView(),
'fromABoutique' => $fromABoutique
]);
}
/**
* @Route("/creer-compte-professionnel", name="entreprise_creer_compte_professionel")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function creerCompteProfessionnelAction(Request $request, UserPasswordHasherInterface $passwordHasher, UserAuthenticatorInterface $userAuthenticator, LoginFormAuthenticator $authenticator)
{
if(null != $this->getUser()){
return $this->redirectToRoute('security_login');
}
$em = $this->getDoctrine()
->getManager();
$categorieEntreprises = $em->getRepository(CategorieEntreprise::class)
->findBy(
array(
'estSupprime' => false,
),
array('nom' => 'ASC')
);
$user = new AppUser;
$user->setTypeCompte('Professionnel');
$user->setEnabled(true);
$error = '';
$form = $this->createForm(CompteProfessionnelFormType::class, $user);
if($request->getMethod() == 'POST'){
$form->handleRequest($request);
$password1 = $_POST['compte_professionnel_form']['plainPassword']['first'];
$password2 = $_POST['compte_professionnel_form']['plainPassword']['second'];
$email = $_POST['compte_professionnel_form']['email'];
$username = '';
if($password1 != $password2){
$error = 'entreprise.password_not_corresponding';
} else{
$emailUser = $em->getRepository(AppUser::class)
->findOneByEmail($email);
if($emailUser != null){
$error = 'entreprise.email_already_used';
} else{
if($form->isValid()){
$hashedPassword = $passwordHasher->hashPassword($user, $password1);
$user->setPassword($hashedPassword);
$em->persist($user);
$em->flush();
return $userAuthenticator->authenticateUser(
$user,
$authenticator, // Pass your specific authenticator instance
$request
);
return $this->redirectToRoute('registration_confirmed', array('username' => $user->getUsername()));
} else {
$error =" Veillez corrigez vos erreurs";
}
}
}
}
return $this->render('entreprise/creer_compte_professionel.html.twig', [
'form' => $form->createView(),
'error' => $error,
'categorieEntreprises' => $categorieEntreprises
]);
}
/**
* @Route("/entreprise-d-une-categorie", name="entreprise_entreprise_d_une_categorie")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function entrepriseEntrepriseDUneCategorieAction(Request $request )
{
$em = $this->getDoctrine()
->getManager();
$boutiques = array();
if($request->getMethod() == 'POST'){
$categorie = $request->request->get('categorie');
$categorieEntreprise = $em->getRepository(CategorieEntreprise::class)
->findOneBy(
array(
'nom' => $categorie,
'estSupprime' => false
)
);
$boutiques = $em->getRepository(Boutique::class)
->findBy(
array(
'categorieEntreprise' => $categorieEntreprise->getId(),
'estSupprime' => false
),
array(
'nom' => 'ASC'
)
);
}
return $this->render('entreprise/entreprise_d_une_categorie.html.twig', [
'boutiques' => $boutiques
]);
}
/**
* @Route("/about", name="about")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function aboutAction(Request $request )
{
$em = $this->getDoctrine()
->getManager();
$extraSettings = $em->getRepository(ExtraSettings::class)
->findOneById(1);
return $this->render('entreprise/about.html.twig', [
'extraSettings' => $extraSettings
]);
}
/**
* @Route("/terms", name="terms")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function termsAction(Request $request )
{
$em = $this->getDoctrine()
->getManager();
$extraSettings = $em->getRepository(ExtraSettings::class)
->findOneById(1);
return $this->render('entreprise/terms.html.twig', [
'extraSettings' => $extraSettings
]);
}
/**
* @Route("/privacy", name="privacy")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function privacyAction(Request $request )
{
$em = $this->getDoctrine()
->getManager();
$extraSettings = $em->getRepository(ExtraSettings::class)
->findOneById(1);
return $this->render('entreprise/privacy.html.twig', [
'extraSettings' => $extraSettings
]);
}
/**
* @Route("/afficher-devis/{slug}", name="afficher_devis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function AfficherDevisAction(Request $request, Devis $devis)
{
$em = $this->getDoctrine()
->getManager();
$devis->setNombreDeVue($devis->getNombreDeVue() + 1);
$offreDevis = $em->getRepository(OffreDevis::class)
->findByDevis($devis);
$em->flush();
$user = $this->getUser();
$notifications = $em->getRepository(Notification::class)
->findBy(
array(
'user' => $user,
'vu' => false
)
);
foreach($notifications as $notification){
$notification->setVu(true);
}
$em->flush();
return $this->render('entreprise/afficher_devis.html.twig', [
'devis' => $devis,
'offreDevis' => $offreDevis
]);
}
/**
* @Route("/web-auth/facebook/", name="facebook_web_auth")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function faceBookWebAuthAction(Request $request, TokenAuthenticator $authenticator, GuardAuthenticatorHandler $guardHandler)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$errorMessage = '';
if('POST' == $request->getMethod()){
$name = $request->request->get('name');
$picture = $request->request->get('picture');
$id = $request->request->get('id');
$accessToken = $request->request->get('access_token');
$email = $request->request->get('email');
$user = $em->getRepository(AppUser::class)
->findOneByFacebookId($id);
$errors = array();
$errorMessage = '';
$error = '';
if(null == $user){
//If this Facebook user has already an account
$oldUser = $em->getRepository(AppUser::class)
->findOneByEmail($email);
if(null != $oldUser){
$errorMessage = 'Il y a déjà un compte avec la même adresse email';
$error = 'error';
} else{
$user = new AppUser;
$user->setUsername($name);
$user->setPassword($name);
$user->setEmail($email);
$user->setEnabled(true);
$user->setFacebookId($id);
$user->setFacebookAccessToken($accessToken);
$user->getAvatar()->setUrl($picture);
$em->persist($user);
$em->flush();
$error = 'success';
$guardHandler->authenticateUserAndHandleSuccess(
$user, // the User object you just created
$request,
$authenticator, // authenticator whose onAuthenticationSuccess you want to use
'main' // the name of your firewall in security.yaml
);
}
}else{
$error = 'success';
$guardHandler->authenticateUserAndHandleSuccess(
$user, // the User object you just created
$request,
$authenticator, // authenticator whose onAuthenticationSuccess you want to use
'main' // the name of your firewall in security.yaml
);
}
}
$response = new JsonResponse;
$response->headers->set('Content-Type', 'application/json');
$response->setStatusCode(200);
$data = array(
"error" => $error,
"errorMessage" => $errorMessage
);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/web-auth/google/", name="google_web_auth")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function googleWebAuthAction(Request $request, TokenAuthenticator $authenticator, GuardAuthenticatorHandler $guardHandler)
{
$em = $this->getDoctrine()
->getManager();
$error = '';
$errorMessage = '';
if('POST' == $request->getMethod()){
$name = $request->request->get('name');
$picture = $request->request->get('picture');
$id = $request->request->get('id');
$accessToken = $request->request->get('access_token');
$email = $request->request->get('email');
$user = $em->getRepository(AppUser::class)
->findOneByGoogleId($id);
$errors = array();
$errorMessage = '';
$error = '';
if(null == $user){
//If this Facebook user has already an account
$oldUser = $em->getRepository(AppUser::class)
->findOneByEmail($email);
if(null != $oldUser){
$errorMessage = 'Il y a déjà un compte avec la même adresse email';
$error = 'error';
} else{
$user = new AppUser;
$user->setUsername($name);
$user->setPassword($name);
$user->setEmail($email);
$user->setEnabled(true);
$user->setGoogleId($id);
$user->setGoogleAccessToken($accessToken);
$user->getAvatar()->setUrl($picture);
$em->persist($user);
$em->flush();
$error = 'success';
$guardHandler->authenticateUserAndHandleSuccess(
$user, // the User object you just created
$request,
$authenticator, // authenticator whose onAuthenticationSuccess you want to use
'main' // the name of your firewall in security.yaml
);
}
}else{
$error = 'success';
$guardHandler->authenticateUserAndHandleSuccess(
$user, // the User object you just created
$request,
$authenticator, // authenticator whose onAuthenticationSuccess you want to use
'main' // the name of your firewall in security.yaml
);
}
}
$response = new JsonResponse;
$response->headers->set('Content-Type', 'application/json');
$response->setStatusCode(200);
$data = array(
"error" => $error,
"errorMessage" => $errorMessage
);
$response->setContent(json_encode($data));
return $response;
}
/**
* @Route("/choisir-offre/{id}", name="choisir_offre")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function choisirOffreAction(Request $request, OffreDevis $offreDevis)
{
$em = $this->getDoctrine()
->getManager();
$offreDevis->setRemporte(true);
$offreDevis->getDevis()->setEstOuvert(false);
$em->flush();
$user = $this->getUser();
$notification = new Notification;
$notification->setUser($offreDevis->getUser());
$notification->setTypeNotification('devis');
$lien = $this->generateUrl('gestion.proposals', array('slug' => $offreDevis->getBoutique()->getSlug()));
$notification->setLien($lien);
$notification->setDescription('votre offre a été choisie');
$em->persist($notification);
$em->flush();
return $this->redirectToRoute('afficher_devis', array('slug' => $offreDevis->getDevis()->getSlug()));
}
/**
* @Route("/fermer-devis/{id}", name="fermer_devis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function fermerDevisAction(Request $request, Devis $devis)
{
$em = $this->getDoctrine()
->getManager();
$devis->setEstOuvert(false);
$em->flush();
return $this->redirectToRoute('afficher_devis', array('slug' => $devis->getSlug()));
}
/**
* @Route("/faire-une-offre/{slug}", name="faire_une_offre")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function faireUneOffreAction(Request $request, Devis $devis)
{
$em = $this->getDoctrine()
->getManager();
$devis->setNombreDeVue($devis->getNombreDeVue() + 1);
$em->flush();
$user = $this->getUser();
$userBoutiques = $em->getRepository(UserBoutique::class)
->findByUser($user);
$offreDevis = new OffreDevis;
$form = $this->createForm(OffreDevisType::class, $offreDevis);
if($request->getMethod() == 'POST'){
if(null == $user){
return $this->redirectToRoute('security_login');
}
$boutique = $request->request->get('boutique');
$boutique = $em->getRepository(Boutique::class)
->findOneById($boutique);
$form->handleRequest($request);
if($form->isValid()){
$offreDevis->setUser($user);
$offreDevis->setDevis($devis);
$offreDevis->setBoutique($boutique);
$em->persist($offreDevis);
$em->flush();
$notification = new Notification;
$notification->setUser($devis->getUser());
$notification->setTypeNotification('devis');
$lien = $this->generateUrl('afficher_devis', array('slug' => $devis->getSlug()));
$notification->setLien($lien);
$notification->setDescription($boutique->getNom().' vous a fait une proposition ');
$em->persist($notification);
$em->flush();
return $this->redirectToRoute('gestion.proposals', array('slug' => $boutique->getSlug()));
} else {
$error =" Veillez corrigez vos erreurs";
}
}
return $this->render('entreprise/faire_une_offre.html.twig', [
'devis' => $devis,
'userBoutiques' => $userBoutiques,
'form' => $form->createView()
]);
}
/**
* @Route("/new-entreprise/{plan}", name="new_shop")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function nouvelleBoutiqueAction(Request $request, $plan)
{
if(!$this->isGranted('IS_AUTHENTICATED_FULLY')){
return $this->redirectToRoute('security_login');
}
$em = $this->getDoctrine()
->getManager();
$plan = $em->getRepository(Plan::class)
->findOneBySlug($plan);
$user = $this->getUser();
if(null == $plan){
return $this->createNotFoundException();
}
$validiteService = new ValiditeService;
$today = new \DateTime();
$today->modify('+10 year');
$validiteService->setTypeValidite(ValiditeService::TYPE_ESSAI);
$boutique = new Boutique;
$boutique->setUser($user);
$form = $this->createForm(BoutiqueType::class, $boutique);
$ok_soumission = '';
$error = '';
$totalAchat = 12;
$prix = $plan->getTarif();
$coupon = '';
//$likaMap = new LikaMapService;
$totalAchat *= (float)$plan->getTarif();
if($request->getMethod() == 'POST'){
$form->handleRequest($request);
if($form->isValid()){
$entrepriseExiste = $em->getRepository(Boutique::class)
->findOneByNom($form->getData()->getNom());
if($entrepriseExiste != null){
$error = 'Entreprise existante';
} else{
$boutique = $form->getData();
$adresse3Words = preg_replace('/\/+/', '', $boutique->getAdresse3Words());
$boutique->setAdresse3Words($adresse3Words);
//$coor = $likaMap->coordinatesToWhat3words($adresse3Words);
//$boutique->setLatitude($coor['lat']);
//$boutique->setLongitude($coor['lng']);
// $boutique->setVille($coor['localite']);
if($plan->getNom() == 'Free'){
$em->persist($boutique);
$service = new Service;
$service->setUser($user);
$service->setBoutique($boutique);
$service->setPlan($plan);
$em->persist($service);
$em->flush();
$em->persist($validiteService);
$validiteService->setService($service);
$validiteService->setValableJusquAu($today);
$userBoutique = new UserBoutique;
$userBoutique->setUser($user);
$userBoutique->setBoutique($boutique);
$userBoutique->setRole(RoleBoutique::ADMIN);
$em->persist($userBoutique);
$em->flush();
return $this->redirectToRoute('gestion_mes_entreprises');
$boutique = new Boutique;
$user = $this->getUser();
$form = $this->createForm(BoutiqueType::class, $boutique);
$ok_soumission =" Votre message a été pris en compte";
$boutique = new Boutique;
$form = $this->createForm(BoutiqueType::class, $boutique);
}
}
} else {
$error =" Veillez corrigez vos erreurs";
}
}
return $this->render('entreprise/new_shop.html.twig', [
'form' => $form->createView(),
'error' => $error
]);
}
/**
* @Route("/afficher-entreprise/{slug}", name="afficher_entreprise")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function afficherEntrepriseAction(Request $request, Boutique $boutique)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$error = '';
$produits = $em->getRepository(Produit::class)
->findByBoutique($boutique);
$entreprises = $em->getRepository(Boutique::class)
->findBy(
array(
'estBloque' => false
)
);
$users = $em->getRepository(AppUser::class)
->findAll();
$nombreEntreprise = count($entreprises) + count($users);
$avisUtilisateurs = array();
$boutique->setNombreDeVisite($boutique->getNombreDeVisite() + 1);
$cestMaBoutique = false;
$avisUtilisateurs = $em->getRepository(AvisUtilisateur::class)
->findBy(
array(
'boutique' => $boutique
)
);
$em->flush();
$userBoutique = $em->getRepository(UserBoutique::class)
->findOneBy(
array(
'boutique' => $boutique,
'user' => $user
)
);
if(null !== $userBoutique){
$cestMaBoutique = true;
}
$nombreAvis = count($avisUtilisateurs);
$uneEtoiles = array('moyenne' => 0);
$deuxEtoiles = array('moyenne' => 0);
$troisEtoiles = array('moyenne' => 0);
$quatreEtoiles = array('moyenne' => 0);
$cinqEtoiles = array('moyenne' => 0);
$uneEtoile = $em->getRepository(AvisUtilisateur::class)
->findBy(
array(
'user' => $user,
'boutique' => $boutique,
'valeurAvis' => 1
)
);
$deuxEtoile = $em->getRepository(AvisUtilisateur::class)
->findBy(
array(
'user' => $user,
'boutique' => $boutique,
'valeurAvis' => 2
)
);
$troisEtoile = $em->getRepository(AvisUtilisateur::class)
->findBy(
array(
'user' => $user,
'boutique' => $boutique,
'valeurAvis' => 3
)
);
$quatreEtoile = $em->getRepository(AvisUtilisateur::class)
->findBy(
array(
'user' => $user,
'boutique' => $boutique,
'valeurAvis' => 4
)
);
$cinqEtoile = $em->getRepository(AvisUtilisateur::class)
->findBy(
array(
'user' => $user,
'boutique' => $boutique,
'valeurAvis' => 5
)
);
$uneEtoiles['nombre'] = count($uneEtoile);
$deuxEtoiles['nombre'] = count($deuxEtoile);
$troisEtoiles['nombre'] = count($troisEtoile);
$quatreEtoiles['nombre'] = count($quatreEtoile);
$cinqEtoiles['nombre'] = count($cinqEtoile);
if($nombreAvis > 0){
$uneEtoiles['moyenne'] = count($uneEtoile ) * 100 /$nombreAvis;
$deuxEtoiles['moyenne'] = count($deuxEtoile ) * 100 /$nombreAvis;
$troisEtoiles['moyenne'] = count($troisEtoile ) * 100 /$nombreAvis;
$quatreEtoiles['moyenne'] = count($quatreEtoile ) * 100 /$nombreAvis;
$cinqEtoiles['moyenne'] = count($cinqEtoile ) * 100 /$nombreAvis;
}
$dejaEnregistre = false;
if(null != $user){
$entrepriseEnregistres = $em->getRepository(EntrepriseEnregistre::class)
->findBy(
array(
'boutique' => $boutique->getId(),
'user' => $user->getId()
)
);
foreach($entrepriseEnregistres as $entrepriseEnregistre){
if($entrepriseEnregistre->getBoutique()->getId() == $boutique->getId()){
$dejaEnregistre = true;
}
}
}
return $this->render('entreprise/afficher_entreprise.html.twig', [
'boutique' => $boutique,
'produits' => $produits,
'nombreEntreprise' => $nombreEntreprise,
'avisUtilisateurs' => $avisUtilisateurs,
'cestMaBoutique' => $cestMaBoutique,
'nombreAvis' => $nombreAvis,
'uneEtoiles' => $uneEtoiles,
'deuxEtoiles' => $deuxEtoiles,
'troisEtoiles' => $troisEtoiles,
'quatreEtoiles' => $quatreEtoiles,
'cinqEtoiles' => $cinqEtoiles,
'dejaEnregistre' => $dejaEnregistre
]);
}
/**
* @Route("/save-entreprise/{slug}", name="save_entreprise")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function saveEntrepriseAction(Request $request, Boutique $boutique)
{
if(!$this->isGranted('IS_AUTHENTICATED_FULLY')){
return $this->redirectToRoute('security_login');
}
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$entrepriseEnregistres = $em->getRepository(EntrepriseEnregistre::class)
->findBy(
array(
'boutique' => $boutique->getId(),
'user' => $user->getId()
)
);
$dejaEnregistre = false;
foreach($entrepriseEnregistres as $entrepriseEnregistre){
if($entrepriseEnregistre->getBoutique()->getId() == $boutique->getId()){
$dejaEnregistre = true;
}
}
if($dejaEnregistre == false){
$eenr = new EntrepriseEnregistre;
$eenr->setBoutique($boutique);
$eenr->setUser($user);
$em->persist($eenr);
$em->flush();
}
$this->addFlash('success', 'Enregistrement effectué avec succès');
return $this->redirectToRoute('afficher_entreprise', array('slug' => $boutique->getSlug()));
}
/**
* @Route("/reclamer-page/{slug}", name="reclamer_page")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function reclamerPageAction(Request $request, Boutique $boutique)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$error = '';
if($user == null){
return $this->redirectToRoute('security_login');
}
$reclamerPage = new ReclamerPage;
$reclamerPage->setBoutique($boutique);
$reclamerPage->setEtat('En attente');
$reclamerPage->setUser($user);
$em->persist($reclamerPage);
$em->flush();
$this->addFlash('success', 'Enregistrement effectué');
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $boutique
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.messages', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setLien($lien);
$notification->setTypeNotification('reclammer_page');
$notification->setDescription('Quelqu\'un a reclamé votre page ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
$notification = new Notification;
$notification->setUser($this->getUser());
$lien = $this->generateUrl('management.claiming_pages');
$notification->setLien($lien);
$notification->setTypeNotification('reclammer_page_admin');
$notification->setDescription('Reclammation de page ');
$em->persist($notification);
$em->flush();
return $this->redirectToRoute('afficher_entreprise', array('slug' => $boutique->getSlug()));
}
/**
* @Route("/avis-utile/{id}", name="avis_utile")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function avisUtileAction(Request $request, AvisUtilisateur $avisUtilisateur)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$error = '';
$avisUtilisateur->setAvisUtile($avisUtilisateur->getAvisUtile() + 1);
$em->flush();
$this->addFlash('success', 'Enregistrement effectué');
return $this->redirectToRoute('afficher_entreprise', array('slug' => $avisUtilisateur->getBoutique()->getSlug()));
}
/**
* @Route("/avis-inutile/{id}", name="avis_inutile")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function avisInutileAction(Request $request, AvisUtilisateur $avisUtilisateur)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$error = '';
$avisUtilisateur->setAvisInutile($avisUtilisateur->getAvisInutile() + 1);
$em->flush();
$this->addFlash('success', 'Enregistrement effectué');
return $this->redirectToRoute('afficher_entreprise', array('slug' => $avisUtilisateur->getBoutique()->getSlug()));
}
/**
* @Route("/signaler-avis/{id}", name="signaler_avis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function signalerAvisAction(Request $request, AvisUtilisateur $avisUtilisateur)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$error = '';
$avisUtilisateur->setSignalerAvis($avisUtilisateur->getSignalerAvis() + 1);
$em->flush();
$this->addFlash('success', 'Enregistrement effectué');
return $this->redirectToRoute('afficher_entreprise', array('slug' => $avisUtilisateur->getBoutique()->getSlug()));
}
/**
* @Route("/donner-avis/{slug}", name="donner_avis")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function donnerAvisAction(Request $request, Boutique $boutique)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$avisUtilisateur = new AvisUtilisateur;
$form = $this->createForm(AvisUtilisateurType::class, $avisUtilisateur);
if($request->getMethod() == 'POST'){
if(null == $user){
return $this->redirectToRoute('security_login');
}
$form->handleRequest($request);
if($form->isValid()){
$avisUtilisateur->setUser($user);
$avisUtilisateur->setBoutique($boutique);
$em->persist($avisUtilisateur);
$em->flush();
$tousLesAvis = $em->getRepository(AvisUtilisateur::class)
->findByBoutique($boutique);
$this->addFlash('success', 'Envoyé avec succès');
$moyenne = 0;
$nb = 0;
$note = 0;
foreach($tousLesAvis as $avis){
$note += $avis->getValeurAvis();
$nb++;
}
if($nb >0){
$moyenne = round($note/$nb, 1);
}
$boutique->setMoyenneAvis($moyenne);
$em->flush();
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $boutique
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.reviews', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setLien($lien);
$notification->setTypeNotification('avis');
$notification->setDescription('Quelqu\'un a laissé un avis sur ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
$em->flush();
return $this->redirectToRoute('afficher_entreprise', array('slug' => $boutique->getSlug()));
} else {
$error =" Veillez corrigez vos erreurs";
}
}
return $this->render('entreprise/donner_avis.html.twig', [
'form' => $form->createView(),
'boutique' => $boutique
]);
}
/**
* @Route("/envoyer-message/{slug}", name="envoyer_message")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function envoyerMessageAction(Request $request, Boutique $boutique)
{
$em = $this->getDoctrine()
->getManager();
$user = $this->getUser();
$message = new Message;
$error = '';
$form = $this->createForm(MessageType::class, $message);
if($request->getMethod() == 'POST'){
if(null == $user){
return $this->redirectToRoute('security_login');
}
$form->handleRequest($request);
if($form->isValid()){
$conversation = $em->getRepository(Conversation::class)
->findOneBy(
array(
'boutique' => $boutique,
'user' => $user
)
);
if(null === $conversation){
$conversation = new Conversation;
$conversation->setUser($user);
$conversation->setBoutique($boutique);
$em->persist($conversation);
$em->flush();
}
$message->setUser($user);
$message->setConversation($conversation);
$em->persist($message);
$conversation->setLastMessage($message->getContenu());
$em->flush();
$this->addFlash('success', 'Envoyé avec succès');
$userBoutiques = $em->getRepository(UserBoutique::class)
->findBy(
array(
'boutique' => $boutique
)
);
foreach($userBoutiques as $userBoutique){
$notification = new Notification;
$notification->setUser($userBoutique->getUser());
$lien = $this->generateUrl('gestion.messages', array('slug' => $userBoutique->getBoutique()->getSlug()));
$notification->setExtraData($conversation->getId());
$notification->setLien($lien);
$notification->setTypeNotification('message');
$notification->setDescription('Quelqu\'un vous a envoyé un message sur ' . $userBoutique->getBoutique()->getNom());
$em->persist($notification);
}
$em->flush();
return $this->redirectToRoute('afficher_entreprise', array('slug' => $boutique->getSlug()));
} else {
$error =" Veillez corrigez vos erreurs";
}
}
return $this->render('entreprise/envoyer_message.html.twig', [
'form' => $form->createView(),
'boutique' => $boutique,
'error' => $error
]);
}
/**
* @Route("/payment", name="payment")
* @Security("is_granted('IS_AUTHENTICATED_REMEMBERED')")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function paymentAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$boutique = $this->session->get('boutique');
$plan = $this->session->get('plan');
$montant = 12;
$montant *= $plan->getTarif();
$coupon = $this->session->get('coupon');
$remise = $this->session->get('remise');
$mt = $this->session->get('mt');
$total = $plan->getTarif() * 12;
if($coupon == 'ABOMOLIE'){
$tt = $total;
$laRemise = 0;
switch($total){
case 120:
$laRemise = (0.2 * $total);
$tt = $total - $laRemise;
break;
case 300:
$laRemise = (0.3 * $total);
$tt = $total - $laRemise;
break;
case 1188:
$laRemise = (0.4 * $total);
$tt = $total - $laRemise;
break;
}
$montant = $tt;
}
$redirectUrl = $this->generateUrl('save_payment');
return $this->render('entreprise/payment.html.twig', [
'montant' => $montant,
'redirectUrl' => $redirectUrl
]);
}
/**
* @Route("/save_payment", name="save_payment")
* @Security("is_granted('IS_AUTHENTICATED_REMEMBERED')")
* @return \Symfony\Component\HttpFoundation\Response
*
* Faire très attention à cette fonction, car elle doit influencer aussi tous les achats venant
* de AppSumo et autre
*/
public function savePaymentAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$plan = $this->session->get('plan');
$plan = $em->getRepository(Plan::class)
->findOneById($plan->getId());
$boutique = $this->session->get('boutique');
$user = $this->getUser();
$em->persist($boutique);
$em->flush();
$validiteService = new ValiditeService;
$today = new \DateTime();
$today->modify('+1 year');
$validiteService->setTypeValidite(ValiditeService::TYPE_PAYE);
$service = new Service;
$service->setUser($user);
$service->setPlan($plan);
$service->setBoutique($boutique);
$em->persist($service);
$em->flush();
$em->persist($validiteService);
$validiteService->setService($service);
$validiteService->setValableJusquAu($today);
$validiteService->setMontantAbonnement($plan->getTarif() * 12);
$tva = new TVA;
$tva->setValeur(20);
$tva->setLibelle('20%');
$tva->setBoutique($boutique);
$em->persist($tva);
$userBoutique = new UserBoutique;
$userBoutique->setUser($user);
$userBoutique->setBoutique($boutique);
$userBoutique->setRole(RoleBoutique::ADMIN);
$em->persist($userBoutique);
$em->flush();
$paymentMethod = 'PayPal';
//Générer facture pour le client
$pdf = new Html2Pdf('P', 'A4', 'en');
$user = $this->getUser();
$content = $this->renderView('pdf/facture_client.html.twig', [
'boutique' => $boutique,
'user' => $user,
'plan' => $plan,
'validiteService' => $validiteService,
'paymentMethod' => $paymentMethod,
'domaine' => $this->getDomain()
]);
$pdf->writeHTML($content);
$name = time().$boutique->getId().rand(1, 10000).'.pdf';
$lienPhysique = __DIR__.'/../../public/my-invoices/'.$name;
$validiteService->setLienFacture($this->getDomain().'/my-invoices/'.$name);
$pdf->output($lienPhysique, 'F');
$em->flush();
$this->session->set('boutique', '');
$this->session->set('plan', '');
return $this->redirectToRoute('admin.show_shop', array('slug' => $boutique->getSlug()));
}
/**
* @Route("/choose-paied-plan", name="choose_paied_plan")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function choosePaiedPlanAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$plans = $em->getRepository(Plan::class)
->paidPlan();
return $this->render('entreprise/choose_paied_plan.html.twig', [
'plans' => $plans
]);
}
/**
* @Route("/pricing", name="pricing")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function pricingAction(Request $request)
{
$em = $this->getDoctrine()
->getManager();
$plans = $em->getRepository(Plan::class)
->paidPlan();
return $this->render('entreprise/pricing.html.twig', [
'plans' => $plans
]);
}
/**
* @Route("/sfc", name="cgv")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function sfcAction(Request $request)
{
$locale = $request->getLocale();
return $this->render('entreprise/'.$locale.'_sfc.html.twig', [
'locale' => $locale
]);
}
/**
* @Route("/chose-plan", name="chose_plan")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function chosePlanAction(Request $request)
{
return $this->render('entreprise/chose_plan.html.twig', [
]);
}
/**
* @Route("/{slug}/renouveller-abonnement", name="renouveller_abonnement")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function renouvellerAbonnementAction(Request $request, Boutique $boutique)
{
$em = $this->getDoctrine()
->getManager();
$derniereValiditeService = $em->getRepository(ValiditeService::class)
->derniereValiditeService($boutique->getId());
$service = $derniereValiditeService->getService();
$planActuel = $service->getPlan();
$plans = $em->getRepository(Plan::class)
->paidPlan();
$totalAchat = 12;
$prix = $planActuel->getTarif();
if($prix <= 0){
$prix = 10;
foreach($plans as $plan){
if($plan->getTarif() == 10){
$planActuel = $plan;
}
}
} else{
}
$totalAchat *= $prix;
$redirectUrl = $this->generateUrl('enregistrer_renouvellement_abonnement', array('slug' => $boutique->getSlug()));
return $this->render('entreprise/renouveller_abonnement.html.twig', [
'boutique' => $boutique,
'plans' => $plans,
'redirectUrl' => $redirectUrl,
'planActuel' => $planActuel,
'totalAchat' => $totalAchat,
'prix' => $prix
]);
}
/**
* @Route("/{slug}/enregistrer-renouvellement-abonnement/{plan}", name="enregistrer_renouvellement_abonnement")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function enregistrerRenouvellementAbonnementAction(Request $request, $slug, $plan = 0)
{
$em = $this->getDoctrine()
->getManager();
$derniereValiditeService = $em->getRepository(ValiditeService::class)
->derniereValiditeService($boutique->getId());
$boutique = $em->getRepository(Boutique::class)
->findOneBySlug($slug);
$service = $derniereValiditeService->getService();
$plans = $em->getRepository(Plan::class)
->paidPlan();
$plan = $em->getRepository(Plan::class)
->findOneById($plan);
if($service->getPlan()->getTarif() == 0 || $service->getPlan()->getId() != $plan->getId()){
$service = new Service;
$service->setUser($user);
$service->setPlan($plan);
$service->setBoutique($boutique);
$em->persist($service);
$em->flush();
} else{
}
$validiteService = new ValiditeService;
$today = new \DateTime();
$today->modify('+1 year');
$validiteService->setTypeValidite(ValiditeService::TYPE_PAYE);
$em->persist($validiteService);
$validiteService->setService($service);
$validiteService->setValableJusquAu($today);
$validiteService->setMontantAbonnement($plan->getTarif() * 12);
$paymentMethod = 'PayPal';
//Générer facture pour le client
$pdf = new Html2Pdf('P', 'A4', 'en');
$user = $this->getUser();
$content = $this->renderView('pdf/facture_client.html.twig', [
'boutique' => $boutique,
'user' => $user,
'plan' => $plan,
'validiteService' => $validiteService,
'paymentMethod' => $paymentMethod,
'domaine' => $this->getDomain()
]);
$pdf->writeHTML($content);
$name = time().$boutique->getId().rand(1, 10000).'.pdf';
$lienPhysique = __DIR__.'/../../public/my-invoices/'.$name;
$validiteService->setLienFacture($this->getDomain().'/my-invoices/'.$name);
$pdf->output($lienPhysique, 'F');
$em->flush();
return $this->redirectToRoute('admin.show_shop', array('slug' => $boutique->getSlug()));
}
/**
* @Route("/display-product/{slug}", name="display_product")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function displayProductAction(Request $request, Produit $produit)
{
$em = $this->getDoctrine()
->getManager();
return $this->render('entreprise/display_product.html.twig', [
'produit' => $produit
]);
}
/**
* @Route("/notification-to-join-team/{email}", name="notification_requette_ajout_boutique")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function notificationRequetteAjoutBoutiqueAction(Request $request, $email)
{
$em = $this->getDoctrine()
->getManager();
$requeteBoutiques = $em->getRepository(RequeteAjoutBoutique::class)
->findBy(
array(
'email' => $email
)
);
$nbRequete = count($requeteBoutiques);
return $this->render('entreprise/notification_requette_ajout_boutique.html.twig', [
'nbRequete' => $nbRequete
]);
}
/**
* @Route("/notification/{id}", name="nouvelles_notifications")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function nouvellesNotificationsAction(Request $request, AppUser $user)
{
$em = $this->getDoctrine()
->getManager();
$notifications = $em->getRepository(Notification::class)
->findBy(
array(
'user' => $user,
'vu' => false
)
);
$nombreNotification = count($notifications);
return $this->render('entreprise/nouvelles_notifications.html.twig', [
'nombreNotification' => $nombreNotification,
'notifications' => $notifications
]);
}
/**
* @Route("/request-to-join-team/{email}", name="afficher_requette_ajout_boutique")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function afficherRequetteAjoutBoutiqueAction(Request $request, $email)
{
$em = $this->getDoctrine()
->getManager();
$requeteBoutiques = $em->getRepository(RequeteAjoutBoutique::class)
->findByEmail($email);
foreach($requeteBoutiques as $requeteBoutique){
$requeteBoutique->setVu(true);
}
$em->flush();
return $this->render('entreprise/afficher_requette_ajout_boutique.html.twig', [
'requeteBoutiques' => $requeteBoutiques
]);
}
/**
* @Route("/respond-request-to-join-team/{id}/{status}", name="repondre_requette_ajout_boutique")
* @return \Symfony\Component\HttpFoundation\Response
*/
public function repondreRequetteAjoutBoutiqueAction(Request $request, $id, $status)
{
$em = $this->getDoctrine()
->getManager();
$requeteAjout = $em->getRepository(RequeteAjoutBoutique::class)
->findOneById($id);
$user = $this->getUser();
if($status){
$userBoutique = $em->getRepository(UserBoutique::class)
->findOneBy(
array(
'user' => $user->getId(),
'boutique' => $requeteAjout->getBoutique()->getId()
)
);
if(null === $userBoutique){
$userBoutique = new UserBoutique;
$userBoutique->setUser($user);
$userBoutique->setBoutique($requeteAjout->getBoutique());
$userBoutique->setRole($requeteAjout->getRole());
$em->persist($userBoutique);
}
}
$em->remove($requeteAjout);
$em->flush();
return $this->redirectToRoute('home');
}
public function getDomain()
{
$domaine = $_SERVER['HTTP_HOST'];
$protocol = '';
if(!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off'){
$protocol = 'https://';
} else{
$protocol = 'http://';
}
return $protocol.$domaine;
}
}