diff --git a/src/UnicaenMail/Entity/HasMailsInterface.php b/src/UnicaenMail/Entity/HasMailsInterface.php new file mode 100644 index 0000000000000000000000000000000000000000..2859ec8a8e88601f104690e71265f3a7bc4b01d9 --- /dev/null +++ b/src/UnicaenMail/Entity/HasMailsInterface.php @@ -0,0 +1,17 @@ +<?php + +namespace UnicaenMail\Entity; + +use UnicaenMail\Entity\Db\Mail; +use UnicaenRenderer\Entity\Db\Template; + +interface HasMailsInterface +{ + + public function getMails(): array; + public function hasMail(Mail $mail): bool; + public function addMail(Mail $mail): void; + public function removeMail(Mail $mail): void; + public function hasMailWithTemplateCode(string|Template $template): bool; + +} \ No newline at end of file diff --git a/src/UnicaenMail/Entity/HasMailsTrait.php b/src/UnicaenMail/Entity/HasMailsTrait.php new file mode 100644 index 0000000000000000000000000000000000000000..73663ef4158600c9d7b64c340377ed53bf09b9f2 --- /dev/null +++ b/src/UnicaenMail/Entity/HasMailsTrait.php @@ -0,0 +1,47 @@ +<?php + +namespace UnicaenMail\Entity; + +use Doctrine\Common\Collections\Collection; +use UnicaenMail\Entity\Db\Mail; +use UnicaenRenderer\Entity\Db\Template; + +trait HasMailsTrait +{ + + protected Collection $mails; + + /** @return Mail[] */ + public function getMails(): array + { + return $this->mails->toArray(); + } + + public function hasMail(Mail $mail): bool + { + return $this->mails->contains($mail); + } + + public function addMail(Mail $mail): void + { + if (!$this->hasMail($mail)) { $this->mails->add($mail); } + } + + public function removeMail(Mail $mail): void + { + $this->removeMail($mail); + } + + public function hasMailWithTemplateCode(string|Template $template): bool + { + $code = ($template instanceof Template)?$template->generateTag():$template; + + /** @var Mail $mail */ + foreach ($this->mails as $mail) { + $motsClefs = explode("||",$mail->getMotsClefs()); + if (in_array($code, $motsClefs)) return true; + } + return false; + } + +} \ No newline at end of file