src/AppBundle/Entity/Usuario.php line 28

  1. <?php
  2. namespace AppBundle\Entity;
  3. use DateTimeInterface;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Component\Validator\Constraints as Assert;
  6. use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
  7. use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
  8. use Symfony\Component\Security\Core\User\UserInterface;
  9. /**
  10.  * @ORM\Table(name="usuario")
  11.  * @ORM\Entity(repositoryClass="AppBundle\Repository\UsuarioRepository")
  12.  * @ORM\HasLifecycleCallbacks()
  13.  * @ORM\AttributeOverrides({ 
  14.  *      @ORM\AttributeOverride(name="email", 
  15.  *          column=@ORM\Column(
  16.  *              type="string", 
  17.  *              name="email", 
  18.  *              length=255, 
  19.  *              unique=false, 
  20.  *              nullable=true
  21.  *          )
  22.  *      )
  23.  * })
  24.  */
  25. class Usuario implements UserInterfacePasswordAuthenticatedUserInterface
  26. {
  27.     const ROL_USUARIO 'ROLE_USER';
  28.     const ROL_EMPRESA 'ROLE_EMPRESA';
  29.     const ROL_VENTAS 'ROLE_VENTAS';
  30.     const ROL_RESPCU 'ROLE_RESPCU';
  31.     const ROLE_CONTENIDOS 'ROLE_CONTENIDOS';
  32.     const ROLE_CONTABILIDAD_E_IMPUESTOS 'ROLE_CONTABILIDAD_E_IMPUESTOS';
  33.     const ROLE_SUPER_ADMIN 'ROLE_SUPER_ADMIN';
  34.     const ROLE_DEVELOPER 'ROLE_DEVELOPER';
  35.     const ROLE_ABAP 'ROLE_ABAP';
  36.     const ROLE_PROVEEDOR 'ROLE_PROVEEDOR';
  37.     const ROLE_PROVEEDOR_EMPRESA 'ROLE_PROVEEDOR_EMPRESA';
  38.     const ROLE_GERENTE 'ROLE_GERENTE';
  39.     const ROLE_KONNEN 'ROLE_KONNEN';
  40.     const ROLES = [
  41.         self::ROL_USUARIO,
  42.         self::ROL_EMPRESA,
  43.         self::ROL_VENTAS,
  44.         self::ROL_RESPCU,
  45.         self::ROLE_CONTENIDOS,
  46.         self::ROLE_CONTABILIDAD_E_IMPUESTOS,
  47.         self::ROLE_SUPER_ADMIN,
  48.         self::ROLE_DEVELOPER,
  49.         self::ROLE_ABAP,
  50.         self::ROLE_PROVEEDOR,
  51.         self::ROLE_PROVEEDOR_EMPRESA,
  52.         self::ROLE_GERENTE,
  53.         self::ROLE_KONNEN,
  54.     ];
  55.     /**
  56.      * @ORM\Column(type="integer")
  57.      * @ORM\Id
  58.      * @ORM\GeneratedValue(strategy="AUTO")
  59.      */
  60.     protected $id;
  61.     /**
  62.      * @Assert\NotBlank()
  63.      * @Assert\Length(
  64.      *     min=3,
  65.      *     max=255,
  66.      *     minMessage="El nombre es corto.",
  67.      *     maxMessage="El nombre es largo.",
  68.      *     groups={"Registration", "Profile"}
  69.      * )
  70.      * @ORM\Column(name="username", type="string", length=255, nullable=true)
  71.      */
  72.     protected $username;
  73.     /**
  74.      * @Assert\NotBlank()
  75.      * @Assert\Email()
  76.      * @ORM\Column(name="email", type="string", length=255, nullable=true)
  77.      */
  78.     protected $email;
  79.     /**
  80.      * @var string
  81.      * 
  82.      * @Assert\Length(
  83.      *      min=6, 
  84.      *      max=255,
  85.      *      minMessage="La contraseƱa debe tener como mĆ­nimo {{ limit }} caracteres",
  86.      *      maxMessage="La contraseƱa no puede exceder los {{ limit }} caracteres."
  87.      * )
  88.      * @ORM\Column(name="password", type="string", length=255, nullable=false)
  89.      */
  90.     private $password;
  91.     /**
  92.      * Plain password. Used for model validation. Must not be persisted.
  93.      *
  94.      * @var string
  95.      */
  96.     protected $plainPassword;
  97.     /**
  98.      * @var string
  99.      *
  100.      * @ORM\Column(name="name", type="string", length=40, nullable=true)
  101.      */
  102.     protected $name;
  103.     /**
  104.      * @var string
  105.      *
  106.      * @ORM\Column(name="lastname", type="string", length=40, nullable=true)
  107.      */
  108.     protected $lastname;
  109.     /**
  110.      * @var string
  111.      *
  112.      * @ORM\Column(name="sap_id", type="string", length=12)
  113.      */
  114.     protected $sapId '';
  115.     protected $proveedorId '';
  116.     /**
  117.      * @var string
  118.      *
  119.      * @ORM\Column(name="deleted", type="boolean", nullable=true)
  120.      */
  121.     protected $deleted false;
  122.     /**
  123.      * @ORM\ManyToOne(targetEntity="Empresa", inversedBy="usuarios")
  124.      * @ORM\JoinColumn(name="empresa_id", referencedColumnName="id", nullable=true)
  125.      */
  126.     protected $empresa;
  127.     /**
  128.      * @ORM\ManyToOne(targetEntity="Proveedor", inversedBy="usuarios")
  129.      * @ORM\JoinColumn(name="proveedor_id", referencedColumnName="id", nullable=true)
  130.      */
  131.     protected $proveedor;
  132.     /**
  133.      * @var bool
  134.      *
  135.      * @ORM\Column(name="accepted_terms", type="boolean", nullable=true)
  136.      */
  137.     protected $acceptedTerms false;
  138.     /**
  139.      * @var bool
  140.      *
  141.      * @ORM\Column(name="accepted_mailing", type="boolean", nullable=true)
  142.      */
  143.     protected $acceptedMailing false;
  144.     /**
  145.      * @var bool
  146.      *
  147.      * @ORM\Column(name="aviso_echeq", type="boolean", nullable=false)
  148.      */
  149.     protected $avisoEcheq true;
  150.     /**
  151.      * @var string
  152.      *
  153.      * @ORM\Column(name="telefono", type="string", length=30, nullable=true)
  154.      */
  155.     protected $telefono;
  156.     /**
  157.      * @var string
  158.      *
  159.      * @ORM\Column(name="dni", type="string", length=30, nullable=true)
  160.      */
  161.     protected $dni;
  162.     /**
  163.      * @var datetime
  164.      *
  165.      * @ORM\Column(name="fecha_alta", type="datetime", nullable=true)
  166.      */
  167.     protected $fechaAlta;
  168.     /**
  169.      * @var bool
  170.      *
  171.      * @ORM\Column(name="debug", type="boolean", nullable=false)
  172.      */
  173.     protected $debug false;
  174.     /**
  175.      * @ORM\Column(name="id_debug", type="integer", nullable=true)
  176.      */
  177.     protected $idDebug;
  178.     /**
  179.      * @ORM\Column(name="password_seteada", type="boolean", nullable=true)
  180.      */
  181.     protected $passwordSeteada;
  182.     /**
  183.      * @ORM\Column(name="password_vencida", type="boolean", nullable=true)
  184.      */
  185.     protected $passwordVencida;
  186.     /**
  187.      * @var datetime
  188.      *
  189.      * @ORM\Column(name="password_last_update", type="datetime", nullable=true)
  190.      */
  191.     protected $passwordLastUpdate;
  192.     /**
  193.      * @ORM\Column(type="json")
  194.      */
  195.     protected $roles;
  196.      /**
  197.      * @var string
  198.      *
  199.      * @ORM\Column(name="enabled", type="boolean", nullable=true)
  200.      */
  201.     protected $enabled false;
  202.     /**
  203.      * @var string
  204.      * 
  205.      * @ORM\Column(name="confirmation_token", type="string", length=180, nullable=false)
  206.      */
  207.     private $confirmationToken;
  208.     /**
  209.      * @var string
  210.      * 
  211.      * @ORM\Column(name="salt", type="string", length=255, nullable=true)
  212.      */
  213.     private $salt;
  214.     /**
  215.      * @var datetime
  216.      *
  217.      * @ORM\Column(name="password_requested_at", type="datetime", nullable=true)
  218.      */
  219.     private $password_requested_at
  220.     /**
  221.      * @var datetime
  222.      *
  223.      * @ORM\Column(name="last_login", type="datetime", nullable=true)
  224.      */
  225.     protected $lastLogin;
  226.     public function __construct()
  227.     {
  228.         
  229.     }
  230.     public function getId()
  231.     {
  232.         if($this->debug){
  233.             return $this->idDebug;
  234.         }
  235.         return $this->id;
  236.     }
  237.     /**
  238.      * @Assert\IsTrue(message = "La contraseƱa no puede ser igual al nombre de usuario")
  239.      */
  240.     public function isPasswordLegal()
  241.     {
  242.         return $this->username !== $this->plainPassword;
  243.     }
  244.     /**
  245.      * @ORM\PrePersist
  246.      */
  247.     public function updatedTimestamp()
  248.     {
  249.         if ($this->getFechaAlta() === null) {
  250.             $this->setFechaAlta(new \DateTime('now'));
  251.         }
  252.     }
  253.     public function setId($id)
  254.     {
  255.         $this->id $id;
  256.         return $this;
  257.     }
  258.     
  259.     /**
  260.      * Set empresa.
  261.      *
  262.      * @param string $empresa
  263.      *
  264.      * @return Empresa
  265.      */
  266.     public function setEmpresa($empresa)
  267.     {
  268.         $this->empresa $empresa;
  269.         return $this;
  270.     }
  271.     /**
  272.      * Get empresa.
  273.      *
  274.      * @return Empresa
  275.      */
  276.     public function getEmpresa()
  277.     {
  278.         return $this->empresa;
  279.     }
  280.     /**
  281.      * Set proveedor.
  282.      *
  283.      * @param string $proveedor
  284.      *
  285.      * @return Usuario
  286.      */
  287.     public function setProveedor($proveedor)
  288.     {
  289.         $this->proveedor $proveedor;
  290.         return $this;
  291.     }
  292.     /**
  293.      * Get proveedor.
  294.      *
  295.      * @return Proveedor
  296.      */
  297.     public function getProveedor()
  298.     {
  299.         return $this->proveedor;
  300.     }
  301.     /**
  302.      * Set name.
  303.      *
  304.      * @param string $name
  305.      *
  306.      * @return Usuario
  307.      */
  308.     public function setName($name)
  309.     {
  310.         $this->name $name;
  311.         return $this;
  312.     }
  313.     /**
  314.      * Get name.
  315.      *
  316.      * @return string
  317.      */
  318.     public function getName()
  319.     {
  320.         return $this->name;
  321.     }
  322.     /**
  323.      * Set lastname.
  324.      *
  325.      * @param string $lastname
  326.      *
  327.      * @return Usuario
  328.      */
  329.     public function setLastname($lastname)
  330.     {
  331.         $this->lastname $lastname;
  332.         return $this;
  333.     }
  334.     /**
  335.      * Get lastname.
  336.      *
  337.      * @return string
  338.      */
  339.     public function getLastname()
  340.     {
  341.         return $this->lastname;
  342.     }
  343.     /**
  344.      * Get lastname + name.
  345.      *
  346.      * @return string
  347.      */
  348.     public function getFullname()
  349.     {
  350.         return $this->name .' '$this->lastname;
  351.     }
  352.     public function getDeleted()
  353.     {
  354.         return $this->deleted;
  355.     }
  356.     public function setDeleted($deleted)
  357.     {
  358.         $this->deleted $deleted;
  359.         return $this;
  360.     }
  361.     public function setEmail($email)
  362.     {
  363.         $this->email $email;
  364.         $this->username $email;
  365.         return $this;
  366.     }
  367.     public function getEmail()
  368.     {
  369.         return $this->email;
  370.     }
  371.     public function getSapId()
  372.     {
  373.         return $this->sapId;
  374.     }
  375.     public function setSapId($sapId)
  376.     {
  377.         $this->sapId $sapId;
  378.         return $this;
  379.     }
  380.     public function getProveedorId()
  381.     {
  382.         return $this->proveedorId;
  383.     }
  384.     public function setProveedorId($proveedorId)
  385.     {
  386.         $this->proveedorId $proveedorId;
  387.         return $this;
  388.     }
  389.     public function getAcceptedTerms()
  390.     {
  391.         return $this->acceptedTerms;
  392.     }
  393.     public function setAcceptedTerms($acceptedTerms)
  394.     {
  395.         $this->acceptedTerms $acceptedTerms;
  396.         return $this;
  397.     }
  398.     public function getAvisoEcheq()
  399.     {
  400.         return $this->avisoEcheq;
  401.     }
  402.     public function setAvisoEcheq($avisoEcheq)
  403.     {
  404.         $this->avisoEcheq $avisoEcheq;
  405.         return $this;
  406.     }
  407.     public function getTelefono()
  408.     {
  409.         return $this->telefono;
  410.     }
  411.     public function setTelefono($telefono)
  412.     {
  413.         $this->telefono $telefono;
  414.         return $this;
  415.     }
  416.     public function getDni()
  417.     {
  418.         return $this->dni;
  419.     }
  420.     public function setDni($dni)
  421.     {
  422.         $this->dni $dni;
  423.         return $this;
  424.     }
  425.     public function getAcceptedMailing()
  426.     {
  427.         return $this->acceptedMailing;
  428.     }
  429.     public function setAcceptedMailing($acceptedMailing)
  430.     {
  431.         $this->acceptedMailing $acceptedMailing;
  432.         return $this;
  433.     }
  434.     public function esVendedorFamiq()
  435.     {
  436.         if (in_array('ROLE_RESPCU'$this->getRoles()) || in_array('ROLE_VENTAS'$this->getRoles())) {
  437.             return true;
  438.         }
  439.         return false;   
  440.     }
  441.     public function esEmpresa()
  442.     {
  443.         if (in_array('ROLE_EMPRESA'$this->getRoles()) || in_array('ROLE_PROVEEDOR_EMPRESA'$this->getRoles())) {
  444.             return true;
  445.         }
  446.         return false;   
  447.     }
  448.     
  449.     // TODO: Corregir verificaciĆ³n de roles
  450.     public function esProveedor()
  451.     {
  452.         if (in_array('ROLE_CUENTAS_A_PAGAR'$this->getRoles()) || in_array('ROLE_SUPER_ADMIN'$this->getRoles()) || 
  453.         in_array('ROLE_DEVELOPER'$this->getRoles()) || in_array('ROLE_ABAP'$this->getRoles()) || 
  454.         in_array('ROLE_PROVEEDOR'$this->getRoles()) || in_array('ROLE_PROVEEDOR_EMPRESA'$this->getRoles()))
  455.         {
  456.             return true;
  457.         }
  458.         return false;
  459.     }
  460.     /**
  461.      * Este mĆ©todo debe ser renombrado ya que no cumple con la definiciĆ³n
  462.      */
  463.     public function esVendedor()
  464.     {
  465.         if (in_array('ROLE_RESPCU'$this->getRoles()) || in_array('ROLE_VENTAS'$this->getRoles()) || 
  466.             in_array('ROLE_CONTENIDOS'$this->getRoles()) || in_array('ROLE_SUPER_ADMIN'$this->getRoles()) ||
  467.             in_array('ROLE_CONTABILIDAD_E_IMPUESTOS'$this->getRoles()) || in_array('ROLE_SUPER_ADMIN'$this->getRoles()) || 
  468.             in_array('ROLE_DEVELOPER'$this->getRoles()) || in_array('ROLE_ABAP'$this->getRoles()) || 
  469.             in_array('ROLE_PLANEAMIENTO'$this->getRoles()) || in_array('ROLE_GERENTE'$this->getRoles())) {
  470.             return true;
  471.         }
  472.         return false;
  473.     }
  474.     /**
  475.      * Return if user is admin or super admin
  476.      * @return bool
  477.      */
  478.     public function isAdminOrSuperAdmin()
  479.     {
  480.         if (in_array(self::ROLE_CONTENIDOS$this->getRoles()) ||
  481.             in_array(self::ROLE_CONTABILIDAD_E_IMPUESTOS$this->getRoles()) ||
  482.             in_array(self::ROLE_SUPER_ADMIN$this->getRoles()) ||
  483.             in_array(self::ROLE_DEVELOPER$this->getRoles()) ||
  484.             in_array(self::ROLE_ABAP$this->getRoles())
  485.         ) {
  486.             return true;
  487.         }
  488.         return false;
  489.     }
  490.     /**
  491.      * Return if user is developer
  492.      * @return bool
  493.      */
  494.     public function isDeveloper()
  495.     {
  496.         if (in_array(self::ROLE_DEVELOPER$this->getRoles())) {
  497.             return true;
  498.         }
  499.         return false;
  500.     }
  501.      /**
  502.      * Return if user is esKonnen
  503.      * @return bool
  504.      */
  505.     public function esKonnen()
  506.     {
  507.         if (in_array(self::ROLE_KONNEN$this->getRoles())) {
  508.             return true;
  509.         }
  510.         return false;   
  511.     }
  512.     /**
  513.      * * Verifica si el usuario es rol cuentas a pagar.
  514.      * @return bool
  515.      */
  516.     public function esCuentasAPagar()
  517.     {
  518.         return in_array('ROLE_CUENTAS_A_PAGAR'$this->getRoles());
  519.     }
  520.     public function estaActivo()
  521.     {
  522.         return !$this->deleted && $this->enabled;
  523.     }
  524.     public function esConsumidorFinal() {
  525.         $empresa $this->empresa;
  526.         
  527.         if (is_null($empresa)) {
  528.             return false;
  529.         }
  530.         
  531.         return $empresa->esConsumidorFinal();
  532.     }
  533.     /** 
  534.      *  A partir de este deploy, los nuevos consumidores finales
  535.      * pueden comprar, por lo que hay que distinguirlos de los viejos
  536.      * 
  537.      *  Antes -> consumidores finales dados de alta por la PIN se cargaban con el id de empresa 600000
  538.      * 
  539.      *  Ahora -> consumidores finales dados de alta por la PIN se cargaban con el id de empresa PROPIO (generado en ese alta)
  540.      * 
  541.      * 
  542.      *  esConsumidorFinalNew devuelve si es un consumidor final con su propio id de cliente
  543.      */
  544.     public function esConsumidorFinalNew() {
  545.         $empresa $this->empresa;
  546.         
  547.         if (is_null($empresa)) {
  548.             return false;
  549.         }
  550.         
  551.         return $empresa->esConsumidorFinalNew();
  552.     }
  553.     
  554.     public function getNombreCompleto()
  555.     {
  556.         return $this->name ' ' .$this->lastname;
  557.     }        
  558.     public function getNombreCompletoTruncated()
  559.     {
  560.         $nombreCompleto $this->getNombreCompleto();
  561.         $out strlen($nombreCompleto) > 15 substr($nombreCompleto015).'...' $nombreCompleto;
  562.         return $out;        
  563.     }
  564.     public function getFechaAlta()
  565.     {
  566.         return $this->fechaAlta;
  567.     }
  568.     public function setFechaAlta($fechaAlta)
  569.     {
  570.         $this->fechaAlta $fechaAlta;
  571.         return $this;
  572.     }
  573.     public function getRoles(): array
  574.     {
  575.         $roles $this->roles;
  576.         // we need to make sure to have at least one role
  577.         $roles[] = self::ROL_USUARIO;
  578.         return array_values(array_unique($roles));
  579.     }
  580.     public function setPasswordSeteada ($passwordSeteada) {
  581.         $this->passwordSeteada $passwordSeteada;
  582.         return $this;
  583.     }
  584.     /**
  585.      * 
  586.      */
  587.     public function necesitaPassword() {
  588.         return $this->passwordSeteada == null;  
  589.     }
  590.     
  591.     /**
  592.      * Si el usuario tiene password vencida, se obliga a reestablecerla
  593.      */
  594.     public function getPasswordVencida(){
  595.         return $this->passwordVencida;
  596.     }
  597.     /**
  598.      * Si el usuario modifica su password, la "desvenso"
  599.      */
  600.     public function setPasswordVencida($passwordVencidaBoolVal){
  601.         $this->passwordVencida $passwordVencidaBoolVal;
  602.         return $this;
  603.     }
  604.     public function getPasswordLastUpdate () {
  605.         return $this->passwordLastUpdate;
  606.     }
  607.     public function updatePasswordLastUpdate () {
  608.         $this->passwordLastUpdate = new \DateTime('now');;
  609.         return $this;
  610.     }
  611.      
  612.     /**
  613.      * //Heredo la funciĆ³n para modificar el passwordLastUpdate
  614.      * {@inheritdoc}
  615.      */
  616.     public function setPassword($password)
  617.     {
  618.         $this->password $password;
  619.         if (!empty($password)) {
  620.             $this->updatePasswordLastUpdate();
  621.         }
  622.         
  623.         return $this;
  624.     }
  625.     /**
  626.      * Removes sensitive data from the user.
  627.      *
  628.      * This is important if, at any given point, sensitive information like
  629.      * the plain-text password is stored on this object.
  630.      */
  631.     public function eraseCredentials(){
  632.     }
  633.     /**
  634.      * Returns the identifier for this user (e.g. its username or email address).
  635.      */
  636.     public function getUserIdentifier(): string
  637.     {
  638.         return (string) $this->username;
  639.     }
  640.     /**
  641.      * @see PasswordAuthenticatedUserInterface
  642.      */
  643.     public function getPassword(): string
  644.     {
  645.         return $this->password;
  646.     }
  647.     public function getUsername()
  648.     {
  649.         return $this->username;
  650.     }
  651.     /**
  652.      * Set confirmationToken.
  653.      *
  654.      * @param string $confirmationToken
  655.      *
  656.      * @return Usuario
  657.      */
  658.     public function setConfirmationToken($confirmation_token)
  659.     {
  660.         $this->confirmationToken $confirmation_token;
  661.         return $this;
  662.     }
  663.     /**
  664.      * Get confirmationToken.
  665.      *
  666.      * @return string
  667.      */
  668.     public function getConfirmationToken()
  669.     {
  670.         return $this->confirmationToken;
  671.     }
  672.     public function setUsername(?string $username): self
  673.     {
  674.         $this->username $username;
  675.         return $this;
  676.     }
  677.     public function isDeleted(): ?bool
  678.     {
  679.         return $this->deleted;
  680.     }
  681.     public function isAcceptedTerms(): ?bool
  682.     {
  683.         return $this->acceptedTerms;
  684.     }
  685.     public function isAvisoEcheq(): ?bool
  686.     {
  687.         return $this->avisoEcheq;
  688.     }
  689.     public function isAcceptedMailing(): ?bool
  690.     {
  691.         return $this->acceptedMailing;
  692.     }
  693.     public function isDebug(): ?bool
  694.     {
  695.         return $this->debug;
  696.     }
  697.     public function setDebug(bool $debug): self
  698.     {
  699.         $this->debug $debug;
  700.         return $this;
  701.     }
  702.     public function getIdDebug(): ?int
  703.     {
  704.         return $this->idDebug;
  705.     }
  706.     public function setIdDebug(?int $idDebug): self
  707.     {
  708.         $this->idDebug $idDebug;
  709.         return $this;
  710.     }
  711.     public function isPasswordSeteada(): ?bool
  712.     {
  713.         return $this->passwordSeteada;
  714.     }
  715.     public function isPasswordVencida(): ?bool
  716.     {
  717.         return $this->passwordVencida;
  718.     }
  719.     public function setPasswordLastUpdate(?\DateTimeInterface $passwordLastUpdate): self
  720.     {
  721.         $this->passwordLastUpdate $passwordLastUpdate;
  722.         return $this;
  723.     }
  724.     public function setRoles(array $roles): self
  725.     {
  726.         $this->roles $roles;
  727.         return $this;
  728.     }
  729.     public function isEnabled(): ?bool
  730.     {
  731.         return $this->enabled;
  732.     }
  733.     public function setEnabled(?bool $enabled): self
  734.     {
  735.         $this->enabled $enabled;
  736.         return $this;
  737.     }
  738.     public function getSalt(): ?string
  739.     {
  740.         return $this->salt;
  741.     }
  742.     public function setSalt(?string $salt): self
  743.     {
  744.         $this->salt $salt;
  745.         return $this;
  746.     }
  747.     public function getPasswordRequestedAt(): ? \DateTimeInterface
  748.     {
  749.         return $this->password_requested_at;
  750.     }
  751.     public function setPasswordRequestedAt(?\DateTimeInterface $password_requested_at): self
  752.     {
  753.         $this->password_requested_at $password_requested_at;
  754.         return $this;
  755.     }
  756.     public function setPlainPassword($password)
  757.     {
  758.         $this->plainPassword $password;
  759.         return $this;
  760.     }
  761.     public function getPlainPassword()
  762.     {
  763.         return $this->plainPassword;
  764.     }
  765.     public function setLastLogin($date)
  766.     {
  767.         $this->lastLogin $date;
  768.         return $this;
  769.     }
  770.     public function __toArray(): array
  771.     {
  772.         return array(
  773.             'id' => $this->id,
  774.             'username' => $this->username,
  775.             'email' => $this->email,
  776.             'name' => $this->name,
  777.             'lastname' => $this->lastname,
  778.             'sapId' => $this->sapId,
  779.             'proveedorId' => $this->proveedorId,
  780.             'deleted' => $this->deleted,
  781.             'proveedor' => $this->proveedor,
  782.             'acceptedTerms' => $this->acceptedTerms,
  783.             'acceptedMailing' => $this->acceptedMailing,
  784.             'avisoEcheq' => $this->avisoEcheq,
  785.             'telefono' => $this->telefono,
  786.             'dni' => $this->dni,
  787.             'fechaAlta' => $this->fechaAlta,
  788.             'roles' => $this->roles,
  789.             'enabled' => $this->enabled,
  790.             'lastLogin' => $this->lastLogin,
  791.             'esVendedor' => $this->esVendedor(),
  792.             'necesitaPassword' => $this->necesitaPassword()
  793.         );
  794.     }
  795.     public function getFamiqUsername(): string
  796.     {
  797.         $username $this->getUsername();
  798.         return explode("@"$username)[0];
  799.     }
  800. }