<?php
namespace App\EventSubscriber\Messaging;
use App\Event\Messaging\ConversationCreatedEvent;
use App\Event\Messaging\ConversationTransferredEvent;
use App\EventSubscriber\AbstractEmailSubscriber;
use App\Manager\MailTypeInterface;
class ConversationSubscriber extends AbstractEmailSubscriber
{
use MailerTeamTrait;
public static function getSubscribedEvents(): array
{
return [
ConversationCreatedEvent::class => [['onConversationCreated'], ['onClaimConversationCreated']],
ConversationTransferredEvent::class => 'onConversationTransferred',
];
}
public function onClaimConversationCreated(ConversationCreatedEvent $event): void
{
$conversation = $event->getConversation();
$contrat = $conversation->getContractNumbers();
if (false === $conversation->isClaim()) {
return;
}
$subject = $this->transEmail('conversation.new_claim.subject', ['reason' => $conversation->getObject()]);
$message = $this->templating->render('email/messaging/new_claim.html.twig', [
'conversation' => $conversation,
'contrat' => $contrat,
'message' => $conversation->getMessages()->first(),
]);
$this->sendEmailToTeam($this->mailer, $conversation->getTeam(), $message, $subject, MailTypeInterface::MESSAGING_CONVERSATION_CREATED);
}
public function onConversationCreated(ConversationCreatedEvent $event): void
{
$conversation = $event->getConversation();
if (true === $conversation->isClaim()) {
return;
}
$team = $conversation->getTeam();
$conversationSubject = $conversation->getSubject();
$contrat = $conversation->getContractNumbers();
$subject = $this->transEmail('conversation.new.subject').' : '
.($conversationSubject ? $conversationSubject->getTheme()->getLabel() : '').' - '.($conversationSubject ? $conversationSubject->getLabel() : '');
$message = $this->templating->render('email/messaging/new_conversation.html.twig', [
'conversation' => $conversation,
'contrat' => $contrat,
'subjectId' => $conversationSubject->getId(),
'message' => $conversation->getMessages()->first(),
]);
$this->sendEmailToTeam($this->mailer, $team, $message, $subject, MailTypeInterface::MESSAGING_CONVERSATION_CREATED);
}
public function onConversationTransferred(ConversationTransferredEvent $event): void
{
$conversation = $event->getConversation();
$team = $conversation->getTeam();
$contrat = $conversation->getContractNumbers();
$subject = $this->transEmail('conversation.transfer.subject');
$message = $this->templating->render('email/messaging/transfer_conversation.html.twig', [
'conversation' => $conversation,
'contrat' => $contrat,
'message' => $conversation->getMessages()->last(),
]);
$this->sendEmailToTeam($this->mailer, $team, $message, $subject, MailTypeInterface::MESSAGING_CONVERSATION_TRANSFERRED);
}
}