✨ feat(Revendeur): Ajoute l'envoi du lien du revendeur par email et affiche la liste des revendeurs.
This commit is contained in:
@@ -5,8 +5,10 @@ namespace App\Controller\Artemis\Revendeur;
|
||||
use App\Entity\Revendeur;
|
||||
use App\Form\Artemis\Revendeur\RevendeurType;
|
||||
use App\Service\Revendeur\RevendeurService;
|
||||
use App\Service\Revendeur\SendLinkEvent;
|
||||
use Cocur\Slugify\Slugify;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
@@ -14,8 +16,16 @@ use Symfony\Component\Routing\Attribute\Route;
|
||||
class RevendeurController extends AbstractController
|
||||
{
|
||||
#[Route(path: '/artemis/revendeur',name: 'artemis_revendeur')]
|
||||
public function revendeur(Request $request,RevendeurService $revendeurService): Response
|
||||
public function revendeur(Request $request,EventDispatcherInterface $eventDispatcher,RevendeurService $revendeurService): Response
|
||||
{
|
||||
if($request->query->has('sendLink')) {
|
||||
$revendeur = $revendeurService->get($request->query->get('id'));
|
||||
$dns = $revendeur->getCode() . "-demande.esy-web.fr";
|
||||
$eventSendLink = new SendLinkEvent($revendeur);
|
||||
$eventDispatcher->dispatch($eventSendLink);
|
||||
$this->addFlash("success","Le lien à été envoyée");
|
||||
return $this->redirectToRoute('artemis_revendeur');
|
||||
}
|
||||
|
||||
return $this->render('artemis/revendeur/revendeur.twig', [
|
||||
'revendeurLists' => $revendeurService->list(),
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Service\Revendeur;
|
||||
|
||||
use App\Entity\Revendeur;
|
||||
use App\Repository\RevendeurRepository;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\TransportExceptionInterface;
|
||||
@@ -49,4 +50,9 @@ class RevendeurService
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
public function get($id) : Revendeur
|
||||
{
|
||||
return $this->revendeurRepository->find($id);
|
||||
}
|
||||
}
|
||||
|
||||
24
src/Service/Revendeur/RevendeurSubcriber.php
Normal file
24
src/Service/Revendeur/RevendeurSubcriber.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Service\Revendeur;
|
||||
use App\Service\Mailer\Mailer;
|
||||
use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
|
||||
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
|
||||
|
||||
#[AsEventListener(event: SendLinkEvent::class, method: 'onSendLinkEvent')]
|
||||
class RevendeurSubcriber
|
||||
{
|
||||
public function __construct(private readonly Mailer $mailer)
|
||||
{
|
||||
}
|
||||
|
||||
public function onSendLinkEvent(SendLinkEvent $sendLinkEvent)
|
||||
{
|
||||
$revendeur = $sendLinkEvent->getRevendeur();
|
||||
$this->mailer->send($revendeur->getEmail(),$revendeur->getRaisonSocial(),"[ESY-WEB] - Lien pour vos demande d'ouverture du site","mails/revendeur/link.twig",[
|
||||
"url" => $revendeur->getCode()."-demande.esy-web.fr",
|
||||
'revendeur' => $revendeur
|
||||
]);
|
||||
|
||||
}
|
||||
}
|
||||
24
src/Service/Revendeur/SendLinkEvent.php
Normal file
24
src/Service/Revendeur/SendLinkEvent.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace App\Service\Revendeur;
|
||||
|
||||
use App\Entity\Revendeur;
|
||||
|
||||
class SendLinkEvent
|
||||
{
|
||||
private Revendeur $revendeur;
|
||||
|
||||
public function __construct(Revendeur $revendeur)
|
||||
{
|
||||
$this->revendeur = $revendeur;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Revendeur
|
||||
*/
|
||||
public function getRevendeur(): Revendeur
|
||||
{
|
||||
return $this->revendeur;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,4 +9,32 @@
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-2 w-full mx-auto bg-gray-800 rounded-lg shadow-lg overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-gray-700">
|
||||
<thead class="bg-gray-700">
|
||||
<tr>
|
||||
<th scope="col" class="px-6 py-3 text-left text-xs font-medium uppercase tracking-wider">Raison social</th>
|
||||
<th scope="col" class="px-6 py-3 text-center text-xs font-medium uppercase tracking-wider">Nom prénom</th>
|
||||
<th scope="col" class="px-6 py-3 text-center text-xs font-medium uppercase tracking-wider">Email téléphone</th>
|
||||
<th scope="col" class="px-6 py-3 text-center text-xs font-medium uppercase tracking-wider">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-gray-700">
|
||||
{% for revendeur in revendeurLists %}
|
||||
<tr class="hover:bg-gray-700 transition relative hover:bg-gray-700 transition">
|
||||
<td class="px-6 py-4 whitespace-nowrap">{{ revendeur.raisonSocial }}</td>
|
||||
<td class="px-6 py-4 text-center text-sm">{{ revendeur.name }} {{ revendeur.surname }}</td>
|
||||
<td class="px-6 py-4 text-center text-sm">{{ revendeur.email }} {{ revendeur.phone }}</td>
|
||||
<td class="px-6 py-4 whitespace-nowrap text-sm text-center">
|
||||
<a href="{{ path('artemis_revendeur',{id:revendeur.id}) }}&sendLink=1" class="bg-blue-600 hover:bg-blue-700 text-white px-3 py-1 rounded mr-2">Modifier</a>
|
||||
<a href="{{ path('artemis_revendeur',{id:revendeur.id}) }}&sendLink=1" class="bg-blue-600 hover:bg-blue-700 text-white px-3 py-1 rounded mr-2">Envoyée le lien du revendeur</a>
|
||||
<a target="_blank" href="{{ path('artemis_revendeur',{id:revendeur.id}) }}?open=1" class="bg-blue-600 hover:bg-blue-700 text-white px-3 py-1 rounded mr-2">Voir le lien du revendeur</a>
|
||||
<a href="{{ path('artemis_revendeur',{id:revendeur.id}) }}?delete=1" class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded mr-2">Supprimer</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
22
templates/mails/revendeur/link.twig
Normal file
22
templates/mails/revendeur/link.twig
Normal file
@@ -0,0 +1,22 @@
|
||||
{% extends 'mails/base.twig' %}
|
||||
|
||||
{% block content %}
|
||||
<mj-text>Bonjour {{ datas.revendeur.raisonSocial }},</mj-text>
|
||||
|
||||
<mj-text>Vous trouverez ci-joint le lien pour effectuer vos demandes "ouverture de site internet" et "tant que revendeur". </mj-text>
|
||||
|
||||
<mj-text>Pour réinitialiser votre mot de passe, veuillez cliquer sur le bouton ci-dessous. Ce lien est valable pour une durée limitée.</mj-text>
|
||||
|
||||
<mj-button href="{{ datas.url }}">
|
||||
{{ datas.url }}
|
||||
</mj-button>
|
||||
|
||||
<mj-text font-size="16px" color="#555555" line-height="1.5" padding-bottom="20px">
|
||||
N’hésitez pas à nous contacter si vous avez des questions ou besoin d’assistance.
|
||||
</mj-text>
|
||||
|
||||
<mj-text font-size="16px" color="#333333" padding-top="30px">
|
||||
Cordialement,<br/>
|
||||
L’équipe Support
|
||||
</mj-text>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user