<?php
namespace App\Entity\Auth;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Entity\AuthUserGroupeUser;
use App\Entity\ClientRoleUser;
use App\Entity\Evenement;
use App\Entity\Suivi;
use App\Entity\User;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\OrderFilter;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\BooleanFilter;
/**
* @ORM\Entity(repositoryClass="App\Repository\AuthUserRepository")
* @UniqueEntity(fields="username", message="le nom d'utilisateur existe deja")
* @ApiResource(attributes={
* "normalization_context"={"groups"={"auth-user-list"}},
* "filters"= { "several","auth.user.search"},
* "pagination_client_enabled"=true,
* })
* @ApiFilter(OrderFilter::class, properties={"user.prenom": "ASC"}, arguments={"orderParameterName" : "order"})
* @ApiFilter(BooleanFilter::class, properties={"uSysteme"})
*/
class AuthUser implements UserInterface
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
* @Groups({"pressroom", "auth-token","auth-user-list","group_user","client-list","mailling","evenement","suivi","organisation","coordonnees","parution", "contact","liste_parution","liste_organisation","liste_contact"})
*/
private $id;
/**
* @ORM\Column(type="string", length=255, unique=true)
* @Assert\NotBlank()
* @Groups({"auth-token"})
*/
private $username;
/**
* @Assert\Length(max=4096)
*/
private $plainPassword;
/**
* @ORM\Column(name="password_mail",length=255, type="string")
*/
private $passwordMail;
/**
* @ORM\Column(type="string", length=64)
*/
private $password;
/**
* @ORM\Column(name="roles", type="array")
* @Groups({"auth-token"})
*/
private $roles = array();
/**
* @ORM\ManyToOne(targetEntity="\App\Entity\User", fetch="EAGER",cascade={"all"})
* @var User $user
* @Groups({"auth-token","auth-user-list","group_user"})
* @Groups({"pressroom", "group_user","client-list","mailling", "evenement","suivi","organisation","parution", "contact","actualite","liste_parution","liste_organisation","liste_contact"})
*/
private $user;
/**
* @ORM\Column(type="string", length=255,nullable=true)
* @Groups({"auth-token"})
*/
private $oldLogin;
/**
* @ORM\Column(type="string", length=255,nullable=true)
* @Groups({"auth-token"})
*/
private $oldPassword;
/**
* @ORM\OneToMany(targetEntity="App\Entity\AuthUserGroupeUser", mappedBy="user")
*/
private $groupes;
/**
* @ORM\Column(name="actuel",type="boolean")
* @Groups({"auth-token"})
*/
private $actuel;
/**
* @ORM\Column(name="fonction", type="string")
* @Assert\Choice({"Bo","Consultant","Rs","Direction","Admin", "Us", "Commercial"}, message="choisissez une fonction corect")
* @Groups({"auth-token","auth-user-list"})
*/
private $fonction;
/**
* @ORM\Column(name="date_arrive",type="datetime",nullable=true)
* @Groups({"auth-token","auth-user-list"})
*/
private $dateArrive;
/**
* @ORM\Column(name="tel_interne",type="string",length=255, nullable = true)
* @Groups({"auth-user-list","auth-token"})
*/
private $telInterne;
/**
* @ORM\OneToMany(targetEntity="App\Entity\ClientRoleUser", mappedBy="authUser",fetch="EAGER")
* @Groups({"auth-token","auth-user-list"})
*/
private $rolesUserClient;
/**
* @ORM\Column(name="adresse_envoi",type="string",length=255,nullable=true)
* @Groups({"auth-user-list"})
*/
private $adresseEnvoi;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Evenement",mappedBy="participants")
*/
private $evenements;
/**
* @ORM\Column (name="count_email_verifier_existant_adelete", type="integer",nullable=true)
*/
private $countEmailVerifierExistantADelete;
/**
* @ORM\Column(name="u_systeme",type="boolean",nullable=true)
* @Groups({"auth-token"})
*/
private $uSysteme;
/**
* @ORM\OneToMany(targetEntity=Suivi::class, mappedBy="suiviPar")
*/
private $suivis;
public function __construct()
{
$this->rolesUserClient = new ArrayCollection();
$this->groupes = new ArrayCollection();
$this->evenements = new ArrayCollection();
$this->suivis = new ArrayCollection();
}
/**
* @return mixed
*/
public function getFonction()
{
return $this->fonction;
}
/**
* @param mixed $fonction
*/
public function setFonction($fonction): void
{
$this->fonction = $fonction;
}
/**
* @return mixed
*/
public function getOldLogin()
{
return $this->oldLogin;
}
/**
* @param mixed $oldLogin
*/
public function setOldLogin($oldLogin): void
{
$this->oldLogin = $oldLogin;
}
/**
* @return mixed
*/
public function getOldPassword()
{
return $this->oldPassword;
}
/**
* @param mixed $oldPassword
*/
public function setOldPassword($oldPassword): void
{
$this->oldPassword = $oldPassword;
}
/**
* @return User
*/
public function getUser(): User
{
return $this->user;
}
/**
* @param User $user
*/
public function setUser(User $user): void
{
$this->user = $user;
}
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return mixed
*/
public function getUsername()
{
return $this->username;
}
/**
* @param mixed $username
*/
public function setUsername($username)
{
$this->username = $username;
}
/**
* @return mixed
*/
public function getPlainPassword()
{
return $this->plainPassword;
}
/**
* @param mixed $plainPassword
*/
public function setPlainPassword($plainPassword)
{
$this->plainPassword = $plainPassword;
}
/**
* @return mixed
*/
public function getPassword()
{
return $this->password;
}
/**
* @param mixed $password
*/
public function setPassword($password)
{
$this->password = $password;
}
/**
* @param mixed $roles
*/
public function setRoles($roles)
{
$this->roles = $roles;
}
public function getSalt()
{
return null;
}
public function getRoles()
{
return $this->roles;
}
public function eraseCredentials()
{
$this->plainPassword = null;
}
/**
* @return mixed
*/
public function getActuel()
{
return $this->actuel;
}
/**
* @param mixed $actuel
*/
public function setActuel($actuel): void
{
$this->actuel = $actuel;
}
/**
* @return mixed
*/
public function getDateArrive()
{
return $this->dateArrive;
}
/**
* @param mixed $dateArrive
*/
public function setDateArrive($dateArrive): void
{
$this->dateArrive = $dateArrive;
}
/**
* @return mixed
*/
public function getTelInterne()
{
return $this->telInterne;
}
/**
* @param mixed $telInterne
*/
public function setTelInterne($telInterne): void
{
$this->telInterne = $telInterne;
}
/**
* Add rolesUserClient
*
* @param \App\Entity\ClientRoleUser $rolesUserClient
*
* @return AuthUser
*/
public function addRolesUserClient(\App\Entity\ClientRoleUser $rolesUserClient)
{
$this->rolesUserClient[] = $rolesUserClient;
return $this;
}
/**
* Get rolesUserClient
*
*/
public function getRolesUserClient()
{
return $this->rolesUserClient;
}
/**
* Set rolesUserClient
*
*/
public function setRolesUserClient($roleUserClientNew)
{
$this->rolesUserClient = $roleUserClientNew;
return $this->rolesUserClient;
}
/**
* Add groupes
*
* @param \App\Entity\GroupeUser $groupe
*
* @return AuthUser
*/
public function addGroupe(\App\Entity\GroupeUser $groupe)
{
$this->groupes[] = $groupe;
return $this;
}
/**
* Remove groupes
*
* @param \App\Entity\GroupeUser $groupe
*/
public function removeGroupe(\App\Entity\GroupeUser $groupe)
{
$this->groupes->removeElement($groupe);
}
/**
* @return mixed
*/
public function getGroupes()
{
return $this->groupes;
}
/**
* @return mixed
*/
public function getAdresseEnvoi()
{
return $this->adresseEnvoi;
}
/**
* @param mixed $adresseEnvoi
*/
public function setAdresseEnvoi($adresseEnvoi): void
{
$this->adresseEnvoi = $adresseEnvoi;
}
/**
* @return mixed
*/
public function getPasswordMail()
{
return $this->passwordMail;
}
/**
* @param mixed $passwordMail
*/
public function setPasswordMail($passwordMail): void
{
$this->passwordMail = $passwordMail;
}
/**
* @return Collection|Evenement[]
*/
public function getEvenements(): Collection
{
return $this->evenements;
}
public function addEvenement(Evenement $evenement): self
{
if (!$this->evenements->contains($evenement)) {
$this->evenements[] = $evenement;
$evenement->addParticipant($this);
}
return $this;
}
public function removeEvenement(Evenement $evenement): self
{
if ($this->evenements->contains($evenement)) {
$this->evenements->removeElement($evenement);
$evenement->removeParticipant($this);
}
return $this;
}
public function removeRolesUserClient(ClientRoleUser $rolesUserClient): self
{
if ($this->rolesUserClient->contains($rolesUserClient)) {
$this->rolesUserClient->removeElement($rolesUserClient);
// set the owning side to null (unless already changed)
if ($rolesUserClient->getAuthUser() === $this) {
$rolesUserClient->setAuthUser(null);
}
}
return $this;
}
public function getCountEmailVerifierExistantADelete(): ?int
{
return $this->countEmailVerifierExistantADelete;
}
public function setCountEmailVerifierExistantADelete(int $countEmailVerifierExistantADelete): self
{
$this->countEmailVerifierExistantADelete = $countEmailVerifierExistantADelete;
return $this;
}
/**
* @return mixed
*/
public function getUSysteme()
{
return $this->uSysteme;
}
/**
* @param mixed $uSysteme
*/
public function setUSysteme($uSysteme) : void
{
$this->uSysteme = $uSysteme;
}
/**
* @return Collection|Suivi[]
*/
public function getSuivis(): Collection
{
return $this->suivis;
}
public function addSuivi(Suivi $suivi): self
{
if (!$this->suivis->contains($suivi)) {
$this->suivis[] = $suivi;
//$suivi->setSuiviPar($this);
}
return $this;
}
public function removeSuivi(Suivi $suivi): self
{
if ($this->suivis->removeElement($suivi)) {
// set the owning side to null (unless already changed)
if ($suivi->getSuiviPar() === $this) {
$suivi->setSuiviPar(null);
}
}
return $this;
}
}