<?php
namespace App\Entity\System;
use A4BGroup\A4bThemeBundle\Entity\UserInterface as A4BUserInterface;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* Class Employee
*
* @ORM\Entity(repositoryClass="App\Repository\System\EmployeeRepository")
*
* @ORM\Table(name="ps_employee")
*/
class Employee implements A4BUserInterface
{
/**
* @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;
/**
* @ORM\Column(type="boolean", options={"unsigned":true, "default":0})
*/
private bool $active = false;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private ?\DateTimeInterface $lastAccess = null;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private ?\DateTimeInterface $dateAdd;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private ?\DateTimeInterface $dateUpd = null;
/**
* @var string[]
*
* @ORM\Column(type="json", nullable=false)
*/
protected $roles;
public function __construct()
{
$this->dateAdd = new \DateTime();
$this->passwordDate = new \DateTime();
$this->password = '';
$this->roles = [];
}
public function getId(): int
{
return $this->id;
}
public function setId(int $id): void
{
$this->id = $id;
}
public function getProfile(): Profile
{
return $this->profile;
}
/**
* @param Profile $profile
*/
public function setProfile(Profile $profile): void
{
$this->profile = $profile;
}
public function getLanguage(): Language
{
return $this->language;
}
public function setLanguage(Language $language): self
{
$this->language = $language;
return $this;
}
public function getLastname(): string
{
return $this->lastname;
}
public function setLastname(string $lastname): self
{
$this->lastname = $lastname;
return $this;
}
/**
* @return string
*/
public function getName(): string
{
return $this->firstname;
}
public function setName(string $firstname): self
{
$this->firstname = $firstname;
return $this;
}
public function getEmail(): string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getPassword(): string
{
return $this->password;
}
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
public function getPasswordDate(): \DateTime
{
return $this->passwordDate;
}
public function setPasswordDate(\DateTime $passwordDate): self
{
$this->passwordDate = $passwordDate;
return $this;
}
public function isEnabled(): bool
{
return $this->active;
}
public function setEnabled(bool $active): self
{
$this->active = $active;
return $this;
}
public function getRoles(): array
{
$roles = $this->roles;
foreach ($this->getProfile()->getRoles() as $role) {
$roleName = $role->getName();
if (!in_array($roleName, $roles, true)) {
$roles[] = $role->getName();
}
}
$roles[] = self::ROLE_USER;
return \array_unique($roles);
}
public function getSalt(): ?string
{
return null;
}
public function getUsername(): string
{
return $this->email;
}
public function eraseCredentials(): A4BUserInterface
{
return $this;
}
public function getUserIdentifier(): string
{
return (string)$this->getId();
}
public function __toString(): string
{
return $this->firstname.' '.$this->lastname;
}
public function getLastAccess(): ?\DateTimeInterface
{
return $this->lastAccess;
}
public function setLastAccess(?\DateTimeInterface $lastAccess): Employee
{
$this->lastAccess = $lastAccess;
return $this;
}
public function getAvatar(): ?string
{
return null;
}
public function setAvatar(?string $avatar): A4BUserInterface
{
return $this;
}
public function setUploadedFile(?UploadedFile $uploadedFile = null): A4BUserInterface
{
return $this;
}
public function getUploadedFile(): ?UploadedFile
{
return null;
}
public function isEqualTo(A4BUserInterface $user): bool
{
return $this->email === $user->getEmail();
}
public function getDateAdd(): \DateTimeInterface
{
return $this->dateAdd;
}
public function setDateAdd(\DateTimeInterface $dateAdd): A4BUserInterface
{
$this->dateAdd = $dateAdd;
return $this;
}
public function getDateUpd(): ?\DateTimeInterface
{
return $this->dateUpd;
}
public function setDateUpd(?\DateTimeInterface $dateUpd): A4BUserInterface
{
$this->dateUpd = $dateUpd;
return $this;
}
/**
* @param string[] $roles
*/
public function setRoles(array $roles): A4BUserInterface
{
$this->roles = $roles;
return $this;
}
/**
* @param string $role
*/
public function addRole($role): A4BUserInterface
{
$role = \strtoupper((string)$role);
if (self::ROLE_DEFAULT === $role) {
return $this;
}
if (!\in_array($role, $this->roles, true)) {
$this->roles[] = $role;
}
return $this;
}
/**
* @param string $role
*/
public function removeRole($role): A4BUserInterface
{
if (false !== $key = \array_search(\strtoupper((string)$role), $this->roles, true)) {
unset($this->roles[$key]);
$this->roles = \array_values($this->roles);
}
return $this;
}
/**
* @param string $role
*/
public function hasRole($role): bool
{
return \in_array(\strtoupper((string)$role), $this->getRoles(), true);
}
public function getPlainPassword(): ?string
{
return null;
}
public function setPlainPassword(string $plainPassword): A4BUserInterface
{
return $this;
}
public function isDeleted(): bool
{
return false;
}
public function setDeleted(bool $deleted): A4BUserInterface
{
return $this;
}
public function getLocale(): ?string
{
return $this->getLanguage()->getIsoCode();
}
public function setLocale(string $locale): A4BUserInterface
{
throw new \Exception('Use setLanguage instead');
}
public function setUsername(string $username): A4BUserInterface
{
$this->setEmail($username);
return $this;
}
}