<?php
//ok on 2022-06-28
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use App\Crud\Entity\crudEntity;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* Usuario
*
* @ORM\Table(name="seg_usuario")
* @ORM\Entity(repositoryClass="App\Repository\SeguridadUsuarioRepository")
*/
class SeguridadUsuario extends crudEntity implements UserInterface, PasswordAuthenticatedUserInterface
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="SEQUENCE")
* @ORM\SequenceGenerator(sequenceName="seg_usuario_id_seq", allocationSize=1, initialValue=1)
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=11, nullable=false, unique=true)
*/
private $username;
/**
* @var string
*
* @ORM\Column(name="nombres", type="string", length=50, nullable=false)
*/
private $nombres;
/**
* @var string
*
* @ORM\Column(name="apellidos", type="string", length=50, nullable=false)
*/
private $apellidos;
/**
* @var string
*
* @ORM\Column(name="telefono", type="string", length=15, nullable=true)
*/
private $telefono;
/**
* @var string
*
* @ORM\Column(name="celular", type="string", length=15, nullable=false)
*/
private $movil;
/**
* @var string
*
* @ORM\Column(name="email", type="string", length=50, nullable=false)
*/
private $email;
/**
* @var string
*
* @ORM\Column(name="direccion", type="text", nullable=true)
*/
private $direccion;
/**
* @var \DateTime
*
* @ORM\Column(name="fecha_registro", type="datetime", nullable=true)
*/
private $fechaRegistro;
/**
* @var \DateTime
*
* @ORM\Column(name="fecha_vigencia_password", type="datetime", nullable=true)
*/
private $fechaVigenciaPassword;
/**
* @var string
*
* @ORM\Column(name="causa_bloqueo", type="string", length=50, nullable=true)
*/
private $causaBloqueo;
/**
* @var string
*
* @ORM\Column(name="password", type="string", length=100, nullable=true)
*/
private $password;
/**
* @var boolean
*
* @ORM\Column(name="eliminado", type="boolean", nullable=true)
*/
private $eliminado;
/**
* @var \DateTime
*
* @ORM\Column(name="fecha_eliminacion", type="datetime", nullable=true)
*/
private $fechaEliminacion;
/**
* @var integer
*
* @ORM\Column(name="intentos_fallidos", type="smallint", nullable=true)
*/
private $intentosFallidos;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\SeguridadRol")
* @ORM\JoinTable(name="seg_usuario_rol",
* joinColumns={@ORM\JoinColumn(name="usuario", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="rol", referencedColumnName="id")}
* )
*/
private $assignedRoles;
/**
* @var boolean
*
* @ORM\Column(name="primer_ingreso", type="boolean", nullable=false)
*/
private $primerIngreso;
/**
* @ORM\OneToMany(targetEntity="Notificacion", mappedBy="usuario", cascade = {"remove", "persist"})
*/
private $notificaciones;
/**
* @var \App\Entity\NmclCargo
*
* @ORM\ManyToOne(targetEntity="App\Entity\NmclCargo")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="cargo", referencedColumnName="id", nullable=false)
* })
*/
private $cargo;
/**
* @var \App\Entity\NmclGrado
*
* @ORM\ManyToOne(targetEntity="App\Entity\NmclGrado")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="grado", referencedColumnName="id", nullable=false)
* })
*/
private $grado;
/**
* @var \App\Entity\Adjunto
*
* @ORM\ManyToOne(targetEntity="App\Entity\Adjunto", fetch="EXTRA_LAZY")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="foto", referencedColumnName="id")
* })
*/
private $foto;
/**
* @var \App\Entity\BaseMovilizacion
*
* @ORM\ManyToOne(targetEntity="App\Entity\BaseMovilizacion")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="base", referencedColumnName="id", nullable=false)
* })
*/
private $baseMovilizacion;
/**
* @var \App\Entity\CentroMovilizacion
*
* @ORM\ManyToOne(targetEntity="App\Entity\CentroMovilizacion")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="centro", referencedColumnName="id", nullable=false)
* })
*/
private $centroMovilizacion;
/**
* @var \App\Entity\UnidadMilitar
*
* @ORM\ManyToOne(targetEntity="App\Entity\UnidadMilitar")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="unidad", referencedColumnName="id", nullable=false)
* })
*/
private $unidadMilitar;
/**
* @var \App\Entity\CentroInstruccion
*
* @ORM\ManyToOne(targetEntity="App\Entity\CentroInstruccion")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="centro_instruccion", referencedColumnName="id", nullable=false)
* })
*/
private $centroInstruccion;
/**
* @var boolean
*
* @ORM\Column(name="activo", type="boolean", nullable=true)
*/
private $activo;
/**
* @var boolean
*
* @ORM\Column(name="conectado", type="boolean", nullable=true)
*/
private $conectado;
/**
* @var \DateTime
*
* @ORM\Column(name="fecha_acceso", type="datetime", nullable=true)
*/
private $fechaAcceso;
/**
* Constructor
*/
public function __construct()
{
$this->assignedRoles = new \Doctrine\Common\Collections\ArrayCollection();
$this->notificaciones = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* A visual identifier that represents this user.
*
* @see UserInterface
*/
public function getUserIdentifier(): string
{
return (string) $this->username;
}
/**
* Set username
*
* @param string $username
* @return SeguridadUsuario
*/
public function setUsername(string $username): self
{
$this->username = $username;
return $this;
}
/**
* Get username
*
* @return string
*/
public function getUsername()
{
return $this->username;
}
public function getIdentificacion()
{
return $this->username;
}
/**
* Set activo
*
* @param boolean $activo
* @return SeguridadUsuario
*/
public function setActivo(bool $activo): self
{
$this->activo = $activo;
return $this;
}
/**
* Get activo
*
* @return boolean
*/
public function getActivo()
{
return $this->activo;
}
/**
* Set password
*
* @param string $password
* @return SeguridadUsuario
*/
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
/**
* Get password
*
* @return string
*/
public function getPassword(): ?string
{
return $this->password;
}
/**
* Set eliminado
*
* @param boolean $eliminado
* @return SeguridadUsuario
*/
public function setEliminado(bool $eliminado): self
{
$this->eliminado = $eliminado;
return $this;
}
/**
* Get eliminado
*
* @return boolean
*/
public function getEliminado()
{
return $this->eliminado;
}
/**
* Set fechaRegistro
*
* @param \DateTime $fechaRegistro
* @return SeguridadUsuario
*/
public function setFechaRegistro(\DateTimeInterface $fechaRegistro): self
{
$this->fechaRegistro = $fechaRegistro;
return $this;
}
/**
* Get fechaRegistro
*
* @return \DateTime
*/
public function getFechaRegistro()
{
return $this->fechaRegistro;
}
/**
* Set fechaEliminacion
*
* @param \DateTime $fechaEliminacion
* @return SeguridadUsuario
*/
public function setFechaEliminacion(\DateTimeInterface $fechaEliminacion=null): self
{
$this->fechaEliminacion = $fechaEliminacion;
return $this;
}
/**
* Get fechaEliminacion
*
* @return \DateTime
*/
public function getFechaEliminacion()
{
return $this->fechaEliminacion;
}
/**
* Set fechaVigenciaPassword
*
* @param \DateTime $fechaVigenciaPassword
* @return SeguridadUsuario
*/
public function setFechaVigenciaPassword(\DateTimeInterface $fechaVigenciaPassword=null): self
{
$this->fechaVigenciaPassword = $fechaVigenciaPassword;
return $this;
}
/**
* Get fechaVigenciaPassword
*
* @return \DateTime
*/
public function getFechaVigenciaPassword()
{
return $this->fechaVigenciaPassword;
}
/**
* Set intentosFallidos
*
* @param integer $intentosFallidos
* @return SeguridadUsuario
*/
public function setIntentosFallidos(int $intentosFallidos): self
{
$this->intentosFallidos = $intentosFallidos;
return $this;
}
/**
* Get intentosFallidos
*
* @return integer
*/
public function getIntentosFallidos()
{
return $this->intentosFallidos;
}
/**
* Set causaBloqueo
*
* @param string $causaBloqueo
* @return SeguridadUsuario
*/
public function setCausaBloqueo(string $causaBloqueo): self
{
$this->causaBloqueo = $causaBloqueo;
return $this;
}
/**
* Get causaBloqueo
*
* @return string
*/
public function getCausaBloqueo()
{
return $this->causaBloqueo;
}
/**
* Set primerIngreso
*
* @param boolean $primerIngreso
* @return SeguridadUsuario
*/
public function setPrimerIngreso(bool $primerIngreso): self
{
$this->primerIngreso = $primerIngreso;
return $this;
}
/**
* Get primerIngreso
*
* @return boolean
*/
public function getPrimerIngreso()
{
return $this->primerIngreso;
}
/**
* Add assignedRoles
*
* @param \App\Entity\SeguridadRol $rol
* @return SeguridadUsuario
*/
public function addAssignedRoles(\App\Entity\SeguridadRol $rol)
{
$this->assignedRoles->add($rol);
return $this;
}
/**
* Remove assignedRoles
*
* @param \App\Entity\SeguridadRol $rol
*/
public function removeAssignedRoles(\App\Entity\SeguridadRol $rol)
{
$this->assignedRoles->removeElement($rol);
}
/**
* Get assignedRoles
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getAssignedRoles()
{
return $this->assignedRoles;
}
public function serialize()
{
return serialize(array(
$this->id,
$this->password,
$this->username,
$this->activo
));
}
public function eraseCredentials()
{ }
public function getRoles(): array
{
//IMPORTANTE: el mecanismo de seguridad de Sf requiere esto como un array
//return $this->assignedRoles->toArray();
$asignablesRoles = $this->assignedRoles->toArray();
$roles = array();
foreach ($asignablesRoles as $rol)
$roles[] = $rol->getNombre();
$roles[] = 'ROLE_USER';
return $roles;
}
public function getRolesStr()
{
$roles = $this->assignedRoles;
$str='';
foreach ($roles as $rol)
if ($str=='')
$str=$rol->getDescripcion();
else
$str=$str.'<br>'.$rol->getDescripcion();
return $str;
}
public function __toString()
{
return $this->getNombreCompleto();
}
public function getNombreCompleto(){
return $this->apellidos.' '.$this->nombres;
}
public static function getParamsForIndexTwig(array $params)
{
$twigParams = parent::getParamsForIndexTwig($params);
$desactivar = array();
foreach ($params['entities'] as $entity)
{
$key = 'nulo';
if (!isset($desactivar[$key]))
$desactivar[$key] = 1;
else
$desactivar[$key] += 1;
}
foreach ($desactivar as $key=>$valor)
{
$desactivar[$key] = $valor>1;
}
$twigParams['desactivar'] = $desactivar;
return $twigParams;
}
public function isRoleAssigned($rolName)
{
if (!is_array($rolName))
{
$rolName = array($rolName);
}
$roles = $this->getAssignedRoles();
foreach ($roles as $assignedRol)
{
if ( in_array($assignedRol->getNombre(), $rolName) )
{
return true;
}
}
return false;
}
public function import($fields) {
// Formato: Identidad|Nombre|ApellidoP|ApellidoM|NombreUsuario|Mail|Telefono|Movil|cod_cc|cod_udad|cod_empleado
$this->setCedula($fields[0]);
$this->setNombres($fields[1]);
$this->setApellidop($fields[2]);
$this->setApellidom($fields[3]);
$this->setUsername($fields[4]);
$this->setEmail($fields[5]);
$this->setTelefono($fields[6]);
$this->setMovil($fields[7]);
$this->setCodigoEmpleado($fields[10]);
$this->setFechaRegistro(new \DateTime());
}
/**
* Add notificaciones
*
* @param \App\Entity\Notificacion $notificaciones
* @return SeguridadUsuario
*/
public function addNotificaciones(\App\Entity\Notificacion $notificaciones)
{
$this->notificaciones->add($notificaciones);
return $this;
}
/**
* Remove notificaciones
*
* @param \App\Entity\Notificacion $notificaciones
*/
public function removeNotificaciones(\App\Entity\Notificacion $notificaciones)
{
$this->notificaciones->removeElement($notificaciones);
}
public function getNombres(): string {
return $this->nombres;
}
public function getTelefono(): ?string {
return $this->telefono;
}
public function getMovil(): ?string {
return $this->movil;
}
public function getEmail() {
return $this->email;
}
public function setNombres(string $nombres): void {
$this->nombres = $nombres;
}
public function setTelefono(string $telefono): void {
$this->telefono = $telefono;
}
public function setMovil(string $movil): void {
$this->movil = $movil;
}
function setEmail($email)
{
$this->email = $email;
}
/**
* Set foto
*
* @param \App\Entity\Adjunto $foto
*/
public function setFoto(\App\Entity\Adjunto $foto = null): void
{
$this->foto = $foto;
}
/**
* Get foto
*
* @return \App\Entity\Adjunto
*/
public function getFoto(): ?\App\Entity\Adjunto
{
return $this->foto;
}
public function getImagen()
{
if ($this->getFoto())
return '<ul class="ace-thumbnails clearfix">'.
' <li>'.
' <a href="'.$this->getFoto()->getUrl().'" data-rel="colorbox">'.
' <img width="45" src="'.$this->getFoto()->getUrl().'">'.
' </a>'.
' </li>'.
'</ul>';
else
return '<ul class="ace-thumbnails clearfix">'.
' <li>'.
' <a href="/images/foto_hombre.jpg" data-rel="colorbox">'.
' <img width="45" src="/images/foto_hombre.jpg">'.
' </a>'.
' </li>'.
'</ul>';
}
public function getApellidos() {
return $this->apellidos;
}
public function setApellidos($apellidos) {
$this->apellidos = $apellidos;
}
public function getNotificaciones()
{
return $this->notificaciones;
}
public function isVerified(): bool
{
return $this->isVerified;
}
public function setIsVerified(bool $isVerified)
{
$this->isVerified = $isVerified;
}
public function getDireccion(): ?string {
return $this->direccion;
}
public function getCargo(): ?\App\Entity\NmclCargo {
return $this->cargo;
}
public function getGrado(): ?\App\Entity\NmclGrado {
return $this->grado;
}
public function getBaseMovilizacion(): ?\App\Entity\BaseMovilizacion {
return $this->baseMovilizacion;
}
public function getCentroMovilizacion(): ?\App\Entity\CentroMovilizacion {
return $this->centroMovilizacion;
}
public function getUnidadMilitar(): ?\App\Entity\UnidadMilitar {
return $this->unidadMilitar;
}
public function getCentroInstruccion(): ?\App\Entity\CentroInstruccion {
return $this->centroInstruccion;
}
public function setDireccion(string $direccion): void {
$this->direccion = $direccion;
}
public function setCargo(\App\Entity\NmclCargo $cargo): void {
$this->cargo = $cargo;
}
public function setGrado(\App\Entity\NmclGrado $grado): void {
$this->grado = $grado;
}
public function setBaseMovilizacion(\App\Entity\BaseMovilizacion $baseMovilizacion): void {
$this->baseMovilizacion = $baseMovilizacion;
}
public function setCentroMovilizacion(\App\Entity\CentroMovilizacion $centroMovilizacion): void {
$this->centroMovilizacion = $centroMovilizacion;
}
public function setUnidadMilitar(\App\Entity\UnidadMilitar $unidadMilitar): void {
$this->unidadMilitar = $unidadMilitar;
}
public function setCentroInstruccion(\App\Entity\CentroInstruccion $centroInstruccion): void {
$this->centroInstruccion = $centroInstruccion;
}
public function getCargoTxt()
{
return $this->cargo ? $this->cargo->__toString() : '';
}
public function getGradoTxt()
{
return $this->grado ? $this->grado->__toString() : '';
}
public function getDatosCompletos(){
return $this->identificacion.'</br>'.$this->nombres.'</br>'.$this->direccion.'</br>'.$this->telefono.'</br>'.$this->email;
}
public function getTelefonosContacto()
{
if($this->telefono!='' and $this->movil!='')
return trim($this->movil);
else
return trim($this->telefono);
}
public function getGradoNombreCompleto()
{
return $this->grado.' '.$this->apellidos.' '.$this->nombres;
}
public function getConectado() {
return $this->conectado;
}
public function getFechaAcceso() {
return $this->fechaAcceso;
}
public function setConectado($conectado) {
$this->conectado = $conectado;
}
public function setFechaAcceso($fechaAcceso=null) {
$this->fechaAcceso = $fechaAcceso;
}
}