TestBuilder.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Service\Mailer\Builder;
  4. use App\Entity\Access\Access;
  5. use App\Entity\Organization\Organization;
  6. use App\Enum\Core\ContactPointTypeEnum;
  7. use App\Enum\Core\EmailSendingTypeEnum;
  8. use App\Service\Mailer\Email;
  9. use App\Service\Mailer\Model\MailerModelInterface;
  10. use App\Service\Mailer\Model\TestModel;
  11. use Doctrine\Common\Collections\ArrayCollection;
  12. use Doctrine\ORM\EntityManagerInterface;
  13. use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
  14. /**
  15. * Classe ... qui ...
  16. */
  17. class TestBuilder extends AbstractBuilder implements BuilderInterface
  18. {
  19. public function __construct(
  20. private EntityManagerInterface $entityManager
  21. )
  22. {
  23. }
  24. public function support(MailerModelInterface $mailerModel): bool
  25. {
  26. return $mailerModel instanceof TestModel;
  27. }
  28. /**
  29. * @param TestModel $mailerModel
  30. * @return ArrayCollection
  31. */
  32. public function build(MailerModelInterface $mailerModel): ArrayCollection
  33. {
  34. $organization = $this->entityManager->getRepository(Organization::class)->find($mailerModel->getOrganizationId());
  35. $access = $this->entityManager->getRepository(Access::class)->find($mailerModel->getAccessId());
  36. $emails = new ArrayCollection();
  37. $context = ['organization' => $organization];
  38. $content = $this->render('test', $context);
  39. $email= (new Email())
  40. ->setEmailEntity($this->buildEmailEntity('Mon sujet', $access, $content))
  41. ->setContent($content)
  42. ->setFrom('vincent.guffon@2iopenservice.fr')
  43. ;
  44. $this->addRecipient($email, $access, EmailSendingTypeEnum::TO()->getValue(), ContactPointTypeEnum::PRINCIPAL()->getValue());
  45. $this->addRecipient($email, $organization, EmailSendingTypeEnum::TO()->getValue(), ContactPointTypeEnum::PRINCIPAL()->getValue());
  46. $this->addRecipient($email, "vincent.guffon@gmail.com", EmailSendingTypeEnum::TO()->getValue());
  47. $emails->add($email);
  48. return $emails;
  49. }
  50. }