diff --git a/data/migrations/business/Version20240911191301.php b/data/migrations/business/Version20240911191301.php index 976be49..98f0102 100644 --- a/data/migrations/business/Version20240911191301.php +++ b/data/migrations/business/Version20240911191301.php @@ -26,6 +26,7 @@ final class Version20240911191301 extends AbstractMigration recipient varchar(255) NOT NULL, sender varchar(255) NULL, sender_name varchar(255) NULL, + failed_at datetime NULL, created_at datetime NOT NULL, PRIMARY KEY (id) );"; diff --git a/src/DataDomain/Business/src/Entity/Mail.php b/src/DataDomain/Business/src/Entity/Mail.php index f5aad21..1cfcfda 100644 --- a/src/DataDomain/Business/src/Entity/Mail.php +++ b/src/DataDomain/Business/src/Entity/Mail.php @@ -33,6 +33,9 @@ class Mail { /** @ORM\Column(name="sender_name", type="string", nullable="true") */ private ?string $senderName; + /** @ORM\Column(name="failed_at", type="datetime", nullable="true") */ + private ?DateTime $failedAt; + /** @ORM\Column(name="created_at", type="datetime") */ private DateTime $createdAt; @@ -41,6 +44,7 @@ class Mail { $now = new DateTime(); $this->setCreatedAt($now); + $this->setFailedAt(null); } @@ -103,6 +107,15 @@ class Mail { $this->senderName = $senderName; } + public function getFailedAt(): ?DateTime + { + return $this->failedAt; + } + public function setFailedAt(?DateTime $failedAt): void + { + $this->failedAt = $failedAt; + } + public function getCreatedAt(): DateTime { return $this->createdAt; } diff --git a/src/Infrastructure/Mail/src/Service/MailService.php b/src/Infrastructure/Mail/src/Service/MailService.php index 6329c50..d4be086 100644 --- a/src/Infrastructure/Mail/src/Service/MailService.php +++ b/src/Infrastructure/Mail/src/Service/MailService.php @@ -7,6 +7,7 @@ namespace Bee\Infrastructure\Mail\Service; use Bee\Data\Business\Entity\Mail; use Bee\Data\Business\Manager\EntityManager; use Bee\Data\Business\Repository\MailRepository; +use DateTime; use Exception; use Latte\Engine; use Nette\Mail\Mailer; @@ -76,6 +77,8 @@ class MailService $this->entityManager->remove($mailToSend); } catch (SendMailFailedException $e) { // log is done withing sendMail + $mailToSend->setFailedAt(new DateTime()); + $this->entityManager->persist($mailToSend); } $this->entityManager->flush(); }