<?php
namespace App\Entity;
use App\Repository\SsoPersonaRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass=SsoPersonaRepository::class)
* @UniqueEntity("dni", message="DNI ya registrado en el sistema.")
* @UniqueEntity("email_personal", message="Email ya registrado en el sistema.")
* @UniqueEntity("dni_tramite", message="Nro de trámite del DNI ya registrado en el sistema.")
*/
class SsoPersona
{
const GENEROS = ['F', 'M', 'O'];
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=150)
* @Assert\NotBlank(
* message = "Campo requerido."
* )
* @Assert\Length(
* min = 3,
* max = 150,
* minMessage = "Tamaño mínimo {{ limit }}",
* maxMessage = "Tamaño máximo {{ limit }}"
* )
*/
private $nombres;
/**
* @ORM\Column(type="string", length=150)
* @Assert\NotBlank(
* message = "Campo requerido."
* )
* @Assert\Length(
* min = 3,
* max = 150,
* minMessage = "Tamaño mínimo {{ limit }}",
* maxMessage = "Tamaño máximo {{ limit }}"
* )
*/
private $apellidos;
/**
* @ORM\Column(type="integer", unique=true)
* @Assert\NotBlank(
* message = "Campo requerido."
* )
* @Assert\Range(
* min = 1000000,
* max = 100000000,
* notInRangeMessage = "Número entre {{ min }} y {{ max }}",
* invalidMessage = "Número inválido"
* )
*/
private $dni;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $urlDni;
/**
* @ORM\Column(type="string", length=100, nullable=true, unique=true)
* @Assert\Email(
* message = "El Email es incorrecto.",
* mode= "strict"
* )
*/
private $email_personal;
/**
* @ORM\OneToMany(targetEntity=SsoUser::class, mappedBy="persona", cascade={"all"})
* @Assert\Valid
*/
private $usuariosPortal;
/**
* @ORM\Column(type="string", length=20, nullable=true, unique=true)
* @Assert\NotBlank(
* message = "Campo requerido."
* )
*/
private $dni_tramite;
/**
* @ORM\Column(type="string", length=2, nullable=true)
* @Assert\Choice(choices=SsoPersona::GENEROS, message="Género inválido.")
*/
private $genero;
/**
* @ORM\OneToMany(targetEntity=SsoMatricula::class, mappedBy="persona", cascade={"all"}, orphanRemoval=true)
* @Assert\Valid
*/
private $matriculas;
/**
* @ORM\OneToMany(targetEntity=SsoFirmaPersona::class, mappedBy="persona", cascade={"all"}, orphanRemoval=true)
*/
private $firmasPersona;
public function __construct()
{
$this->usuariosPortal = new ArrayCollection();
$this->matriculas = new ArrayCollection();
$this->firmasPersona = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getNombres(): ?string
{
return $this->nombres;
}
public function setNombres(string $nombres): self
{
$this->nombres = $nombres;
return $this;
}
public function getApellidos(): ?string
{
return $this->apellidos;
}
public function setApellidos(string $apellidos): self
{
$this->apellidos = $apellidos;
return $this;
}
public function getDni(): ?int
{
return $this->dni;
}
public function setDni(int $dni): self
{
$this->dni = $dni;
return $this;
}
public function getEmailPersonal(): ?string
{
return $this->email_personal;
}
public function setEmailPersonal(?string $email_personal): self
{
$this->email_personal = $email_personal;
return $this;
}
/**
* @return Collection|SsoUser[]
*/
public function getUsuariosPortal(): Collection
{
return $this->usuariosPortal;
}
public function addUsuariosPortal(SsoUser $usuariosPortal): self
{
if (!$this->usuariosPortal->contains($usuariosPortal)) {
$this->usuariosPortal[] = $usuariosPortal;
$usuariosPortal->setPersona($this);
}
return $this;
}
public function removeUsuariosPortal(SsoUser $usuariosPortal): self
{
if ($this->usuariosPortal->removeElement($usuariosPortal)) {
// set the owning side to null (unless already changed)
if ($usuariosPortal->getPersona() === $this) {
$usuariosPortal->setPersona(null);
}
}
return $this;
}
public function getDniTramite(): ?string
{
return $this->dni_tramite;
}
public function setDniTramite(string $dni_tramite): self
{
$this->dni_tramite = $dni_tramite;
return $this;
}
public function getGenero(): ?string
{
return $this->genero;
}
public function setGenero(?string $genero): self
{
$this->genero = $genero;
return $this;
}
/**
* @return Collection|SsoMatricula[]
*/
public function getMatriculas(): Collection
{
return $this->matriculas;
}
public function addMatricula(SsoMatricula $matricula): self
{
if (!$this->matriculas->contains($matricula)) {
$this->matriculas[] = $matricula;
$matricula->setPersona($this);
}
return $this;
}
public function removeMatricula(SsoMatricula $matricula): self
{
if ($this->matriculas->removeElement($matricula)) {
// set the owning side to null (unless already changed)
if ($matricula->getPersona() === $this) {
$matricula->setPersona(null);
}
}
return $this;
}
public function getUrlDni(): ?string
{
return $this->urlDni;
}
public function setUrlDni(?string $urlDni): self
{
$this->urlDni = $urlDni;
return $this;
}
/**
* @return Collection|SsoFirmaPersona[]
*/
public function getFirmasPersona(): Collection
{
return $this->firmasPersona;
}
public function addFirmasPersona(SsoFirmaPersona $firmasPersona): self
{
if (!$this->firmasPersona->contains($firmasPersona)) {
$this->firmasPersona[] = $firmasPersona;
$firmasPersona->setPersona($this);
}
return $this;
}
public function removeFirmasPersona(SsoFirmaPersona $firmasPersona): self
{
if ($this->firmasPersona->removeElement($firmasPersona)) {
// set the owning side to null (unless already changed)
if ($firmasPersona->getPersona() === $this) {
$firmasPersona->setPersona(null);
}
}
return $this;
}
}