src/App/Entity/NotificationEmailLogEntry.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Utility\DateTimeUtility;
  4. use DateTime;
  5. use Doctrine\ORM\Mapping as ORM;
  6. use Exception;
  7. use InvalidArgumentException;
  8. /**
  9. * @ORM\Entity
  10. *
  11. * @ORM\Table(
  12. * name="notification_email_log_entries",
  13. * uniqueConstraints={
  14. *
  15. * @ORM\UniqueConstraint(name="generated_message_idx", columns={"generated_message_id"}),
  16. * },
  17. * indexes={
  18. *
  19. * @ORM\Index(name="generated_message_id", columns={"generated_message_id"})
  20. * }
  21. * )
  22. */
  23. class NotificationEmailLogEntry
  24. {
  25. public const STATUS_UNPROCESSED = 0;
  26. public const STATUS_PROCESSED = 1;
  27. /**
  28. * @throws Exception
  29. */
  30. public function __construct(
  31. string $generatedMessageId,
  32. int $status = self::STATUS_UNPROCESSED
  33. ) {
  34. if (!in_array($status, [self::STATUS_PROCESSED, self::STATUS_UNPROCESSED])) {
  35. throw new InvalidArgumentException('Unknown status. Unable to create new NotificationEmailLogEntry');
  36. }
  37. $this->status = $status;
  38. $this->generatedMessageId = $generatedMessageId;
  39. $this->occuredAt = DateTimeUtility::createDateTimeUtc();
  40. }
  41. /**
  42. * @ORM\GeneratedValue(strategy="CUSTOM")
  43. *
  44. * @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
  45. *
  46. * @ORM\Column(name="id", type="guid")
  47. *
  48. * @ORM\Id
  49. */
  50. protected ?string $id;
  51. /**
  52. * @ORM\Column(name="status", type="smallint", nullable=false)
  53. */
  54. private int $status;
  55. public function setStatus(int $status): void
  56. {
  57. $this->status = $status;
  58. }
  59. public function getStatus(): int
  60. {
  61. return $this->status;
  62. }
  63. /**
  64. * @ORM\Column(name="occured_at", type="datetime", nullable=false)
  65. */
  66. private DateTime $occuredAt;
  67. /**
  68. * @ORM\Column(name="generated_message_id", type="string", length=128, nullable=false)
  69. */
  70. protected string $generatedMessageId;
  71. }