<?php
declare(strict_types=1);
namespace App\Shared\Doctrine\Entity;
use App\Shared\Doctrine\Repository\EmailRepository;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\GeneratedValue;
use Doctrine\ORM\Mapping\Id;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Validator\Constraints\Regex;
#[Entity(repositoryClass: EmailRepository::class)]
#[UniqueEntity('code')]
class Email
{
#[Id]
#[Column(type: 'integer')]
#[GeneratedValue]
private ?int $id = null;
#[Column(type: 'string')]
#[NotBlank]
private string $name;
#[Column(type: 'string', unique: true)]
#[NotBlank]
#[Regex(pattern: '/^[A-Z_]+$/')]
private string $code;
#[Column(type: 'text')]
#[NotBlank]
private string $body;
/**
* @var array<array-key, array{name: string, type: string}>
*/
#[Column(type: 'json', options: ['collation' => 'utf8mb4_bin'])]
private array $parameters;
public function getId(): ?int
{
return $this->id;
}
public function getName(): string
{
return $this->name;
}
public function setName(string $name): void
{
$this->name = $name;
}
public function getCode(): string
{
return $this->code;
}
public function setCode(string $code): void
{
$this->code = $code;
}
public function getParameters(): array
{
return $this->parameters;
}
public function setParameters(array $parameters): void
{
$this->parameters = $parameters;
}
/**
* @return string
*/
public function getBody(): string
{
return $this->body;
}
/**
* @param string $body
*/
public function setBody(string $body): void
{
$this->body = $body;
}
}