src/Controller/Contact/ContactController.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Contact;
  3. use App\Entity\Adresses\Adresse;
  4. use App\Entity\Articles\Article;
  5. use App\Entity\FO\Societe;
  6. use App\Entity\GestionComerciale\Commande;
  7. use App\Entity\Clients\HistoriqueClient;
  8. use App\Entity\GestionComerciale\StatutCommande;
  9. use App\Form\Contact\ContactType;
  10. use App\Library\Datatable\Util\Datatable;
  11. use App\Library\Uploader\Services\FileUploader;
  12. use App\Model\GestionCommerciale\TypeDocumentCommercial;
  13. use App\Security\Voter\EntityVoter;
  14. use App\Service\Articles\ArticleCategorieService;
  15. use App\Service\Articles\ArticleService;
  16. use App\Service\GestionComerciale\EmailService;
  17. use Doctrine\ORM\EntityManagerInterface;
  18. use DTS\eBaySDK\FileTransfer\Types\Data;
  19. use JMS\Serializer\SerializerBuilder;
  20. use Knp\Component\Pager\PaginatorInterface;
  21. use Knp\Snappy\Pdf;
  22. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  23. use Symfony\Component\HttpFoundation\Request;
  24. use Symfony\Component\HttpFoundation\JsonResponse;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\Routing\Annotation\Route;
  27. use Symfony\Component\Security\Core\Exception\AccessDeniedException;
  28. use Symfony\Component\Validator\Validator\ValidatorInterface;
  29. use Symfony\Contracts\Translation\TranslatorInterface;
  30. use Symfony\Component\Validator\Validation;
  31. use Symfony\Component\Validator\Constraints\Email;
  32. class ContactController extends AbstractController
  33. {
  34.     /**
  35.      * @Route("/nous-contacter", name="dtc_contact")
  36.      */
  37.     public function ContactAction(Request$requestEntityManagerInterface $em,TranslatorInterface $translator,ValidatorInterface $validator,EmailService $emailService)
  38.     {
  39.         $user $this->getUser();
  40.         $historiqueClient = new HistoriqueClient();
  41.         $form   $this->createForm(ContactType::class, $historiqueClient);
  42.         $errors = [];
  43.         $form->handleRequest($request);
  44.         if ($form->isSubmitted()) {
  45.             if ($form->isValid()) {
  46.                 $reference $form->get('reference')->getData();
  47.                 $sujet $form->get('sujet')->getData();
  48.                 $prenom $form->get('prenom')->getData();
  49.                 $nom $form->get('nom')->getData();
  50.                 $email $form->get('email')->getData();
  51.                 $telephone $form->get('telephone')->getData();
  52.                 $message $form->get('message')->getData();
  53.                 $rendu_message     $this->renderView('FO/Email/contact.html.twig', ["prenom"=>$prenom,"sujet"=>$sujet,"nom"=>$nom,"email"=>$email,"message"=>$message]);
  54.                 $societe $em->getRepository(Societe::class)->find(1);
  55.                 if (is_object($societe)) {
  56.                     $emailDestination $societe->getEmail();
  57.                     if($societe->getMailTest()) $emailDestination $societe->getEmailTest();
  58.                 } else {
  59.                     $emailDestination 'thomas@noogaa.com';
  60.                 }
  61.                 $prefixe_sujet "";
  62.                 if($sujet=="demande_information")  $prefixe_sujet "[DEMANDE INFORMATION] ";
  63.                 else if($sujet=="support_technique"$prefixe_sujet "[SUPPORT TECHNIQUE] ";
  64.                 else if($sujet=="partenariat"$prefixe_sujet "[PARTENARIAT] ";
  65.                 else if($sujet=="autre"$prefixe_sujet "[AUTRE] ";
  66.                 $titre_email $prefixe_sujet."Formulaire de contact";
  67.                 $donneesEmail=["destinataires"=>[$emailDestination],"message"=>$rendu_message,"titre"=>$titre_email];
  68.                 $errors_envoi $emailService->envoyerEmailClassique($donneesEmail);
  69.                 $em->persist($historiqueClient);
  70.                 $em->flush($historiqueClient);
  71.                 $this->addFlash('notice'$translator->trans('Message envoyé avec succès !'));
  72.                 return $this->redirectToRoute('dtc_contact');
  73.             }
  74.             else {
  75.                 $errors $validator->validate($historiqueClient);
  76.             }
  77.         }
  78.         return $this->render('Contact/Contact/contact.html.twig',['form' => $form->createView(), 'errors' => $errors]);
  79.     }
  80.     /**
  81.      * @Route("/contact", name="dtc_contact_modal")
  82.      */
  83.     public function ContactModalAction(Request$requestEntityManagerInterface $em,TranslatorInterface $translator,ValidatorInterface $validator,EmailService $emailService)
  84.     {
  85.         $titre_modal "Nous contacter";
  86.         $article $request->query->get('article');
  87.         $devis $request->query->get('devis');
  88.         $commande $request->query->get('commande');
  89.         $api $request->query->get('api');
  90.         $valider $request->query->get('valider');
  91.         $historiqueClient = new HistoriqueClient();
  92.         if($devis != "") {
  93.             $devis_obj $em->getRepository(Commande::class)->find($devis);
  94.             $historiqueClient->setMessage("Demande d'informations pour le devis : ".$devis_obj->getReference()."\n");
  95.             if($valider != "") {
  96.                 $titre_modal "Commande Devis ".$devis_obj->getReference();
  97.                 $historiqueClient->setMessage("Validation du devis ".$devis_obj->getReference()."\n");
  98.             }
  99.         }
  100.         else if($article != "") {
  101.             $article_obj $em->getRepository(Article::class)->find($article);
  102.             $historiqueClient->setMessage("Demande d'informations pour le produit : ".$article_obj->getReference()."\n");
  103.         }
  104.         else if($commande != "") {
  105.             $commande_obj $em->getRepository(Commande::class)->find($commande);
  106.             $historiqueClient->setMessage("Demande d'informations pour la commande : ".$commande_obj->getReference()."\n");
  107.         }
  108.         else if($api != "") {
  109.             $historiqueClient->setMessage("Demande d'informations pour API\n");
  110.         }
  111.         $form $this->createForm(ContactType::class, $historiqueClient, [
  112.             'default_sujet' => $devis || $commande || $article || $api 'demande_information' null,
  113.         ]);
  114.         $errors = [];
  115.         $form->handleRequest($request);
  116.         if ($form->isSubmitted()) {
  117.             if ($form->isValid()) {
  118.                 $article NULL;
  119.                 if($request->query->get('article') != ""$article $em->getRepository(Article::class)->find($request->query->get('article'));
  120.                 $reference $form->get('reference')->getData();
  121.                 $sujet $form->get('sujet')->getData();
  122.                 $prenom $form->get('prenom')->getData();
  123.                 $nom $form->get('nom')->getData();
  124.                 $email $form->get('email')->getData();
  125.                 $telephone $form->get('telephone')->getData();
  126.                 $message $form->get('message')->getData();
  127.                 if($devis != "") {
  128.                     if($valider != "") {
  129.                         $sujet "Commande devis";
  130.                     }
  131.                 }
  132.                 $rendu_message     $this->renderView('FO/Email/contact.html.twig', ["prenom"=>$prenom,"sujet"=>$sujet,"nom"=>$nom,"email"=>$email,"message"=>$message,"article"=>$article,"devis"=>$devis]);
  133.                 $prefixe_sujet "";
  134.                 if($sujet=="demande_information")  $prefixe_sujet "[DEMANDE INFORMATION] ";
  135.                 else if($sujet=="support_technique"$prefixe_sujet "[SUPPORT TECHNIQUE] ";
  136.                 else if($sujet=="partenariat"$prefixe_sujet "[PARTENARIAT] ";
  137.                 else if($sujet=="autre"$prefixe_sujet "[AUTRE] ";
  138.                 $titre_email $prefixe_sujet."Formulaire de contact";
  139.                 //demande_information
  140.                 //support_technique
  141.                 //partenariat
  142.                 //autre
  143.                 if($article) {
  144.                     $titre_email $prefixe_sujet." Produit:".$article->getReference();
  145.                 }
  146.                 else if($devis != "") {
  147.                     $titre_email $prefixe_sujet." Devis:".$devis_obj->getReference();
  148.                 }
  149.                 else if($api != "") {
  150.                     $titre_email $prefixe_sujet." API";
  151.                 }
  152.                 if($devis != "") {
  153.                     if($valider != "") {
  154.                         $prefixe_sujet "[COMMANDE DEVIS] ";
  155.                         $titre_email $prefixe_sujet." Devis:".$devis_obj->getReference();
  156.                     }
  157.                 }
  158.                 $societe $em->getRepository(Societe::class)->find(1);
  159.                 if (is_object($societe)) {
  160.                     $emailDestination $societe->getEmail();
  161.                     if($societe->getMailTest()) $emailDestination $societe->getEmailTest();
  162.                 } else {
  163.                     $emailDestination 'thomas@noogaa.com';
  164.                 }
  165.                 $donneesEmail=["destinataires"=>[$emailDestination],"message"=>$rendu_message,"titre"=>$titre_email];
  166.                 $errors_envoi $emailService->envoyerEmailClassique($donneesEmail);
  167.                 $em->persist($historiqueClient);
  168.                 $em->flush($historiqueClient);
  169.                 return new Response(
  170.                     json_encode(['rendu' => '''valide' => '1''url' => '''type' => 'callBackContactProduit']),
  171.                     200,
  172.                     ['Content-Type' => 'application/json']
  173.                 );
  174.             }
  175.             else {
  176.                 $errors $validator->validate($historiqueClient);
  177.             }
  178.         }
  179.         $rendu     $this->renderView('Contact/Contact/contact_modal.html.twig',['form' => $form->createView(), 'errors' => $errors]);
  180.         // $rendu = $this->renderView('FO/Supprimer/supprimer_impossible.html.twig', ['errors' => $erreur]);
  181.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  182.     }
  183.     /**
  184.      * @Route("/devis-personnalise/html", name="dtc_devis_personnalise_html")
  185.      */
  186.     public function ContactDevisPersonnaliseHtml(Request $request,EntityManagerInterface $em,EmailService $emailService)
  187.     {
  188.         $commandeRepo $em->getRepository(Commande::class);
  189.         $user $this->getUser();
  190.         $statutPanier $em->getRepository(StatutCommande::class)->findOneBy(["documentCommercial" => TypeDocumentCommercial::PANIER"ordre" => "1"] );
  191.         // Récupérer ou créer le panier
  192.         $panier $commandeRepo->findOneBy([
  193.             'statutCommande' => $statutPanier,
  194.             'utilisateur' => $user,
  195.             'typeDocumentCommercial' => TypeDocumentCommercial::PANIER
  196.         ]);
  197.         return $this->render(
  198.             'FO/Email/devis_personnalise.html.twig',
  199.             [
  200.                 'sujet'=> 'dee',
  201.                 'panier'=> $panier,
  202.                 'user'=> $user,
  203.             ]
  204.         );
  205.     }
  206.     /**
  207.      * @Route("/devis-personnalise", name="dtc_devis_personnalise", methods={"POST"})
  208.      */
  209.     public function ContactDevisPersonnalise(Request $request,EntityManagerInterface $em,EmailService $emailService): JsonResponse
  210.     {
  211.         $email $request->request->get('email''');
  212.         $adresseLivraisonId $request->request->get('adresseLivraison''');
  213.         $adresseRepository $em->getRepository(Adresse::class);
  214.         $adresseLivraison $adresseRepository->find($adresseLivraisonId);
  215.         if (!$adresseLivraison) {
  216.             return new JsonResponse([
  217.                 'success' => false,
  218.                 'message' => 'Adresse invalide.',
  219.             ]);
  220.         }
  221.         $commandeRepo $em->getRepository(Commande::class);
  222.         $validator Validation::createValidator();
  223.         $errors $validator->validate($email, [
  224.             new Email(),
  225.         ]);
  226.         if (count($errors) > 0) {
  227.             return new JsonResponse([
  228.                 'success' => false,
  229.                 'message' => 'Email invalide.',
  230.             ]);
  231.         }
  232.         $user $this->getUser();
  233.         $historiqueClient = new HistoriqueClient();
  234.         $historiqueClient->setMessage("Devis personnalisé\n");
  235.         $historiqueClient->setUtilisateur($user);
  236.         $historiqueClient->setClient($user->getClient());
  237.         $societe $em->getRepository(Societe::class)->find(1);
  238.         if (is_object($societe)) {
  239.             $emailDestination $societe->getEmail();
  240.             if($societe->getMailTest()) $emailDestination $societe->getEmailTest();
  241.         } else {
  242.             $emailDestination 'thomas@noogaa.com';
  243.         }
  244.         $sujet "Demande de devis personnalisé";
  245.         $titre_email $sujet;
  246.         $statutPanier $em->getRepository(StatutCommande::class)->findOneBy(["documentCommercial" => TypeDocumentCommercial::PANIER"ordre" => "1"] );
  247.         // Récupérer ou créer le panier
  248.         $panier $commandeRepo->findOneBy([
  249.             'statutCommande' => $statutPanier,
  250.             'utilisateur' => $user,
  251.             'typeDocumentCommercial' => TypeDocumentCommercial::PANIER
  252.         ]);
  253.         $rendu_message     $this->renderView('FO/Email/devis_personnalise.html.twig', ["sujet"=>$sujet,"panier"=>$panier,'user'=>$user,'adresseLivraison'=>$adresseLivraison]);
  254.         $donneesEmail=["destinataires"=>[$emailDestination],"message"=>$rendu_message,"titre"=>$titre_email];
  255.         $errors_envoi $emailService->envoyerEmailClassique($donneesEmail);
  256.         $em->persist($historiqueClient);
  257.         $em->flush($historiqueClient);
  258.         return new JsonResponse([
  259.             'success' => true,
  260.             'message' => 'Merci ! Votre demande a été prise en compte.',
  261.         ]);
  262.     }
  263. }