<?php
namespace App\Controller;
use Swift_Mailer;
use Swift_Message;
use App\Entity\ProductClick;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use App\Entity\Subcategory;
use App\Service\FileUploader;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use App\Service\RegisteredToNewsletterChecker;
use Doctrine\ORM\EntityManagerInterface;
use PhpOffice\PhpSpreadsheet\IOFactory;
use Symfony\Component\Security\Core\Security;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\NumberType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use App\Entity\CompanyFav;
use App\Entity\CompanyFavoris;
use App\Entity\ProductFav;
use App\Entity\Visite;
use App\Entity\Product;
use App\Repository\CompanyFavorisRepository;
use App\Repository\VisiteRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use phpDocumentor\Reflection\Types\Integer;
use phpDocumentor\Reflection\Types\String_;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mime\Address;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Company;
use App\Repository\CompanyRepository;
use App\Entity\Category;
use App\Entity\Marchandise;
use App\Entity\NewsLetterUser;
use App\Form\CompanyType;
use Symfony\Bundle\FrameworkBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Form\FormTypeInterface;
use Cocur\Slugify\Slugify;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Serializer\SerializerInterface;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Service\TraduireContenu;
use App\Repository\CategoryRepository;
use App\Repository\UserRepository;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Form\FormError;
use Symfony\Contracts\HttpClient\HttpClientInterface;
use App\Form\DesactivateCompanyType;
use App\Repository\SubcategoryRepository;
use App\Service\CryptService;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;
use Symfony\Component\Serializer\Serializer;
use App\Entity\GetUser;
use App\Entity\User;
use App\Service\CallApiService;
// use Doctrine\ORM\EntityManagerInterface as EntityManager;
class CompanyController extends AbstractController
{
private $em;
private $traduireContenu;
private $client;
public function __construct(EntityManagerInterface $em, TraduireContenu $traduireContenu, HttpClientInterface $client)
{
$this->client = $client;
$this->em = $em;
$this->traduireContenu = $traduireContenu;
}
/**
* @Route("/redirectRegister/", name="redirect_inscription")
*/
public function setGaeaUserId(Request $request, SerializerInterface $serializer, CategoryRepository $catrep, FileUploader $fileUploader)
{
$em = $this->getDoctrine()->getManager();
//$contenu = $request->getContent();
$contenu = $request->request->get('objArr');
$contenuDecode = json_decode($contenu, true);
//dump($contenuDecode);
//$company = $serializer->deserialize($contenu, Company::class, 'json');
$categories_name = $contenuDecode['categories'];
//dump($categories_name);
//$categories_name = $request->request->get('objArr')['categories'];
$categories = new ArrayCollection();
foreach ($categories_name as $category_name) {
$categories[] = $catrep->findOneBy(['name' => $category_name]);
}
//dump ($categories);
$gaeauserid = $contenuDecode['gaeaUserId'];
$username = $contenuDecode['username'];
$rue = $contenuDecode['street'];
$name = $contenuDecode['name'];
$username = $contenuDecode['username'];
$ville = $contenuDecode['city'];
$raisonsociale = $contenuDecode['socialreason'];
$codepostale = $contenuDecode['postcode'];
$canton = $contenuDecode['region'];
$pays = $contenuDecode['country'];
$latitude = $contenuDecode['latitude'];
$longitude = $contenuDecode['longtitude'];
$tel = $contenuDecode['phone'];
$site = $contenuDecode['urlwebsite'];
$linkedin = $contenuDecode['urllinkedin'];
$facebook = $contenuDecode['urlfacebook'];
$twitter = $contenuDecode['urltwitter'];
$débutactivité = $contenuDecode['startingdate'];
$certif = $contenuDecode['certification'];
$vision = $contenuDecode['vision'];
$zoneinfluence = $contenuDecode['influencezone'];
$descritpion = $contenuDecode['description'];
$evaluation = $contenuDecode['wantevaluation'];
$niveau = $contenuDecode['niveau'];
$file = $request->files->get('file');
// dump($request);
// dump($request->files);
$nom = $contenuDecode['nom'];
$prenom = $contenuDecode['prenom'];
$image = $contenuDecode['image'];
$Setcompany = new Company();
if (!is_null($file)) {
$path = $this->getParameter('companies');
// dump($path);
$filename = $fileUploader->upload($file, $path);
// dump($file);
// dump($filename);
$Setcompany->setImage($filename);
}
$Setcompany->setName($name);
$Setcompany->setStreet($rue);
$Setcompany->setCity($ville);
$Setcompany->setsocialreason($raisonsociale);
$Setcompany->setPostcode($codepostale);
$Setcompany->setRegion($canton);
$Setcompany->setCountry($pays);
$Setcompany->setPhone($tel);
$Setcompany->setUrlwebsite($site);
$Setcompany->setUrllinkedin($linkedin);
$Setcompany->setUrlfacebook($facebook);
$Setcompany->setUrltwitter($twitter);
//$Setcompany->setstartingdate(new \DateTime($débutactivité));
$Setcompany->setstartingdate($débutactivité);
$Setcompany->setCertification($certif);
$Setcompany->setLastname($nom);
$Setcompany->setFirstname($prenom);
//$Setcompany->setImage($image);
foreach ($categories as $cat) {
$Setcompany->addCategory($cat);
}
$Setcompany->setVision($vision);
$Setcompany->setInfluencezone($zoneinfluence);
$Setcompany->setDescription($descritpion);
$Setcompany->setWantevaluation($evaluation);
$Setcompany->setLatitude($latitude);
$Setcompany->setLongtitude($longitude);
$Setcompany->setgaeaUserId($gaeauserid);
$Setcompany->setUsername($username);
$Setcompany->setRole('ROLE_COMPANY');
$slugify = new Slugify();
$slug = $slugify->slugify($name);
$Setcompany->setSlug($slug);
$Setcompany->setActivated(true);
$Setcompany->setActived(true);
$Setcompany->setEmailValidated(false);
$token = bin2hex(random_bytes(21));
$Setcompany->setToken($token);
$Setcompany->setInscriptiondate(new \DateTime());
$Setcompany->setNiveau($niveau);
$em = $this->getDoctrine()->getManager();
$em->persist($Setcompany);
//enregistrement a la newsletter
if ($contenuDecode['newsletter']) {
$existingNewsletterUser = $em->getRepository(NewsLetterUser::class)->findOneBy(['mail' => $contenuDecode['mail']]);
if ($existingNewsletterUser) {
$em->remove($existingNewsletterUser);
//$existingNewsletterUser->setUserId($Setcompany);
}
$newsletterUser = new NewsLetterUser();
// dump($Setcompany);
$newsletterUser->setUserId($Setcompany);
$newsletterUser->setNom($nom);
$newsletterUser->setPrenom($prenom);
$newsletterUser->setCodePostal($codepostale);
$newsletterUser->setVille($ville);
$newsletterUser->setMail($contenuDecode['mail']);
$em->persist($newsletterUser);
}
$em->flush();
return $this->json(['status' => 200, 'message' => "Ok"]);
}
/**
* @Route("/newsletter/inscription", name="newsletter_inscription", methods={"POST"})
*/
public function inscriptionNewsletter(Request $request, MailerInterface $mailer, SessionInterface $session, EntityManagerInterface $entityManager)
{
$userEmail = $session->get('email');
$username = $session->get('username');
//$userVille = $session->get('ville');
/* $userPrenom = $session->get('prenom');
$userCodePostal = $session->get('code_postal');*/
if (empty($userEmail)) {
return new JsonResponse(['status' => 'error', 'message' => 'Les données nécessaires n\'ont pas été trouvées dans la session']);
}
$existingUser = $entityManager->getRepository(NewsLetterUser::class)->findOneBy(['mail' => $userEmail]);
if ($existingUser) {
return new JsonResponse(['status' => 'success']);
}
$newsLetterUser = new NewsLetterUser();
$newsLetterUser->setMail($userEmail);
$newsLetterUser->setNom($username);
//$newsLetterUser->setVille($userVille);
/* $newsLetterUser->setPrenom($userPrenom);
$newsLetterUser->setCodePostal($userCodePostal);*/
try {
$entityManager->persist($newsLetterUser);
$entityManager->flush();
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Une erreur s\'est produite lors de la sauvegarde des données: ' . $e->getMessage()]);
}
// Envoyer l'e-mail de confirmation
$email = (new Email())
->from('contact@sustlivprogram.org')
->to($userEmail)
->subject('Inscription à la Newsletter')
->text('Vous êtes bien inscrit à la newsletter.');
try {
$mailer->send($email);
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Une erreur s\'est produite lors de l\'inscription à la newsletter: ' . $e->getMessage()]);
}
return new JsonResponse(['status' => 'success']);
}
/**
* @Route("/newsletter/desinscription", name="newsletter_desinscription", methods={"POST"})
*/
public function desinscriptionNewsletter(Request $request, EntityManagerInterface $entityManager)
{
$userEmail = $request->getSession()->get('email');
if (empty($userEmail)) {
return new JsonResponse(['status' => 'error', 'message' => 'Les données nécessaires n\'ont pas été trouvées dans la session']);
}
$existingUser = $entityManager->getRepository(NewsLetterUser::class)->findOneBy(['mail' => $userEmail]);
if (!$existingUser) {
return new JsonResponse(['status' => 'success']);
}
try {
$entityManager->remove($existingUser);
$entityManager->flush();
} catch (\Exception $e) {
return new JsonResponse(['status' => 'error', 'message' => 'Une erreur s\'est produite lors de la désinscription: ' . $e->getMessage()]);
}
return new JsonResponse(['status' => 'success']);
}
/**
* @Route("/newsletter/check-subscription", name="newsletter_check_subscription", methods={"GET"})
*/
public function checkSubscription(Request $request, EntityManagerInterface $entityManager)
{
$userEmail = $request->getSession()->get('email');
if (empty($userEmail)) {
return new JsonResponse(['status' => 'error', 'message' => 'Les données nécessaires n\'ont pas été trouvées dans la session']);
}
$existingUser = $entityManager->getRepository(NewsLetterUser::class)->findOneBy(['mail' => $userEmail]);
if ($existingUser) {
return new JsonResponse(['status' => 'subscribed']);
}
return new JsonResponse(['status' => 'not_subscribed']);
}
public function getAllCategories($langue)
{
//récupération de toutes les catégories en francais
$categories = $this->getDoctrine()->getRepository(Category::class)->findBy(["unicity" => 1]);
$tabtraduit = [];
foreach ($categories as $category) {
$trad = $category;
if ($langue != "fr") {
$trad = $this->traduireContenu->retourTrad($category, $langue);
}
array_push($tabtraduit, $trad);
}
//dd($tabtraduit);
return $tabtraduit;
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/deactivateAccount/", name="deactivate_account")
*/
public function deactivateAccount()
{
$Setcompany = $this->getUser();
//$Setcompany->actived = false;
$em = $this->getDoctrine()->getManager();
$em->flush();
return $this->json(['status' => 200, 'message' => "Ok"]);
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/redirectModify/", name="redirect_modification")
*/
public function modifgaeauser(Request $request, CategoryRepository $catrep, FileUploader $fileUploader)
{
//$contenu = $request->getContent();
$contenu = $request->request->get('objArr');
$contenuDecode = json_decode($contenu, true);
//$company = $serializer->deserialize($contenu, Company::class, 'json');
/*$categories_name = $contenuDecode['categories'];
$categories = new ArrayCollection();
foreach($categories_name as $category_name){
$categories[] = $catrep->findOneBy(['name'=>$category_name]);
}*/
$rue = $contenuDecode['street'];
$name = $contenuDecode['name'];
$ville = $contenuDecode['city'];
$raisonsociale = $contenuDecode['socialreason'];
$codepostale = $contenuDecode['postcode'];
$canton = $contenuDecode['departement'];
$pays = $contenuDecode['country'];
$tel = $contenuDecode['phone'];
$site = $contenuDecode['urlwebsite'];
$linkedin = $contenuDecode['urllinkedin'];
$facebook = $contenuDecode['urlfacebook'];
$twitter = $contenuDecode['urltwitter'];
$débutactivité = $contenuDecode['startingdate'];
$certif = $contenuDecode['certification'];
$vision = $contenuDecode['vision'];
$zoneinfluence = $contenuDecode['influencezone'];
$descritpion = $contenuDecode['description'];
$evaluation = $contenuDecode['wantevaluation'];
$latitude = $contenuDecode['latitude'];
$longitude = $contenuDecode['longtitude'];
$niveau = $contenuDecode['niveau'];
$lastname = $contenuDecode['nom'];
$firstname = $contenuDecode['prenom'];
$file = $request->files->get('file');
$Setcompany = $this->getUser();
/*$currentCategories = $Setcompany->getCategories();
foreach($currentCategories as $cat){
$Setcompany -> removeCategory($cat);
}*/
if (!is_null($file)) {
$path = $this->getParameter('companies');
$filename = $fileUploader->upload($file, $path);
$Setcompany->setImage($filename);
}
$Setcompany->setName($name);
$Setcompany->setStreet($rue);
$Setcompany->setCity($ville);
$Setcompany->setsocialreason($raisonsociale);
$Setcompany->setPostcode(intval($codepostale));
$Setcompany->setRegion($canton);
$Setcompany->setCountry($pays);
$Setcompany->setPhone($tel);
$Setcompany->setUrlwebsite($site);
$Setcompany->setUrllinkedin($linkedin);
$Setcompany->setUrlfacebook($facebook);
$Setcompany->setUrltwitter($twitter);
$Setcompany->setstartingdate(new \DateTime($débutactivité));
$Setcompany->setCertification($certif);
$Setcompany->setLatitude($latitude);
$Setcompany->setLongtitude($longitude);
$Setcompany->setVision($vision);
$Setcompany->setInfluencezone($zoneinfluence);
$Setcompany->setDescription($descritpion);
$Setcompany->setWantevaluation($evaluation);
$Setcompany->setNiveau($niveau);
$Setcompany->setLastName($lastname);
$Setcompany->setFirstName($firstname);
/*foreach($categories as $cat){
$Setcompany -> addCategory($cat);
}*/
$em = $this->getDoctrine()->getManager();
$em->flush();
return $this->json(['status' => 200, 'message' => "Ok"]);
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/redirectModifyCategories/", name="redirect_modification_cat")
*/
public function modifcategories(Request $request, CategoryRepository $catrep)
{
//$contenu = $request->request->get('objArr');
$contenu = $request->getContent();
$contenuDecode = json_decode($contenu, true);
$categories_name = $contenuDecode['categories'];
$categories = new ArrayCollection();
foreach ($categories_name as $category_name) {
$categories[] = $catrep->findOneBy(['name' => $category_name]);
}
$Setcompany = $this->getUser();
$currentCategories = $Setcompany->getCategories();
foreach ($currentCategories as $cat) {
$Setcompany->removeCategory($cat);
}
foreach ($categories as $cat) {
$Setcompany->addCategory($cat);
}
$em = $this->getDoctrine()->getManager();
$em->flush();
//return $this->redirectToRoute('companyProfileShow');
//return $this->redirect($this->generateUrl('companyProfileShow'));
return $this->json(['status' => 200, 'message' => "Ok"]);
/*$company = $this->getUser();
$categories = $this->em->getRepository(Category::class)->findAll();
return $this->render('company/profile.html.twig', [
'company' => $company,
'categories' => $categories,
]);*/
}
public function findCatByName($name)
{
$em = $this->getDoctrine()->getManager();
$category = $em
->getRepository(Category::class)
->findBy(['name' => $name]);
return ($category);
}
/**
*
* Require ROLE_ADMIN for all the actions of this controller
*
* @isGranted("PUBLIC_ACCESS")
*
* @Route("/{_locale<fr|en|de|it|es>}/inscription-entreprise", name="companyRegister")
*/
public function registerAction(Request $request)
{
//$this->denyAccessUnlessGranted('ROLE_ADMIN');
//$hasAccess = $this->isGranted('ROLE_ADMIN');
$session = $request->getSession();
$langue = $session->get("_locale");
$categories = $this->getAllCategories($langue);
foreach ($categories as $category) {
foreach ($category->getSubcategories() as $subcat) {
$category->addSubcategory($subcat);
}
}
$intYear = idate("Y");
//return $this->render('company/register_OLD.html.twig', [
return $this->render('company/register.html.twig', [
'categories' => $categories,
'currentYear' => $intYear
]);
}
// /**
// * @Route("/{_locale<en|fr|de|it|es>}/inscription-entreprise-2/", name="companyRegister2")
// */
// public function registerAction2(Request $request)
// {
// //Extract from the request : id, email, username
// if($request !== null){
// $contenu = $request->getContent();
// $userrv = explode("&",$contenu);
// $gaeaid = substr($userrv[0],3);
// $id = intval($gaeaid);
// $email = str_replace("%40","@",substr($userrv[1],6));
// $username = str_replace("%40","@",substr($userrv[2],9));
// }
// $categories = $this->em->getRepository(Category::class)->findAll();
// foreach($categories as $category)
// {
// foreach ($category->getSubcategories() as $subcat)
// {
// $category->addSubcategory($subcat);
// }
// }
// $intYear = idate("Y");
// return $this->render('company/register-2.html.twig',[
// 'categories'=>$categories,
// 'currentYear' => $intYear,
// 'gaeaId' => $id,
// 'email' => $email,
// 'username' => $username,
// ]);
// }
// /**
// * @Route("/inscription-entreprise-2", name="companyRegister2")
// */
// public function registerAction2(Request $request)
// {
// $categories = $this->em->getRepository(Category::class)->findAll();
// foreach($categories as $category)
// {
// foreach ($category->getSubcategories() as $subcat)
// {
// $category->addSubcategory($subcat);
// }
// }
// $intYear = idate("Y");
// return $this->render('company/register-2.html.twig',[
// 'categories'=>$categories,
// 'currentYear' => $intYear,
// 'hhh'=>null
// ]);
// }
/**
* @Route("/checklogin", name="checklogin")
*/
public function checklogin()
{
$loggedIn = $this->isGranted('IS_AUTHENTICATED_FULLY');
return $this->json(['loggedIn' => $loggedIn]);
}
/**
* @Route("/entreprise/{slug}", name="companyShow")
*/
public function show($slug)
{
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository(Company::class)->findOneBy(['slug' => $slug]);
$date = (new \DateTime());
$visit = $em->getRepository(Visite::class)->findOneBy(array('companySlug' => $slug, 'date' => $date));
if ($visit == null) :
$visite = new Visite();
$visite->setDate($date);
$visite->setCompanySlug($slug);
$visite->setNumber(1);
$em->persist($visite);
$em->flush();
else :
$visit->setNumber($visit->getNumber() + 1);
$em->persist($visit);
$em->flush();
endif;
$products = $em->getRepository(Product::class)->findBy(array('company' => $company));
if ($this->isGranted('IS_AUTHENTICATED_FULLY')) {
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository(Company::class)->findOneBy(array('slug' => $slug));
$user = $this->getUser();
$companyFav = $em->getRepository(CompanyFav::class)->findOneBy(array('user' => $user, 'company' => $company));
if ($companyFav == null) {
$n = 0;
} else {
$n = 1;
}
} else {
$n = 3;
}
return $this->render('company/entreprise.html.twig', [
'company' => $company,
'visit' => $visit,
'products' => $products,
'n' => $n
]);
}
/**
* @Route("/product2/{id}", name="companyShowFromId")
*/
public function showFromId($id)
{
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository(Company::class)->findOneBy(['id' => $id]);
$em = $this->getDoctrine()->getManager();
$date = (new \DateTime());
$visit = $em->getRepository(Visite::class)->findOneBy(array('companySlug' => $company->getSlug(), 'date' => $date));
if ($visit == null) :
$visite = new Visite();
$visite->setDate($date);
$visite->setCompanySlug($company->getSlug());
$visite->setNumber(1);
$em->persist($visite);
$em->flush();
else :
$visit->setNumber($visit->getNumber() + 1);
$em->persist($visit);
$em->flush();
endif;
$products = $em->getRepository(Product::class)->findBy(array('company' => $company));
if ($this->isGranted('IS_AUTHENTICATED_FULLY')) {
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository(Company::class)->findOneBy(array('slug' => $company->getSlug()));
$user = $this->getUser();
$companyFav = $em->getRepository(CompanyFav::class)->findOneBy(array('user' => $user, 'company' => $company));
if ($companyFav == null) {
$n = 0;
} else {
$n = 1;
}
} else {
$n = 3;
}
return $this->render('company/entreprise.html.twig', [
'company' => $company,
'visit' => $visit,
'products' => $products,
'n' => $n
]);
}
public function showProducts()
{
//$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
$marchandises = $this->getDoctrine()
->getRepository('App:Marchandise')
->createQueryBuilder('p')
->andWhere('p.company = :id')
->setParameter('id', $this->getUser()->getId())
->getQuery()
->getArrayResult();
//dump($marchandises);
return $this->render('product/manage.html.twig', [
'marchandises' => $marchandises
]);
}
/**
* @Route("/api/profile/entreprise",methods={"GET"})
*/
public function api_profile_entreprise(Request $request, TraduireContenu $traduireContenu, UserRepository $userRepository, SerializerInterface $serializer)
{
/*
$encoders = [new XmlEncoder(), new JsonEncoder()];
$normalizers = [new ObjectNormalizer()];
$serializer = new Serializer($normalizers, $encoders);
*/
//$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
$em = $this->getDoctrine()->getManager();
//dump($_SESSION);
//if ($request->getSession() !== "") {
$id = $_SESSION['_sf2_attributes']['gaeaUserId'];
$email = $_SESSION['_sf2_attributes']['email'];
$username = $_SESSION['_sf2_attributes']['username'];
//$contenu = explode("&", $request->getContent());
//dump($contenu);
//$email = str_replace("%40", "@", substr($contenu[1], 6));
//$username = str_replace("%40", "@", substr($contenu[2], 9));
/*
if ($this->getUser()->getEmail() !== $email)
$this->getUser()->setEmail($email);
if ($this->getUser()->getUsername() !== $username)
$this->getUser()->setUsername($username);
$em->persist($this->getUser());
$em->flush();
*/
//}
//$company = $this->getUser();
$company = $userRepository->findOneByGaeaId($id);
$company_array = json_decode($serializer->serialize($company, "json", ['groups' => ['company']]), true);
//dd(count($company->getCompanyFavCompanies()->toArray()));
//dd($company_array);
$company_array['companyFavCompanies'] = count($company->getCompanyFavCompanies()->toArray());
$company_array["email"] = $email;
//dump($company);
$categories = $this->em->getRepository(Category::class)->findAll();
$categories = json_decode($serializer->serialize($categories, "json", ['groups' => ['category', 'company']]));
// nouveau changement
$categoriesLang = $this->getDoctrine()->getRepository(Category::class)->findBy(["unicity" => 1]);
$tabtraduit = [];
$session = $request->getSession();
$langue = $session->get("_locale");
foreach ($categoriesLang as $category) {
$trad = $category;
if ($langue != "fr") {
$trad = $this->traduireContenu->retourTrad($category, $langue);
}
array_push($tabtraduit, json_decode($serializer->serialize($trad, "json", ['groups' => ['category', 'company']])));
// fin nouveau changement
}
$subcategories = $em->getRepository(Subcategory::class)->findByCompany($company);
$subcategories = json_decode($serializer->serialize($subcategories, "json", ['groups' => ['category', 'company']]), true);
if (explode('\\', $em->getClassMetadata(get_class($company))->getName())[2] == 'Person') {
return $this->redirectToRoute('personProfile');
}
foreach ($company->getCompanyFavCompanies() as $fav) {
$company->addCompanyFavCompany($fav);
}
return new JsonResponse([
'company' => $company_array,
//'categories' => $categories,
'categoriesLang' => $tabtraduit,
'subcategories' => $subcategories
]);
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/profile/entreprise", name="companyProfileShow",methods={"GET","POST"})
*/
public function showProfile(Request $request, TraduireContenu $traduireContenu, UserRepository $userRepository)
{
return $this->render('company/profile.html.twig');
// fin nouveau changement
}
// /**
// * @Route("/profile/entreprise", name="companyProfileShow")
// */
// public function showProfile(Request $request)
// {
// //$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
// $em = $this->getDoctrine()->getManager();
// $company = $this->getUser();
// $categories = $this->em->getRepository(Category::class)->findAll();
// $subcategories = $em->getRepository(Subcategory::class)->findByCompany($company);
// if (explode('\\', $em->getClassMetadata(get_class($company))->getName())[2] == 'Person') {
// return $this->redirectToRoute('personProfile');
// }
// foreach ($company->getCompanyFavCompanies() as $fav) {
// $company->addCompanyFavCompany($fav);
// }
// return $this->render('company/profile.html.twig', [
// 'company' => $company,
// 'categories' => $categories,
// 'subcategories' => $subcategories
// ]);
// }
/**
* @Route("/activationProfil/{gaeaid}/", name="activationProfil")
*/
public function activation(Request $request)
{
$msg = "Erreur";
$gaeaid = $request->get('gaeaid');
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository(User::class)->findOneBy(array('gaeaUserId' => $gaeaid));
if ($user != null) {
$rep = true;
$rep2 = false;
$user->setActived($rep);
$msg = "Réussite !";
}
return new JsonResponse(['userId' => $user->getId(), 'userActivated' => $user->getActived(), 'gaeaId' => $gaeaid, 'message' => $msg]);
}
/**
* @Route("/parametres/entreprise", name="compagnySettings")
*/
public function showSettings(Request $request, MailerInterface $mailer, RegisteredToNewsletterChecker $registeredToNewsletterChecker)
{
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_FULLY');
$company = $this->getUser();
$email = $request->getSession()->get('email');
$categories = $this->em->getRepository(Category::class)->findAll();
$intYear = idate("Y");
$registeredToNewsletter = $registeredToNewsletterChecker->check();
$desactivateForm = $this->createForm(DesactivateCompanyType::class);
$desactivateForm->handleRequest($request);
if ($desactivateForm->isSubmitted()) {
if ($desactivateForm->isValid()) {
$emailForm = $desactivateForm->get('email')->getData();
if ($emailForm === $email) {
$passwordForm = $desactivateForm->get('password')->getData();
$encryptedPassword = md5($passwordForm);
$response = $this->client->request(
'POST',
' http://127.0.0.1:8001/apictrl/login',
[
'json' => [
'email' => $emailForm,
'password' => $encryptedPassword
],
]
);
$decodedPayload = $response->toArray();
if (isset($decodedPayload['id'])) {
$company->setActivated(false);
$this->em->flush();
$cryptService = new CryptService();
$encryptString = $cryptService->encrypt($company->getId());
$url = $this->generateUrl('companyActivate', ['hash' => $encryptString]);
// envoyer par mail http://localhost/company/activate/{encryptString}
$activateEmail = (new TemplatedEmail())
->from('no-reply@repertoirevert.org')
->to(new Address($email))
->subject('A CONSERVER - Désactivation de votre compte Répertoire Vert')
->htmlTemplate('emails/re-activation.html.twig')
->context([
'url' => 'https://repertoirevert.org' . $url,
//'url' => 'https://127.0.0.1:8000'.$url,
]);
// A REACTIVER QUAND L'ENVOI DE MAIL MARCHERA SUR LE SERVEUR
//$mailer->send($activateEmail);
return $this->redirectToRoute('logout');
} else {
$desactivateForm->addError(new FormError($decodedPayload['message']));
}
} else {
$desactivateForm->addError(new FormError('La désactivation du compte n\'est pas celle du compte actuel '));
}
}
}
if (!$company->getActivated()) {
die('Votre profile n\'est pas activé veuillez réactiver votre compte');
}
return $this->render('company/settings.html.twig', [
// 'company' => $company,
'email' => $email,
// 'currentYear' => $intYear,
// 'categories' => $categories,
// 'desactivateForm' => $desactivateForm->createView(),
'registeredToNewsletter' => $registeredToNewsletter,
]);
}
/**
* @Route("/company/activate/{hash}", name="companyActivate")
*/
public function activateCompany($hash, Request $request)
{
$cryptService = new CryptService();
$decryptString = $cryptService->decrypt($hash);
$company = $this->em->getRepository(Company::class)->find($decryptString);
if (isset($company)) {
$company->setActivated(true);
$this->em->flush();
}
return $this->redirectToRoute('accountActivated');
//K084a2pUeHc0b3d5bUg1U3lwRWkwdz09
}
/**
* @Route("/administration/disable/company/{id}", name="companyDisable")
*/
public function disableCompany($id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository('App:Company')->findOneBy(array('id' => $id));
if ($request->getMethod() == "POST" and ($company->isActived(true))) {
$company->setActived(false);
$em->flush();
$this->addFlash(
'notice',
'Entreprise désactivée'
);
return $this->redirectToRoute('companyManage');
}
return $this->render('company/disable.html.twig', [
'company' => $company
]);
}
/**
* @Route("/user/disable/company/{id}", name="companyDisableItself")
*/
public function companyDisableItself($id, Request $request)
{
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository('App:Company')->findOneBy(array('id' => $id));
if ($company->isActived(true)) {
$company->setActived(false);
$em->flush();
$this->addFlash(
'notice',
'Votre compte entreprise a été désactivé.
Vous avez reçu un email de réactivation
de votre compte entreprise.'
);
$this->sendAccountReActivationMail($company->getEmail(), $company->getToken());
}
return $this->render('user/login.html.twig', [
'company' => $company
]);
}
/**
* @Route("/user/enable/company/{id}", name="companyReEnableItself")
*/
public function companyReEnableItself($email, Request $request)
{
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository('App:Company')->findOneBy(array('email' => $email));
if ($company->isActived(false)) {
$company->setActived(true);
$em->flush();
}
return $this->render('user/login.html.twig', [
'company' => $company
]);
}
/**
* @Route("/entreprise/recherche/{param}", name="companySearch")
*/
public function search($param)
{
$em = $this->getDoctrine()->getManager();
$companies = $em->getRepository(Company::class)->createQueryBuilder('p')
->andWhere('p.name LIKE :param')
->setParameter('param', '%' . $param . '%')
->getQuery();
$companies = $companies->execute();
return $this->render('company/search.html.twig', [
'companies' => $companies
]);
}
/**
* @Route("/administration/companies/",name="companyManage")
*/
public function manage(Request $request)
{
$em = $this->getDoctrine()->getManager();
$companies = $em->getRepository('App:User')->findBy(['role' => 'ROLE_COMPANY']);
return $this->render('company/manage.html.twig', [
'companies' => $companies,
]);
}
public function sendRegistrationMail($email, $token, \Swift_Mailer $mailer)
{
$message = (new \Swift_Message('Merci de valider votre adresse mail'))
->setFrom('no_reply@repertoirevert.org')
->setTo($email)
->setBody(
$this->renderView(
// app/Resources/views/Emails/registration.html.twig
'emails/registration-company.html.twig',
[
'email' => $email,
'token' => $token
]
),
'text/html'
);
try {
$mailer->send($message);
} catch (\Swift_TransportException $e) {
echo $e->getMessage();
}
return $this->redirectToRoute('login');
}
public function sendAccountReActivationMail($email, $token, \Swift_Mailer $mailer)
{
$message = (new \Swift_Message('Merci de valider votre adresse mail'))
->setFrom('no_reply@repertoirevert.org')
->setTo($email)
->setBody(
$this->renderView(
// app/Resources/views/Emails/registration.html.twig
'emails/re-activation.html.twig',
[
'email' => $email,
'token' => $token
]
),
'text/html'
);
$mailer->send($message);
/*
try {
$mailer->send($message);
} catch (\Swift_TransportException $e) {
echo $e->getMessage();
}
return $this->redirectToRoute('login');*/
}
/**
* @Route("/addFavoris/{slug}", name="addFavoris")
*/
public function addFavoris($slug)
{
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository(Company::class)->findOneBy(['slug' => $slug]);
$date = (new \DateTime());
$user = $this->getUser();
$user->addCompanyFavs($company);
$fav = $em->getRepository(CompanyFavoris::class)->findOneBy(['CompanySlug' => $slug, 'date' => $date]);
if ($fav == null) :
$favo = new CompanyFavoris();
$favo->setDate($date);
$favo->setCompanySlug($slug);
$favo->setNumber(1);
$em->persist($favo);
$em->flush();
else :
$fav->setNumber($fav->getNumber() + 1);
$em->persist($fav);
$em->flush();
endif;
$products = $em->getRepository(Product::class)->findBy(array('company' => $company));
$n = 1;
return $this->render('company/show.html.twig', [
'company' => $company,
'products' => $products,
'fav' => $fav,
'n' => $n
]);
}
/**
* @Route("/deleteFavoris/{slug}", name="deleteFavoris")
*/
public function deleteFavoris($slug)
{
$em = $this->getDoctrine()->getManager();
$company = $em->getRepository(Company::class)->findOneBy(['slug' => $slug]);
$user = $this->getUser();
$date = (new \DateTime());
$favoris = $em->getRepository(CompanyFavoris::class)->findOneBy(array('CompanySlug' => $company->getSlug(), 'date' => $date));
$user->deleteCompanyFavs($company);
if ($favoris->getNumber() == 1) {
$em->remove($favoris);
} else {
$favoris->setNumber($favoris->getNumber() - 1);
}
$em->flush();
$products = $em->getRepository(Product::class)->findBy(array('company' => $company));
$n = 0;
return $this->render('company/show.html.twig', [
'company' => $company,
'products' => $products,
'n' => $n
]);
}
/**
* @Route("/companiesFav", name="companiesFav")
* @return
*/
public function companiesFav()
{
$em = $this->getDoctrine()->getManager();
$companiesFav = $em->getRepository(CompanyFav::class)->findBy(['user' => $this->getUser()]);
$companies = new ArrayCollection();
foreach ($companiesFav as $comp) {
$companies[] = $comp->getCompany();
}
return $this->render('company/companiesFav.html.twig', [
'companies' => $companies,
'companiesFav' => $companiesFav
]);
}
/**
* @Route("/Map/Entreprises", name="MapEntreprises")
*/
public function MapCompanies()
{
$em = $this->getDoctrine()->getManager();
$companies = $em->getRepository(Company::class)->findAll();
return $this->render('page/map.html.twig', [
'companies' => json_encode($companies)
]);
}
/**
* @Route("/tarifs-niveaux", name="tarifs-niveaux")
*/
public function tarifsNiveaux(): Response
{
return $this->render('company/tarifs_niveaux.html.twig');
}
//"/company/show/{companyId}/{subcategoryId}/{categoryId}", name="ShowCompanyDetails" , requirements={"id"="\d+"}
// function show companydetails
/**
* @Route("/company/show/{companyId}", name="ShowCompanyDetails" , requirements={"id"="\d+"})
*
*
*/
public function showDetails(Request $request, $companyId, CompanyRepository $companyRepository, SubcategoryRepository $subcategoryRepository)
{
$em = $this->getDoctrine()->getManager();
$company = $companyRepository->findOneBy(['id' => $companyId]);
// dump($company);
$categoryCompany = $company->getCategories();
// dump($categoryCompany);
$langue = $request->getSession()->get("_locale");
$liste_categories_traduites = new ArrayCollection();
if ($langue != "fr") {
//$category = $this->traduireContenu->retourTrad($category, $langue);
//$all_categories = $em->getRepository(Category::class)->findBy(['unicity' => 1]);
foreach ($categoryCompany as $categorie) {
$liste_categories_traduites->add($this->traduireContenu->retourTrad($categorie, $langue));
}
} else {
foreach ($categoryCompany as $categorie) {
$liste_categories_traduites->add($categorie);
}
}
// dump($liste_categories_traduites);
//$categories = $this->em->getRepository(Category::class)->findAll();
// dump($company->getId()); OK!!!
$subcategories = $subcategoryRepository->findByCompany($company->getId());
// dump($subcategories);
$liste_subcategory_traduites = new ArrayCollection();
if ($langue != "fr") {
foreach ($subcategories as $subcategory) {
$slug = $subcategory->getSlug();
$liste_subcategory_traduites->add($subcategoryRepository->findOneBy(['slug' => $slug, 'unicity' => 0]));
}
} else {
foreach ($subcategories as $subcategory) {
$slug = $subcategory->getSlug();
$liste_subcategory_traduites->add($subcategory);
}
}
$categorySubcategoriesMap = [];
foreach ($liste_categories_traduites as $category) {
$categorySubcategoriesMap[$category->getId()] = [];
}
foreach ($subcategories as $subcategory) {
foreach ($subcategory->getCategories() as $categoryOfSubcategory) {
if (isset($categorySubcategoriesMap[$categoryOfSubcategory->getId()])) {
$categorySubcategoriesMap[$categoryOfSubcategory->getId()][] = $subcategory;
}
}
}
$date = (new \DateTime());
$clicks = $em->getRepository(Visite::class)->findOneBy(array('company' => $company, 'date' => $date));
if ($clicks == null) :
$click = new Visite();
$click->setDate($date);
$click->setCompany($company);
$click->setNumber(1);
$em->persist($click);
$em->flush();
else :
$clicks->setNumber($clicks->getNumber() + 1);
$em->persist($clicks);
$em->flush();
endif;
// dump($liste_categories_traduites);
return $this->render('company/showCompanyDetails.html.twig', [
'company' => $company,
'categories' => $liste_categories_traduites,
'products' => $company->getProducts(),
'subcategories' => $liste_subcategory_traduites,
'categorySubcategoriesMap' => $categorySubcategoriesMap,
]);
}
///////////// Enregistrement des entreprises du fichiers excel dans la bdd + Envoi du mail de réinitialisation mdp //////////////
/**
* @Route("/upload-excel", name="xlsx")
*/
public function getCompaniesfromExcel()
{
$fileFolder = __DIR__ . '/../../public/uploads/'; //choose the folder in which the uploaded file will be stored
$spreadsheet = IOFactory::load($fileFolder . "/entreprises-a-upload.xlsx"); // Here we are able to read from the excel file
$row = $spreadsheet->getActiveSheet()->removeRow(1, 20); // I added this to be able to remove the first file line
$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true); // here, the read data is turned into an array
//dd($sheetData);
foreach ($sheetData as $Row) {
//for($i=0; $i < 57; $i++){
/*$name = $sheetData[$i]['A'];
$description = $sheetData[$i]['B'];
$email= $sheetData[$i]['C'];
$tel = $sheetData[$i]['D'];*/
$email = $Row['C'];
$password = bin2hex(random_bytes(8));
/////////// Ajout des entreprises du fichier excel dans la bdd => FAIT ///////////
/*if($name != null) {
$response = $this->client->request(
'POST',
' http://127.0.0.1:8001/apictrl/add/gaeauser', [
'json' => [
'url' => 'rv',
'username' => $name,
'email' => $email,
'password' => $password,
'newpassword' => $password
]
]);
$content = $response->getContent();
$content = json_decode($content);
$company = new Company();
$company->setName($name);
$company->setStreet('');
$company->setCity('');
$company->setsocialreason('');
$company->setPostcode('');
$company->setRegion('');
$company->setCountry('');
$company->setPhone($tel);
$company->setstartingdate(new \DateTime());
$company->setVision('');
$company->setInfluencezone('');
if($description == null) {
$company->setDescription('');
} else {
$company->setDescription($description);
}
$company->setWantevaluation(0);
$company->setLatitude(0);
$company->setLongtitude(0);
$company->setgaeaUserId($content->id);
$company->setRole('ROLE_COMPANY');
$slugify = new Slugify();
$slug = $slugify->slugify($name);
$company->setSlug($slug);
$company->setActivated(true);
$company->setActived(true);
$company->setEmailValidated(false);
$token = bin2hex(random_bytes(21));
$company->setToken($token);
$company->setInscriptiondate(new \DateTime());
$company->setNiveau('N.0');
$em = $this->getDoctrine()->getManager();
$em->persist($company);
$em->flush();
}*/
/////////// Envoi du mail de réinitialisation de mdp //////////////
if ($email != null) {
$response = $this->client->request(
'POST',
' http://127.0.0.1:8001/apictrl/requestpassword',
[
'json' => [
'url' => 'https://www.repertoirevert.org',
'email' => $email,
]
]
);
}
}
return $this->json(['status' => 200, 'message' => "Ok"]);
}
/**
* @Route("/apiGaeaUser",methods={"POST"})
*/
public function ApiGaeaUser(Request $request, CategoryRepository $catrep)
{
$em = $this->getDoctrine()->getManager();
function longueur_entre($chaine, $min, $max, $required = true)
{
if (isset($chaine)) {
return strlen($chaine) <= $max && strlen($chaine) >= $min;
} else {
if ($required) {
return false;
} else {
return true;
}
}
}
$contenuDecode = $_POST;
//$contenuDecode = json_decode($request->getContent(),true);
$Username = $contenuDecode['Username'];
$Firstname = $contenuDecode['Firstname'];
$Lastname = $contenuDecode['Lastname'];
$Password = $contenuDecode['Password'];
$PasswordConfirm = $contenuDecode['PasswordConfirm'];
$Email = $contenuDecode['Email'];
$EmailConfirm = $contenuDecode['EmailConfirm'];
$Name = $contenuDecode['Name'];
$Socialreason = $contenuDecode['Socialreason'];
$Street = $contenuDecode['Street'];
$Postcode = $contenuDecode['Postcode'];
$Region = $contenuDecode['Region'];
$City = $contenuDecode['City'];
$Country = $contenuDecode['Country'];
$Phone = $contenuDecode['Phone'];
$Urlwebsite = $contenuDecode['Urlwebsite'];
$Urlfacebook = $contenuDecode['Urlfacebook'];
$Urllinkedin = $contenuDecode['Urllinkedin'];
$Urltwitter = $contenuDecode['Urltwitter'];
$Startingdate = $contenuDecode['Startingdate'];
$Certification = $contenuDecode['Certification'];
$Influencezone = $contenuDecode['Influencezone'];
$Categories = json_decode($contenuDecode['Categories'], true);
$Wantevaluation = $contenuDecode['Wantevaluation'];
$Description = $contenuDecode['Description'];
$Vision = $contenuDecode['Vision'];
if (
longueur_entre($Username, 3, 50) &&
longueur_entre($Firstname, 3, 50) &&
longueur_entre($Lastname, 3, 50) &&
longueur_entre($Password, 8, 2147483647) &&
longueur_entre($PasswordConfirm, 8, 2147483647) &&
isset($Email) &&
isset($EmailConfirm) &&
longueur_entre($Name, 3, 100) &&
longueur_entre($Socialreason, 2, 50) &&
longueur_entre($Street, 2, 50, false) &&
longueur_entre($Postcode, 3, 15, false) &&
longueur_entre($Region, 3, 254, false) &&
longueur_entre($City, 3, 254, false) &&
longueur_entre($Country, 3, 254, false) &&
longueur_entre($Phone, 3, 20, false) &&
longueur_entre($Urlwebsite, 3, 254, false) &&
longueur_entre($Urlfacebook, 3, 254, false) &&
longueur_entre($Urllinkedin, 3, 254, false) &&
longueur_entre($Urltwitter, 3, 254, false) &&
isset($Startingdate) &&
isset($Certification) &&
isset($Influencezone) &&
isset($Categories) &&
isset($Wantevaluation) &&
longueur_entre($Description, 3, 508, false) &&
longueur_entre($Vision, 3, 508, false) &&
$Email == $EmailConfirm
) {
$categories_tableau = new ArrayCollection();
foreach ($Categories as $category_name) {
$categories_tableau[] = $catrep->findOneBy(['name' => $category_name]);
}
//$url = " http://127.0.0.1:8001/apictrl/add/gaeauser";
$url = "http://gaea21user.sustlivprogram.org/apictrl/add/gaeauser";
$data = array(
'email' => $Email,
'username' => $Username,
'password' => $Password,
'newpassword' => $PasswordConfirm
);
$data_json = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
if (isset(json_decode($response, true)["id"])) {
$Setcompany = new Company();
$Setcompany->setName($Name);
$Setcompany->setStreet($Street);
$Setcompany->setCity($City);
$Setcompany->setsocialreason($Socialreason);
$Setcompany->setPostcode($Postcode);
$Setcompany->setRegion($Region);
$Setcompany->setCountry($Country);
$Setcompany->setPhone($Phone);
$Setcompany->setUrlwebsite($Urlwebsite);
$Setcompany->setUrllinkedin($Urllinkedin);
$Setcompany->setUrlfacebook($Urlfacebook);
$Setcompany->setUrltwitter($Urltwitter);
$Setcompany->setstartingdate(new \DateTime($Startingdate));
$Setcompany->setCertification($Certification);
$Setcompany->setLastname($Lastname);
$Setcompany->setFirstname($Firstname);
foreach ($categories_tableau as $cat) {
$Setcompany->addCategory($cat);
}
$Setcompany->setVision($Vision);
$Setcompany->setInfluencezone($Influencezone);
$Setcompany->setDescription($Description);
$Setcompany->setWantevaluation($Wantevaluation);
$Setcompany->setLatitude(0);
$Setcompany->setLongtitude(0);
$Setcompany->setgaeaUserId(json_decode($response, true)["id"]);
$Setcompany->setUsername($Username);
$Setcompany->setRole('ROLE_COMPANY');
$slugify = new Slugify();
$slug = $slugify->slugify($Name);
$Setcompany->setSlug($slug);
$Setcompany->setActivated(true);
$Setcompany->setActived(true);
$Setcompany->setEmailValidated(false);
$token = bin2hex(random_bytes(21));
$Setcompany->setToken($token);
$Setcompany->setInscriptiondate(new \DateTime());
$Setcompany->setNiveau($Wantevaluation ? 'N.1' : 'N.0');
$em = $this->getDoctrine()->getManager();
$em->persist($Setcompany);
$em->flush();
}
if (isset(json_decode($response, true)["id"])) {
return $this->json(["id" => json_decode($response, true)["id"], "erreur" => "false"]);
} else {
return $this->json(["erreur" => "true", "erreur_message" => json_decode($response, true)["message"]]);
}
} else {
return $this->json(["erreur" => "true", "erreur_message" => "Formulaire d'inscription non valide."]);
}
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/qui-sommes-nous/", name="companyQSN")
*/
public function quiSommesNous()
{
return $this->render('quisommesnous/company/quisommesnous.html.twig');
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/qui-sommes-nous2/", name="companyQSN2")
*/
public function quiSommesNous2()
{
return $this->render('quisommesnous/company/quisommesnous2.html.twig');
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/qui-sommes-nous3/", name="companyQSN3")
*/
public function quiSommesNous3()
{
return $this->render('quisommesnous/company/quisommesnous3.html.twig');
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/qui-sommes-nous4/", name="companyQSN4")
*/
public function quiSommesNous4()
{
return $this->render('quisommesnous/company/quisommesnous4.html.twig');
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/qui-sommes-nous5/", name="companyQSN5")
*/
public function quiSommesNous5()
{
return $this->render('quisommesnous/company/quisommesnous5.html.twig');
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/communaute/", name="communaute")
*/
public function communaute(Request $request)
{
$session = $request->getSession();
$langue = $session->get("_locale");
$em = $this->getDoctrine()->getManager();
$categoryCommunaute = $em->getRepository(Category::class)->findOneBy(['slug' => 'communaute', 'unicity' => 1]);
if (!$categoryCommunaute) {
throw $this->createNotFoundException('La categorie n\'existe pas');
}
if ($langue != "fr") {
$categoryCommunaute = $this->traduireContenu->retourTrad($categoryCommunaute, $langue);
}
$subcategoryCommunaute = $categoryCommunaute->getSubcategories();
$all_categories = $em->getRepository(Category::class)->findBy(['unicity' => 1]);
$liste_categories_traduites = [];
foreach ($all_categories as $categorie_particuliere) {
$liste_categories_traduites[] = $this->traduireContenu->retourTrad($categorie_particuliere, $langue);
}
return $this->render('company/communaute.html.twig', [
'subcategoryCommunaute' => $subcategoryCommunaute,
'categories' => $liste_categories_traduites
]);
}
/**
* @Route("/fr/listing", name="listing")
*/
public function listing(CallApiService $CallApiService)
{
$companies = $CallApiService->merged_users_companies();
return $this->render('company/listing.html.twig', [
'companies' => $companies
]);
}
/**
* @Route("/fr/export_CSV", name="export_CSV" )
*/
public function export_CSV(Request $request)
{
$companies = $request->request->get('companies');
$array_companies = json_decode($companies, true);
$dataToCsv = [];
foreach($array_companies as $company){
$dataToCsv[] = [
$company['name'],
$company['email'],
$company['phone'],
];
}
$lines = [];
foreach ($dataToCsv as $row) {
$lines[] = implode(',', $row);
}
$data = implode(PHP_EOL, $lines);
$data = "Nom, Email, Téléphone".PHP_EOL.$data;
return new Response(
$data,
200,
[
'Content-Type' => 'text/csv',
"Content-disposition" => "attachment; filename=Listing.csv"
]
);
}
}