unil-lettres /
dilps-tiresias
| 1 | <?php |
||
| 2 | |||
| 3 | declare(strict_types=1); |
||
| 4 | |||
| 5 | namespace Application\Service; |
||
| 6 | |||
| 7 | use Application\DBAL\Types\MessageTypeType; |
||
| 8 | use Application\Model\Export; |
||
| 9 | use Application\Model\Message; |
||
| 10 | use Application\Model\User; |
||
| 11 | use Doctrine\ORM\EntityManager; |
||
| 12 | use Ecodev\Felix\Service\MessageRenderer; |
||
| 13 | |||
| 14 | /** |
||
| 15 | * Service to queue new message for pre-defined purposes. |
||
| 16 | */ |
||
| 17 | class MessageQueuer |
||
| 18 | { |
||
| 19 | 2 | public function __construct(private readonly EntityManager $entityManager, private readonly MessageRenderer $messageRenderer) |
|
| 20 | { |
||
| 21 | 2 | } |
|
| 22 | |||
| 23 | 1 | public function queueExportDone(User $user, Export $export): Message |
|
| 24 | { |
||
| 25 | 1 | $subject = 'Téléchargement prêt'; |
|
| 26 | 1 | $mailParams = [ |
|
| 27 | 1 | 'export' => $export, |
|
| 28 | 1 | ]; |
|
| 29 | |||
| 30 | 1 | $message = $this->createMessage($user, $user->getEmail(), $subject, MessageTypeType::EXPORT_DONE, $mailParams); |
|
|
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||
| 31 | |||
| 32 | 1 | return $message; |
|
| 33 | } |
||
| 34 | |||
| 35 | /** |
||
| 36 | * Create a message by rendering the template. |
||
| 37 | */ |
||
| 38 | 1 | private function createMessage(?User $user, string $email, string $subject, string $type, array $mailParams): Message |
|
| 39 | { |
||
| 40 | 1 | $content = $this->messageRenderer->render($user, $email, $subject, $type, $mailParams); |
|
| 41 | |||
| 42 | 1 | $message = new Message(); |
|
| 43 | 1 | $message->setType($type); |
|
| 44 | 1 | $message->setRecipient($user); |
|
| 45 | 1 | $message->setSubject($subject); |
|
| 46 | 1 | $message->setBody($content); |
|
| 47 | 1 | $message->setEmail($email); |
|
| 48 | 1 | $this->entityManager->persist($message); |
|
| 49 | |||
| 50 | 1 | return $message; |
|
| 51 | } |
||
| 52 | } |
||
| 53 |