← Back
Editing: ServiceProviderSender.php
<?php namespace App\Report\Control\Sender; use App\Entity\AgencyPrestataire; use App\Entity\Controle; use App\Report\Control\ReportEmailSender; use App\Report\Control\Type\AlertProviderControlReport; use App\Service\ControleService; use Symfony\Component\Mailer\Exception\TransportExceptionInterface; final class ServiceProviderSender { public function __construct( private readonly ReportEmailSender $emailSender, private readonly AlertProviderControlReport $alertProviderControlReport, private readonly ControleService $controlService ) { } /** * @throws TransportExceptionInterface */ public function __invoke(Controle $control): void { $provider = $this->alertProviderControlReport->getAgencyProvider($control); if (false === $this->isSendable($control) || null === $provider) { return; } $this->controlService->addAlertToHistory($control); ($this->emailSender)( title: $this->alertProviderControlReport->getSubject($control), recipient: $provider->getMailContact(), htmlTemplate: AlertProviderControlReport::TEMPLATE, context: $this->alertProviderControlReport->getContextFromControl($control), cc: array_map(fn (AgencyPrestataire $contact) => $contact->getMailContact(), $this->alertProviderControlReport->getAdditionalProviderContacts($control)) ); } /** * If no note is under 3 and assigned to provider, email is not sendable. */ private function isSendable(Controle $control): bool { foreach ($control->getNotes() as $note) { if ($note->getNote() <= 3 && $note->getItem()->isAssignToProvider()) { return true; } } return true; } }
Save File
Cancel