feat(Admin/Dashboard): Affiche le nombre de candidatures en cours.

🐛 fix(JoinController): Corrige l'envoi de mail et ajoute un état Discord.

 feat(JoinController): Ajoute l'état Discord et corrige les templates de mail.
```
This commit is contained in:
Serreau Jovann
2025-12-25 14:48:39 +01:00
parent d6643552de
commit d985258701
4 changed files with 26 additions and 6 deletions

View File

@@ -27,6 +27,7 @@ use App\Form\RequestPasswordRequestType;
use App\Repository\Ag\MainRepository; use App\Repository\Ag\MainRepository;
use App\Repository\EventRepository; use App\Repository\EventRepository;
use App\Repository\InviteEPageRepository; use App\Repository\InviteEPageRepository;
use App\Repository\JoinRepository;
use App\Repository\MembersCotisationsRepository; use App\Repository\MembersCotisationsRepository;
use App\Repository\MembersRepository; use App\Repository\MembersRepository;
use App\Repository\ProductsRepository; use App\Repository\ProductsRepository;
@@ -66,10 +67,11 @@ class AdminController extends AbstractController
{ {
#[Route(path: '/admin', name: 'admin_dashboard', options: ['sitemap' => false], methods: ['GET'])] #[Route(path: '/admin', name: 'admin_dashboard', options: ['sitemap' => false], methods: ['GET'])]
public function adminDashboard(MembersRepository $membersRepository): Response public function adminDashboard(MembersRepository $membersRepository,JoinRepository $joinRepository): Response
{ {
return $this->render('admin/dashboard.twig', [ return $this->render('admin/dashboard.twig', [
'memberCount' => $membersRepository->count(), 'memberCount' => $membersRepository->count(),
'joins' => $joinRepository->count(['state'=>'create'])+$joinRepository->count(['state'=>'waiting']),
]); ]);
} }
#[Route(path: '/admin/products', name: 'admin_products', options: ['sitemap' => false], methods: ['GET'])] #[Route(path: '/admin/products', name: 'admin_products', options: ['sitemap' => false], methods: ['GET'])]

View File

@@ -47,7 +47,7 @@ class JoinController extends AbstractController
if($form->isSubmitted() && $form->isValid()){ if($form->isSubmitted() && $form->isValid()){
$j->setState("create"); $j->setState("create");
$j->setCreateAt(new \DateTimeImmutable("now")); $j->setCreateAt(new \DateTimeImmutable("now"));
$j->setIsDiscord(false);
$cPdf = new Candidat(); $cPdf = new Candidat();
$cPdf->setData($j,$entityManager,$kernel); $cPdf->setData($j,$entityManager,$kernel);
$cPdf->AddPage(); $cPdf->AddPage();
@@ -64,7 +64,7 @@ class JoinController extends AbstractController
$mailer->send('contact@e-cosplay.fr', $mailer->send('contact@e-cosplay.fr',
'E-Cosplay', 'E-Cosplay',
'[E-Cosplay] - Nouvelle candidature', '[E-Cosplay] - Nouvelle candidature',
'candidat/new.twig', 'mails/candidat/new.twig',
['joint'=>$j], ['joint'=>$j],
[new DataPart($content,'candidat.pdf','application/pdf')] [new DataPart($content,'candidat.pdf','application/pdf')]
); );
@@ -73,11 +73,11 @@ class JoinController extends AbstractController
$mailer->send($j->getEmail(), $mailer->send($j->getEmail(),
$j->getSurname()." ".$j->getName(), $j->getSurname()." ".$j->getName(),
"[E-Cosplay] - Confirmation de votre candidature", "[E-Cosplay] - Confirmation de votre candidature",
'candidat/confirm.twig', 'mails/candidat/confirm.twig',
['joint'=>$j], ['joint'=>$j],
[new DataPart($content,'candidat.pdf','application/pdf')] [new DataPart($content,'candidat.pdf','application/pdf')]
); );
return $this->redirectToRoute('app_recruit_comfirmed'); return $this->redirectToRoute('app_recruit_confirmed');
} }
return $this->render('join.twig',[ return $this->render('join.twig',[
'form' => $form->createView(), 'form' => $form->createView(),

View File

@@ -31,6 +31,24 @@
</p> </p>
</div> </div>
</div> </div>
<div class="bg-gray-800 p-6 rounded-xl shadow-2xl border border-gray-700 hover:border-indigo-500 transition duration-300">
<div class="flex items-center justify-between">
<div class="text-indigo-400">
<svg class="w-8 h-8" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20h5v-2a3 3 0 00-5.356-1.857M9 20H4v-2a3 3 0 015-2.236M9 20v-2a3 3 0 00-5-2.236M9 20h5m-5 0h5M12 4a4 4 0 100 8 4 4 0 000-8z"></path></svg>
</div>
<p class="text-sm font-medium text-gray-400">
Membres de l'association
</p>
</div>
<div class="mt-4">
<p class="text-4xl font-extrabold text-white">
{{ joins | number_format(0, ',', ' ') }}
</p>
<p class="text-sm text-gray-500 mt-1">
Total des candidatures en cours
</p>
</div>
</div>
{# Carte 2: Commandes en Attente #} {# Carte 2: Commandes en Attente #}
<div class="bg-gray-800 p-6 rounded-xl shadow-2xl border border-gray-700 hover:border-red-500 transition duration-300"> <div class="bg-gray-800 p-6 rounded-xl shadow-2xl border border-gray-700 hover:border-red-500 transition duration-300">

View File

@@ -139,7 +139,7 @@
{{ 'form.header.title'|trans }} {{ 'form.header.title'|trans }}
</h2> </h2>
{{ form_start(form, {'attr': {'class': 'space-y-8','data-turbo':false}}) }} {{ form_start(form, {'attr': {'class': 'space-y-8'}}) }}
{# IDENTITÉ #} {# IDENTITÉ #}
<div class="grid md:grid-cols-2 gap-6"> <div class="grid md:grid-cols-2 gap-6">