<?php
namespace App\Entity\System;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* Class Employee
*
* @ORM\Entity(repositoryClass="App\Repository\System\EmployeeRepository")
*
* @ORM\Table(name="ps_employee")
*/
class Employee implements UserInterface, PasswordAuthenticatedUserInterface
{
/**
* @var int
*
* @ORM\Id
*
* @ORM\GeneratedValue(strategy="AUTO")
*
* @ORM\Column(type="integer", name="id_employee", options={"unsigned":true})
*/
private $id;
/**
* @var Profile
*
* @ORM\ManyToOne(targetEntity="Profile")
*
* @ORM\JoinColumn(name="id_profile", referencedColumnName="id_profile")
*/
private $profile;
/**
* @var Language
*
* @ORM\ManyToOne(targetEntity="Language")
*
* @ORM\JoinColumn(name="id_lang", referencedColumnName="id_lang")
*/
private $language;
/**
* @var string
*
* @ORM\Column(type="string", name="lastname", length=32)
*/
private $lastname;
/**
* @var string
*
* @ORM\Column(type="string", name="firstname", length=32)
*/
private $firstname;
/**
* @var string
*
* @ORM\Column(type="string", nullable=false, unique=true, length=128)
*/
private $email;
/**
* @var string
*
* @ORM\Column(type="string", name="passwd", length=128)
*/
private $password;
/**
* @var \DateTime
*
* @ORM\Column(type="datetime", options={"default":"CURRENT_TIMESTAMP"}, name="last_passwd_gen")
*/
private $passwordDate;
/**
* @var bool|null
*
* @ORM\Column(type="boolean", options={"unsigned":true, "default":0})
*/
private $active;
/**
* @var bool
*
* @ORM\Column(type="boolean", columnDefinition="tinyint(1)", options={"default" : 0})
*/
private $multifactorAuthEnabled;
/**
* @var bool
*/
private $avatar = false;
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return Profile
*/
public function getProfile(): Profile
{
return $this->profile;
}
/**
* @param Profile $profile
*/
public function setProfile(Profile $profile): void
{
$this->profile = $profile;
}
/**
* @return Language
*/
public function getLanguage(): Language
{
return $this->language;
}
/**
* @param Language $language
*/
public function setLanguage(Language $language): self
{
$this->language = $language;
return $this;
}
/**
* @return string
*/
public function getLastname(): string
{
return $this->lastname;
}
/**
* @param string $lastname
*/
public function setLastname(string $lastname): self
{
$this->lastname = $lastname;
return $this;
}
/**
* @return string
*/
public function getFirstname(): string
{
return $this->firstname;
}
/**
* @param string $firstname
*
* @return Employee
*/
public function setFirstname(string $firstname): self
{
$this->firstname = $firstname;
return $this;
}
/**
* @return string
*/
public function getEmail(): string
{
return $this->email;
}
/**
* @param string $email
*
* @return Employee
*/
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
/**
* @return string
*/
public function getPassword(): string
{
return $this->password;
}
/**
* @param string $password
*
* @return Employee
*/
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
/**
* @return \DateTime
*/
public function getPasswordDate(): \DateTime
{
return $this->passwordDate;
}
/**
* @param \DateTime $passwordDate
*
* @return Employee
*/
public function setPasswordDate(\DateTime $passwordDate): self
{
$this->passwordDate = $passwordDate;
return $this;
}
/**
* @return bool|null
*/
public function isActive(): ?bool
{
return $this->active;
}
/**
* @param bool|null $active
*
* @return Employee
*/
public function setActive(?bool $active): self
{
$this->active = $active;
return $this;
}
/**
* @return mixed
*/
public function getRoles()
{
$roles = [];
foreach ($this->getProfile()->getRoles() as $role) {
$roleName = $role->getName();
if (!in_array($roleName, $roles, true)) {
$roles[] = $role->getName();
}
}
return $roles;
}
/**
* @return string|null
*/
public function getSalt(): ?string
{
return null;
}
/**
* @return string
*/
public function getUsername(): string
{
return $this->email;
}
/**
* @return string
*/
public function getName(): string
{
return $this->firstname.' '.$this->lastname;
}
/**
* @return mixed
*/
public function eraseCredentials()
{
// TODO: Implement eraseCredentials() method.
}
public function getUserIdentifier(): string
{
return (string)$this->getId();
}
/**
* @return bool
*/
public function hasMultifactorAuthEnabled(): bool
{
return $this->multifactorAuthEnabled;
}
public function __toString()
{
return $this->firstname.' '.$this->lastname;
}
public function setMultifactorAuthEnabled(bool $multifactorAuthEnabled): Employee
{
$this->multifactorAuthEnabled = $multifactorAuthEnabled;
return $this;
}
public function hasAvatar(): bool
{
return $this->avatar;
}
}