<?php
namespace App\Entity;
use App\Utility\DateTimeUtility;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Exception;
use InvalidArgumentException;
/**
* @ORM\Entity
*
* @ORM\Table(
* name="notification_email_log_entries",
* uniqueConstraints={
*
* @ORM\UniqueConstraint(name="generated_message_idx", columns={"generated_message_id"}),
* },
* indexes={
*
* @ORM\Index(name="generated_message_id", columns={"generated_message_id"})
* }
* )
*/
class NotificationEmailLogEntry
{
public const STATUS_UNPROCESSED = 0;
public const STATUS_PROCESSED = 1;
/**
* @throws Exception
*/
public function __construct(
string $generatedMessageId,
int $status = self::STATUS_UNPROCESSED
) {
if (!in_array($status, [self::STATUS_PROCESSED, self::STATUS_UNPROCESSED])) {
throw new InvalidArgumentException('Unknown status. Unable to create new NotificationEmailLogEntry');
}
$this->status = $status;
$this->generatedMessageId = $generatedMessageId;
$this->occuredAt = DateTimeUtility::createDateTimeUtc();
}
/**
* @ORM\GeneratedValue(strategy="CUSTOM")
*
* @ORM\CustomIdGenerator(class="App\Utility\DatabaseIdGenerator")
*
* @ORM\Column(name="id", type="guid")
*
* @ORM\Id
*/
protected ?string $id;
/**
* @ORM\Column(name="status", type="smallint", nullable=false)
*/
private int $status;
public function setStatus(int $status): void
{
$this->status = $status;
}
public function getStatus(): int
{
return $this->status;
}
/**
* @ORM\Column(name="occured_at", type="datetime", nullable=false)
*/
private DateTime $occuredAt;
/**
* @ORM\Column(name="generated_message_id", type="string", length=128, nullable=false)
*/
protected string $generatedMessageId;
}