src/Entity/TbUsuarioHimedAdmin.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\TbUsuarioHimedAdminRepository;
  4. use App\Service\AyudanteCargador;
  5. use DateTime;
  6. use Doctrine\ORM\Mapping as ORM;
  7. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  8. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  9. use Symfony\Component\Security\Core\User\UserInterface;
  10. use Symfony\Component\Validator\Constraints as Assert;
  11. /**
  12.  * TbUsuarioHimedAdmin
  13.  *
  14.  * @ORM\Table(name="tb_usuario_himed_admin", uniqueConstraints={@ORM\UniqueConstraint(name="str_nombre_usuario_UNIQUE", columns={"str_nombre_usuario"})}, indexes={@ORM\Index(name="tb_usuario_str_contrasenia_idx", columns={"str_contrasenia"}), @ORM\Index(name="tb_usuario_himed_admin_int_id_usuario_creador_fkey_idx", columns={"int_id_usuario_creador"}), @ORM\Index(name="tb_usuario_int_id_cargo_fkey_idx", columns={"int_id_cargo"}), @ORM\Index(name="tb_usuario_bool_estado_idx", columns={"bool_estado"}), @ORM\Index(name="tb_usuario_str_foto_idx", columns={"str_foto"}), @ORM\Index(name="tb_usuario_int_id_tipo_identificacion_fkey_idx", columns={"int_id_tipo_identificacion"})})
  15.  * @ORM\Entity(repositoryClass=TbUsuarioHimedAdminRepository::class)
  16.  * @UniqueEntity(
  17.  *     fields={"strNombreUsuario"},
  18.  *     message="Este nombre de usuario ya se ha utilizado."
  19.  * )
  20.  * @UniqueEntity(
  21.  *     fields={"strCorreoElectronico"},
  22.  *     message="Este correo electrónico ya se ha utilizado."
  23.  * )
  24.  */
  25. class TbUsuarioHimedAdmin implements UserInterfacePasswordAuthenticatedUserInterface
  26. {
  27.     /**
  28.      * @var int
  29.      *
  30.      * @ORM\Column(name="int_id_usuario", type="integer", nullable=false, options={"unsigned"=true,"comment"="Clave primaria"})
  31.      * @ORM\Id
  32.      * @ORM\GeneratedValue(strategy="IDENTITY")
  33.      */
  34.     private $intIdUsuario;
  35.     /**
  36.      * @var string
  37.      * @Assert\NotBlank()
  38.      * @Assert\Regex(
  39.      *     pattern="/^[a-zA-Z\.]*$/",
  40.      *     match="false",
  41.      *     message="El nombre de usuario solo admite letras y puntos."
  42.      * )
  43.      * @Assert\Length(
  44.      *      min = 3,
  45.      *      max = 30,
  46.      *      minMessage = "El nombre de usuario debe tener al menos {{ limit }} caracteres de largo.",
  47.      *      maxMessage = "El nombre de usuario no puede ser superior a {{ limit }} caracteres."
  48.      * )
  49.      * @ORM\Column(name="str_nombre_usuario", type="string", length=180, nullable=false, options={"comment"="Nombre de usuario utilizado para ingresar a la aplicación web HiMed Admin"})
  50.      */
  51.     private $strNombreUsuario;
  52.     /**
  53.      * @ORM\Column(name="json_roles", type="json", nullable=false, options={"comment"="Permisos del usuario para el manejo de la aplicación web HiMed Admin"})
  54.      */
  55.     private $jsonRoles;
  56.     /**
  57.      * @var string|null
  58.      *
  59.      * @Assert\Regex(
  60.      *     pattern="/^[a-zA-Z\s]*$/",
  61.      *     match="false",
  62.      *     message="El campo debe contener solo letras."
  63.      * )
  64.      * @Assert\Length(
  65.      *      min = 3,
  66.      *      max = 16,
  67.      *      minMessage = "El campo debe tener al menos {{ limit }} caracteres de largo.",
  68.      *      maxMessage = "El campo no puede ser superior a {{ limit }} caracteres."
  69.      * )
  70.      * @ORM\Column(name="str_rol_alternativo", type="string", length=180, nullable=true, options={"comment"="Nombre alternativo del rol del usuario"})
  71.      */
  72.     private $strRolAlternativo;
  73.     /**
  74.      * @var int
  75.      * @Assert\NotBlank()
  76.      * @Assert\Length(
  77.      *      min = 6,
  78.      *      max = 16,
  79.      *      minMessage = "El número de identificación debe tener al menos {{ limit }} caracteres de largo.",
  80.      *      maxMessage = "El número de identificación no puede ser superior a {{ limit }} caracteres."
  81.      * )
  82.      * @ORM\Column(name="int_numero_identificacion", type="integer", nullable=false, options={"unsigned"=true,"comment"="Numero de identificación del usuario de la aplicación web HiMed Admin"})
  83.      */
  84.     private $intNumeroIdentificacion;
  85.     /**
  86.      * @var string
  87.      * @Assert\NotBlank()
  88.      * @Assert\Regex(
  89.      *     pattern="/^[a-zA-Z\s]*$/",
  90.      *     match="false",
  91.      *     message="Los nombres deben contener solo letras."
  92.      * )
  93.      * @Assert\Length(
  94.      *      min = 2,
  95.      *      max = 50,
  96.      *      minMessage = "El nombre debe tener al menos {{ limit }} caracteres de largo.",
  97.      *      maxMessage = "El nombre no puede ser superior a {{ limit }} caracteres."
  98.      * )
  99.      * @ORM\Column(name="str_nombres", type="string", length=180, nullable=false, options={"comment"="Nombres del usuario de la aplicación web HiMed Admin"})
  100.      */
  101.     private $strNombres;
  102.     /**
  103.      * @var string
  104.      * @Assert\NotBlank()
  105.      * @Assert\Regex(
  106.      *     pattern="/^[a-zA-Z\s]*$/",
  107.      *     match="false",
  108.      *     message="Los apellidos deben contener solo letras."
  109.      * )
  110.      * @Assert\Length(
  111.      *      min = 2,
  112.      *      max = 50,
  113.      *      minMessage = "El apellido debe tener al menos {{ limit }} caracteres de largo.",
  114.      *      maxMessage = "El apellido no puede ser superior a {{ limit }} caracteres."
  115.      * )
  116.      * @ORM\Column(name="str_apellidos", type="string", length=180, nullable=false, options={"comment"="Apellidos del usuario de la aplicación web HiMed Admin"})
  117.      */
  118.     private $strApellidos;
  119.     /**
  120.      * @var int
  121.      * @Assert\NotBlank()
  122.      * @Assert\Regex(
  123.      *     pattern="/^[0-9]*$/",
  124.      *     match="false",
  125.      *     message="Debe contener solo números."
  126.      * )
  127.      * @Assert\Length(
  128.      *      min = 10,
  129.      *      max = 10,
  130.      *      minMessage = "El celular debe tener al menos {{ limit }} caracteres de largo.",
  131.      *      maxMessage = "El celular no puede ser superior a {{ limit }} caracteres."
  132.      * )
  133.      * @ORM\Column(name="int_numero_movil", type="integer", nullable=false, options={"unsigned"=true,"comment"="Numero de teléfono móvil del usuario de la aplicación web HiMed Admin"})
  134.      */
  135.     private $intNumeroMovil;
  136.     /**
  137.      * @var int
  138.      * @Assert\NotBlank()
  139.      * @Assert\Regex(
  140.      *     pattern="/^[0-9]*$/",
  141.      *     match="false",
  142.      *     message="Debe contener solo números."
  143.      * )
  144.      * @Assert\Length(
  145.      *      min = 7,
  146.      *      max = 10,
  147.      *      minMessage = "El teléfono debe tener al menos {{ limit }} caracteres de largo.",
  148.      *      maxMessage = "El teléfono no puede ser superior a {{ limit }} caracteres."
  149.      * )
  150.      * @ORM\Column(name="int_numero_telefono", type="integer", nullable=false, options={"unsigned"=true,"comment"="Número de telefono fijo del usuario de la aplicación web HiMed Admin"})
  151.      */
  152.     private $intNumeroTelefono;
  153.     /**
  154.      * @var string
  155.      * @Assert\NotBlank()
  156.      * @Assert\Email()
  157.      * @Assert\Regex(
  158.      *     pattern="/^[a-zA-Z0-9_.+-]+@(?:(?:[a-zA-Z0-9-]+\.)?[a-zA-Z]+\.)?(himedsolutions)\.com$/",
  159.      *     message="El dominio del correo electrónico no es válido."
  160.      * )
  161.      * @ORM\Column(name="str_correo_electronico", type="string", length=180, nullable=false, options={"comment"="Correo electrónico del usuario de la aplicación web HiMed Admin"})
  162.      */
  163.     private $strCorreoElectronico;
  164.     /**
  165.      * @var string
  166.      *
  167.      * @ORM\Column(name="str_contrasenia", type="string", length=255, nullable=false, options={"comment"="Contraseña del usuario de la aplicación web HiMed Admin"})
  168.      */
  169.     private $strContrasenia;
  170.     /**
  171.      * @var string|null
  172.      * @
  173.      * @ORM\Column(name="str_foto", type="string", length=255, nullable=true, options={"comment"="Foto del usuario de la aplicación web HiMed Admin"})
  174.      */
  175.     private $strFoto;
  176.     /**
  177.      * @var bool
  178.      *
  179.      * @ORM\Column(name="bool_estado", type="boolean", nullable=false, options={"default"="1","comment"="El valor cero (0) representa que el usuario se encuentra inactivo. El valor uno (1) representa que el usuario se encuentra activo."})
  180.      */
  181.     private $boolEstado true;
  182.     /**
  183.      * @var \DateTime
  184.      *
  185.      * @ORM\Column(name="dt_fecha_creacion", type="datetime", nullable=false, options={"default"="CURRENT_TIMESTAMP","comment"="Fecha de creación del registo"})
  186.      */
  187.     private $dtFechaCreacion;
  188.     /**
  189.      * @var \TbUsuarioHimedAdmin
  190.      * @ORM\ManyToOne(targetEntity="TbUsuarioHimedAdmin")
  191.      * @ORM\JoinColumns({
  192.      *   @ORM\JoinColumn(name="int_id_ultimo_usuario_editor", referencedColumnName="int_id_usuario")
  193.      * })
  194.      */
  195.     private $intIdUltimoUsuarioEditor;
  196.     /**
  197.      * @var \DateTime|null
  198.      *
  199.      * @ORM\Column(name="dt_ultima_fecha_edicion", type="datetime", nullable=true, options={"comment"="Última fecha de edición del registro"})
  200.      */
  201.     private $dtUltimaFechaEdicion;
  202.     /**
  203.      * @var \TbCargoHimedAdmin
  204.      *
  205.      * @ORM\ManyToOne(targetEntity="TbCargoHimedAdmin", fetch="EAGER")
  206.      * @ORM\JoinColumns({
  207.      *   @ORM\JoinColumn(name="int_id_cargo", referencedColumnName="int_id_cargo")
  208.      * })
  209.      * @Assert\NotBlank(
  210.      *     message="El valor seleccionado no es una opción válida."
  211.      * )
  212.      */
  213.     private $intIdCargo;
  214.     /**
  215.      * @var \TbTipoIdentificacion
  216.      *
  217.      * @ORM\ManyToOne(targetEntity="TbTipoIdentificacion")
  218.      * @ORM\JoinColumns({
  219.      *   @ORM\JoinColumn(name="int_id_tipo_identificacion", referencedColumnName="int_id_tipo_identificacion")
  220.      * })
  221.      * @Assert\NotBlank(
  222.      *     message="El valor seleccionado no es una opción válida."
  223.      * )
  224.      */
  225.     private $intIdTipoIdentificacion;
  226.     /**
  227.      * @var \TbUsuarioHimedAdmin
  228.      *
  229.      * @ORM\ManyToOne(targetEntity="TbUsuarioHimedAdmin")
  230.      * @ORM\JoinColumns({
  231.      *   @ORM\JoinColumn(name="int_id_usuario_creador", referencedColumnName="int_id_usuario")
  232.      * })
  233.      */
  234.     private $intIdUsuarioCreador;
  235.     public function __construct()
  236.     {
  237.         $this->dtFechaCreacion = new DateTime();
  238.     }
  239.     public function getUserIdentifier(): string
  240.     {
  241.         return $this->intIdUsuario;
  242.     }
  243.     public function getIntIdUsuario(): ?int
  244.     {
  245.         return $this->intIdUsuario;
  246.     }
  247.     public function getStrNombreUsuario(): ?string
  248.     {
  249.         return $this->strNombreUsuario;
  250.     }
  251.     public function setStrNombreUsuario(?string $strNombreUsuario): self
  252.     {
  253.         $this->strNombreUsuario $strNombreUsuario;
  254.         return $this;
  255.     }
  256.     /**
  257.      * Identificador visual que representa al usuario
  258.      *
  259.      * @see UserInterface
  260.      */
  261.     public function getUsername(): string
  262.     {
  263.         return (string) $this->strNombreUsuario;
  264.     }
  265.     public function getJsonRoles(): ?array
  266.     {
  267.         return $this->jsonRoles;
  268.     }
  269.     public function setJsonRoles(array $jsonRoles): self
  270.     {
  271.         $this->jsonRoles $jsonRoles;
  272.         return $this;
  273.     }
  274.     /**
  275.      * @see UserInterface
  276.      */
  277.     public function getRoles(): array
  278.     {
  279.         $roles $this->jsonRoles;
  280.         // garantiza que por lo menos cada usuario tenga el rol ROLE_USER
  281.         $roles[] = 'ROLE_USER';
  282.         return array_unique($roles);
  283.     }
  284.     public function getStrRolAlternativo(): ?string
  285.     {
  286.         return $this->strRolAlternativo;
  287.     }
  288.     public function setStrRolAlternativo(?string $strRolAlternativo): self
  289.     {
  290.         $this->strRolAlternativo $strRolAlternativo;
  291.         return $this;
  292.     }
  293.     public function getIntNumeroIdentificacion(): ?int
  294.     {
  295.         return $this->intNumeroIdentificacion;
  296.     }
  297.     public function setIntNumeroIdentificacion(?int $intNumeroIdentificacion): self
  298.     {
  299.         $this->intNumeroIdentificacion $intNumeroIdentificacion;
  300.         return $this;
  301.     }
  302.     public function getStrNombres(): ?string
  303.     {
  304.         return $this->strNombres;
  305.     }
  306.     public function setStrNombres(?string $strNombres): self
  307.     {
  308.         $this->strNombres $strNombres;
  309.         return $this;
  310.     }
  311.     public function getStrApellidos(): ?string
  312.     {
  313.         return $this->strApellidos;
  314.     }
  315.     public function setStrApellidos(?string $strApellidos): self
  316.     {
  317.         $this->strApellidos $strApellidos;
  318.         return $this;
  319.     }
  320.     public function getIntNumeroMovil(): ?int
  321.     {
  322.         return $this->intNumeroMovil;
  323.     }
  324.     public function setIntNumeroMovil(?int $intNumeroMovil): self
  325.     {
  326.         $this->intNumeroMovil $intNumeroMovil;
  327.         return $this;
  328.     }
  329.     public function getIntNumeroTelefono(): ?int
  330.     {
  331.         return $this->intNumeroTelefono;
  332.     }
  333.     public function setIntNumeroTelefono(?int $intNumeroTelefono): self
  334.     {
  335.         $this->intNumeroTelefono $intNumeroTelefono;
  336.         return $this;
  337.     }
  338.     public function getStrCorreoElectronico(): ?string
  339.     {
  340.         return $this->strCorreoElectronico;
  341.     }
  342.     public function setStrCorreoElectronico(?string $strCorreoElectronico): self
  343.     {
  344.         $this->strCorreoElectronico $strCorreoElectronico;
  345.         return $this;
  346.     }
  347.     public function getStrContrasenia(): ?string
  348.     {
  349.         return $this->strContrasenia;
  350.     }
  351.     public function setStrContrasenia(string $strContrasenia): self
  352.     {
  353.         $this->strContrasenia $strContrasenia;
  354.         return $this;
  355.     }
  356.     /**
  357.      * @see UserInterface
  358.      */
  359.     public function getPassword(): string
  360.     {
  361.         return (string) $this->strContrasenia ?: '';
  362.     }
  363.     public function getStrFoto(): ?string
  364.     {
  365.         return AyudanteCargador::FOTO_USUARIO.'/'.$this->strFoto;
  366.     }
  367.     public function setStrFoto(?string $strFoto): self
  368.     {
  369.         $this->strFoto $strFoto;
  370.         return $this;
  371.     }
  372.     public function getBoolEstado(): ?bool
  373.     {
  374.         return $this->boolEstado;
  375.     }
  376.     public function setBoolEstado(bool $boolEstado): self
  377.     {
  378.         $this->boolEstado $boolEstado;
  379.         return $this;
  380.     }
  381.     public function getDtFechaCreacion(): ?\DateTimeInterface
  382.     {
  383.         return $this->dtFechaCreacion;
  384.     }
  385.     public function setDtFechaCreacion(\DateTimeInterface $dtFechaCreacion): self
  386.     {
  387.         $this->dtFechaCreacion $dtFechaCreacion;
  388.         return $this;
  389.     }
  390.     public function getIntIdUltimoUsuarioEditor(): ?int
  391.     {
  392.         return $this->intIdUltimoUsuarioEditor;
  393.     }
  394.     public function setIntIdUltimoUsuarioEditor(?self $intIdUltimoUsuarioEditor): self
  395.     {
  396.         $this->intIdUltimoUsuarioEditor $intIdUltimoUsuarioEditor;
  397.         return $this;
  398.     }
  399.     public function getDtUltimaFechaEdicion(): ?\DateTimeInterface
  400.     {
  401.         return $this->dtUltimaFechaEdicion;
  402.     }
  403.     public function setDtUltimaFechaEdicion(?\DateTimeInterface $dtUltimaFechaEdicion): self
  404.     {
  405.         $this->dtUltimaFechaEdicion $dtUltimaFechaEdicion;
  406.         return $this;
  407.     }
  408.     public function getIntIdCargo(): ?TbCargoHimedAdmin
  409.     {
  410.         return $this->intIdCargo;
  411.     }
  412.     public function setIntIdCargo(?TbCargoHimedAdmin $intIdCargo): self
  413.     {
  414.         $this->intIdCargo $intIdCargo;
  415.         return $this;
  416.     }
  417.     public function getIntIdTipoIdentificacion(): ?TbTipoIdentificacion
  418.     {
  419.         return $this->intIdTipoIdentificacion;
  420.     }
  421.     public function setIntIdTipoIdentificacion(?TbTipoIdentificacion $intIdTipoIdentificacion): self
  422.     {
  423.         $this->intIdTipoIdentificacion $intIdTipoIdentificacion;
  424.         return $this;
  425.     }
  426.     public function getIntIdUsuarioCreador(): ?self
  427.     {
  428.         return $this->intIdUsuarioCreador;
  429.     }
  430.     public function setIntIdUsuarioCreador(?self $intIdUsuarioCreador): self
  431.     {
  432.         $this->intIdUsuarioCreador $intIdUsuarioCreador;
  433.         return $this;
  434.     }
  435.     /**
  436.      * Returning a salt in only needed, if you are not using a modern
  437.      * hashing algorithm (e.g bcrypt or sodium) in your security.yaml
  438.      *
  439.      * @see UserInterface
  440.      */
  441.     public function getSalt(): ?string
  442.     {
  443.         return null;
  444.     }
  445.     /**
  446.      * @see UserInterface
  447.      */
  448.     public function eraseCredentials()
  449.     {
  450.         // Si se almacena alguna información temporal o sensible en el usuario, limpiala aquí
  451.         // $this->plainPassword = null;
  452.     }
  453. }