| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- declare(strict_types=1);
- namespace App\Service\Mailer\Builder\Shop\NewStructureArtistPremium;
- use App\Entity\Access\Access;
- use App\Enum\Core\EmailSendingTypeEnum;
- use App\Service\Mailer\Builder\AbstractBuilder;
- use App\Service\Mailer\Builder\BuilderInterface;
- use App\Service\Mailer\Email;
- use App\Service\Mailer\Model\MailerModelInterface;
- use App\Service\Mailer\Model\Shop\NewStructureArtistPremium\NotificationToSalesAdminModel;
- use Doctrine\Common\Collections\ArrayCollection;
- use Doctrine\ORM\EntityManagerInterface;
- /**
- * Classe NewStructureArtistPremiumTrialRequestSalesAdminBuilder qui est chargé de construire l'Email
- * d'information à l'administration des ventes concernant une demande d'essai artist premium pour une nouvelle structure.
- */
- class NotificationToSalesAdminBuilder extends AbstractBuilder implements BuilderInterface
- {
- public function __construct(
- private readonly EntityManagerInterface $entityManager,
- private readonly string $opentalentNoReplyEmailAddress,
- ) {
- }
- public function support(MailerModelInterface $mailerModel): bool
- {
- return $mailerModel instanceof NotificationToSalesAdminModel;
- }
- /**
- * @param NotificationToSalesAdminModel $mailerModel
- */
- public function build(MailerModelInterface $mailerModel): ArrayCollection
- {
- $author = $this->entityManager->getRepository(Access::class)->find($mailerModel->getSenderId());
- $context = [
- 'trialRequest' => $mailerModel->getTrialRequest(),
- ];
- $content = $this->render('shop/NewStructureArtistPremium/notification-to-sales-admin', $context);
- $email = (new Email())
- ->setEmailEntity($this->buildEmailEntity('Nouvelle demande d\'essai Artist Premium', $author, $content))
- ->setContent($content)
- ->setFrom($this->opentalentNoReplyEmailAddress)
- ->setFromName('Opentalent - Agenda & Logiciels Culturels');
- // Add recipient as a string (direct email address)
- $this->addRecipient($email, 'adv@opentalent.fr', EmailSendingTypeEnum::TO);
- return new ArrayCollection([$email]);
- }
- }
|