<?php
namespace App\Entity;
use App\Classes\Hasher;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Class EmailAddress
*
* @ORM\Entity(repositoryClass="App\Repository\EmailAddressRepository")
* @ORM\Table(name="malys_email_address")
* @package App\Entity
* @UniqueEntity(fields={"address"}, message="Cette adresse email existe déjà")
* @ORM\HasLifecycleCallbacks()
*/
class EmailAddress
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*
* @ORM\Column(name="address", type="string", nullable=false)
* @Assert\NotBlank(message="Veuillez indiquer l'adresse email")
* @Assert\Email(message="L'adresse email n'est pas valide")
*/
protected $address;
/**
* @var DateTime
*
* @ORM\Column(name="confirmedAt", type="datetime", nullable=true)
*/
protected $confirmedAt;
/**
* @var DateTime
*
* @ORM\Column(name="createdAt", type="datetime", nullable=false)
*/
protected $createdAt;
/**
* @var DateTime
*
* @ORM\Column(name="updatedAt", type="datetime", nullable=true)
*/
protected $updatedAt;
/**
* @ORM\Column(name="hashed_id", type="string", nullable=false)
*/
protected $hashedId;
/**
* @ORM\OneToMany(targetEntity="Supplier", mappedBy="emailAddress")
*/
protected $suppliers;
public function __construct()
{
$this->suppliers = new ArrayCollection();
}
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @param int $id
* @return EmailAddress
*/
public function setId(int $id): EmailAddress
{
$this->id = $id;
return $this;
}
/**
* @return string|null
*/
public function getAddress(): ?string
{
return $this->address;
}
/**
* @param string|null $address
* @return EmailAddress
*/
public function setAddress(?string $address): EmailAddress
{
$this->address = $address;
return $this;
}
/**
* @return DateTime|null
*/
public function getCreatedAt(): ?DateTime
{
return $this->createdAt;
}
/**
* Set createdAt
*
* @return EmailAddress
* @ORM\PrePersist
*/
public function setCreatedAt(): EmailAddress
{
$this->createdAt = new DateTime();
$this->updatedAt = new DateTime();
return $this;
}
/**
* @return DateTime|null
*/
public function getUpdatedAt(): ?DateTime
{
return $this->updatedAt;
}
/**
* Set updatedAt
*
* @return EmailAddress
* @ORM\PreUpdate
*/
public function setUpdatedAt(): EmailAddress
{
$this->updatedAt = new DateTime();
return $this;
}
/**
* @return DateTime|null
*/
public function getConfirmedAt(): ?DateTime
{
return $this->confirmedAt;
}
/**
* Set updatedAt
*
* @param DateTime|null $date
* @return EmailAddress
*/
public function setConfirmedAt(DateTime $date = null): EmailAddress
{
$this->confirmedAt = $date;
return $this;
}
/**
* @param string|null $hashedId
* @return $this
*/
public function setHashedId(?string $hashedId = null): EmailAddress
{
$this->hashedId = $hashedId;
return $this;
}
/**
* @return string|null
*/
public function getHashedId(): ?string
{
return $this->hashedId;
}
/**
* @ORM\PrePersist
*/
public function installHashedId()
{
if (is_null($this->hashedId)) {
$this->hashedId = Hasher::generateHash(self::class);
}
}
/**
* @return Collection|Supplier[]
*/
public function getSuppliers()
{
return $this->suppliers;
}
}