<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* Account
*
* @ORM\Table(name="account", uniqueConstraints={@ORM\UniqueConstraint(name="account_id_uindex", columns={"id"})}, indexes={@ORM\Index(name="account_user_id_fk", columns={"user_id"}), @ORM\Index(name="account_manager_id_fk", columns={"manager_id"})})
* @ORM\Entity(repositoryClass="App\Repository\AccountRepository")
* @method string getUserIdentifier()
*/
class Account implements UserInterface
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="email", type="string", length=255, nullable=true)
*/
private $email;
/**
* @var string|null
*
* @ORM\Column(name="password", type="string", length=255, nullable=true)
*/
private $password;
/**
* @var string|null
*
* @ORM\Column(name="salt", type="string", length=255, nullable=true)
*/
private $salt;
/**
* @var \DateTime|null
*
* @ORM\Column(name="registration_date", type="datetime", nullable=true)
*/
private $registrationDate;
/**
* @var \DateTime|null
*
* @ORM\Column(name="password_request_date", type="datetime", nullable=true)
*/
private $passwordRequestDate;
/**
* @var string|null
*
* @ORM\Column(name="password_request", type="string", length=255, nullable=true)
*/
private $passwordRequest;
/**
* @var bool|null
*
* @ORM\Column(name="email_valid", type="boolean", nullable=true)
*/
private $emailValid = false;
/**
* @var string|null
*
* @ORM\Column(name="email_valid_token", type="string", length=255, nullable=true)
*/
private $emailValidToken;
/**
* @var \DateTime|null
*
* @ORM\Column(name="last_login", type="datetime", nullable=true)
*/
private $lastLogin;
/**
* @var bool|null
*
* @ORM\Column(name="enabled", type="boolean", nullable=true, options={"default"="1"})
*/
private $enabled = true;
/**
* @var array|null
*
* @ORM\Column(name="roles", type="array", nullable=true)
*/
private $roles = [];
/**
* @var Manager
*
* @ORM\OneToOne(targetEntity="Manager", inversedBy="account")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="manager_id", referencedColumnName="id")
* })
*/
private $manager;
/**
* @var User
*
* @ORM\OneToOne(targetEntity="User", inversedBy="account")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $user;
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return string|null
*/
public function getEmail()
{
return $this->email;
}
/**
* @param string|null $email
*/
public function setEmail($email)
{
$this->email = $email;
}
/**
* @return string|null
*/
public function getPassword()
{
return $this->password;
}
/**
* @param string|null $password
*/
public function setPassword($password)
{
$this->password = $password;
}
/**
* @return string|null
*/
public function getSalt()
{
return $this->salt;
}
/**
* @param string|null $salt
*/
public function setSalt($salt)
{
$this->salt = $salt;
}
/**
* @return \DateTime|null
*/
public function getRegistrationDate()
{
return $this->registrationDate;
}
/**
* @param \DateTime|null $registrationDate
*/
public function setRegistrationDate($registrationDate)
{
$this->registrationDate = $registrationDate;
}
/**
* @return \DateTime|null
*/
public function getPasswordRequestDate()
{
return $this->passwordRequestDate;
}
/**
* @param \DateTime|null $passwordRequestDate
*/
public function setPasswordRequestDate($passwordRequestDate)
{
$this->passwordRequestDate = $passwordRequestDate;
}
/**
* @return string|null
*/
public function getPasswordRequest()
{
return $this->passwordRequest;
}
/**
* @param string|null $passwordRequest
*/
public function setPasswordRequest($passwordRequest)
{
$this->passwordRequest = $passwordRequest;
}
/**
* @return bool|null
*/
public function getEmailValid()
{
return $this->emailValid;
}
/**
* @param bool|null $emailValid
*/
public function setEmailValid($emailValid)
{
$this->emailValid = $emailValid;
}
/**
* @return string|null
*/
public function getEmailValidToken()
{
return $this->emailValidToken;
}
/**
* @param string|null $emailValidToken
*/
public function setEmailValidToken($emailValidToken)
{
$this->emailValidToken = $emailValidToken;
}
/**
* @return \DateTime|null
*/
public function getLastLogin()
{
return $this->lastLogin;
}
/**
* @param \DateTime|null $lastLogin
*/
public function setLastLogin($lastLogin)
{
$this->lastLogin = $lastLogin;
}
/**
* @return bool|null
*/
public function getEnabled()
{
return $this->enabled;
}
/**
* @param bool|null $enabled
*/
public function setEnabled($enabled)
{
$this->enabled = $enabled;
}
/**
* @return array|null
*/
public function getRoles()
{
if ($this->getManager()) {
$roles = ["ROLE_MANAGER"];
if ($this->getManager()->getAdmin()) {
$roles[] = "ROLE_ADMIN";
}
if ($this->getManager()->getAllowParticuliers()) {
$roles[] = "ROLE_PARTICULIERS";
}
if ($this->getManager()->getAllowOffresSurGrilles()) {
$roles[] = "ROLE_OFFRES_SUR_GRILLES";
}
if ($this->getManager()->getAllowCotations()) {
$roles[] = "ROLE_COTATIONS";
}
if ($this->getManager()->getAllowCustomerBase()) {
$roles[] = "ROLE_CUSTOMER_BASE";
}
return $roles;
}
if ($this->getUser()) {
return ["ROLE_USER"];
}
return [];
}
/**
* @return Manager
*/
public function getManager()
{
return $this->manager;
}
/**
* @param Manager $manager
*/
public function setManager($manager)
{
$this->manager = $manager;
}
/**
* @return User
*/
public function getUser()
{
return $this->user;
}
/**
* @param User $user
*/
public function setUser($user)
{
$this->user = $user;
}
public function eraseCredentials()
{
// TODO: Implement eraseCredentials() method.
}
public function getUsername()
{
return $this->getEmail();
}
public function __call(string $name, array $arguments)
{
// TODO: Implement @method string getUserIdentifier()
}
}