← Back
Editing: EmailReportController.php
<?php namespace App\Controller\Admin; use App\Form\Admin\UserReportType; use App\Report\ReportSender; use App\Repository\UserRepository; use App\Service\UserService; use EasyCorp\Bundle\EasyAdminBundle\Context\AdminContext; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\FormInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Mailer\Exception\TransportExceptionInterface; use Symfony\Component\Routing\Annotation\Route; use Twig\Error\LoaderError; use Twig\Error\RuntimeError; use Twig\Error\SyntaxError; class EmailReportController extends AbstractController { private ?string $message = null; public function __construct(private readonly UserService $userService) { } /** * @throws SyntaxError * @throws TransportExceptionInterface * @throws RuntimeError * @throws LoaderError */ #[Route(path: '/admin/v2/email-reports', name: 'admin_email_reports')] public function index( AdminContext $adminContext, UserRepository $userRepository, ReportSender $reportSender ): Response { $form = $this->createForm(UserReportType::class); $this->handleUserReport($adminContext->getRequest(), $form, $reportSender); if ($role = $adminContext->getRequest()->get('role')) { $reportSender->sendReportForUsers($this->getRoleFromType($role)); $this->message = 'Les rapports ont bien été envoyés'; } if ($userId = $adminContext->getRequest()->get('user')) { $user = $userRepository->find($userId); $reportSender->sendReportForUser($user); $this->message = 'Le rapport a bien été envoyé'; } return $this->render( 'admin/email.reports.html.twig', [ 'message' => $this->message, 'users' => $userRepository->findAll(), 'form' => $form->createView(), ] ); } private function getRoleFromType(string $type): string { return match ($type) { 'organization' => 'ROLE_ORGANIZATION', 'supervisor' => 'ROLE_SUPERVISOR', 'manager' => 'ROLE_MANAGER', 'agent' => 'ROLE_AGENT' }; } /** * @throws SyntaxError * @throws TransportExceptionInterface * @throws RuntimeError * @throws LoaderError */ private function handleUserReport( Request $request, FormInterface $form, ReportSender $reportSender ) { $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $data = $form->getData(); $reportSender->sendReportForUser($data['user']); $this->message = 'Le rapport a bien été envoyé'; } } }
Save File
Cancel