<?php
namespace App\V4\Model\Security;
use ApiPlatform\Core\Annotation\ApiProperty;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Model\Customer\Customer;
use App\Model\IriNormalizableInterface;
use App\Model\NormalizeAsIRITrait;
use App\Model\RGPDConfig\RGPDConfig;
use App\Model\SecurityGroup\SecurityGroup;
use App\Model\Traits\ImportableObjectTrait;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ApiResource(
* shortName="V4/UserInfo",
* attributes={
* "api_allow_update": true
* },
* collectionOperations={
* "get": {
* "path": "/V4/user_infos",
* "normalization_context": {
* "groups": {"user_info:list"},
* "isFromAdmin": true
* },
* "security": "is_granted(constant('App\\V4\\Voters\\UserInfoVoter::USER_INFO_SHOW_LIST'), 'App\V4\Voters\UserInfoVoter')"
* }
* },
* itemOperations={
* "get": {
* "path": "/V4/user_infos/{id}",
* }
* }
* )
*/
class UserInfo implements IriNormalizableInterface
{
use ImportableObjectTrait;
use NormalizeAsIRITrait;
/**
* @ApiProperty(identifier=true)
*
* @var string|null
* @Groups({
* "outlook_subscription_configuration_user:update",
* "section:list", "section:read", "section:write", "section:update",
* "user_info:list",
* "read", "list_last_visit", "read_last_visit", "read_post_last_visit", "write", "list"})
*/
private $id;
/**
* @var string|null
* @Assert\NotNull(message="field_not_valid")
* @Assert\NotBlank(message="field_not_valid")
* @Groups({"read"})
*/
private $login;
/**
* @var string|null
* @Groups({"read"})
*/
private $civility;
/**
* @var string|null
* @Groups({"read"})
* @Assert\NotNull(message="field_not_valid")
* @Assert\NotBlank(message="field_not_valid")
*/
private $firstname;
/**
* @var string|null
* @Assert\NotNull(message="field_not_valid")
* @Assert\NotBlank(message="field_not_valid")
* @Groups({"read"})
*/
private $lastname;
/**
* @var string|null
* @Groups({
* "section:list", "section:read", "section:write", "section:update",
* "outlook_subscription_configuration_user:list", "outlook_subscription_configuration_user:read",
* "user_info:list",
* "read"
* })
*/
private $fullname;
/**
* @var string|null
* @Groups({
* "section:list", "section:read", "section:write", "section:update",
* "outlook_subscription_configuration_user:list", "outlook_subscription_configuration_user:read",
* "user_info:list",
* "read"
* })
*/
private $job;
/**
* @var SecurityGroup|null
* @Groups({"read"})
*/
private $securityGroup;
/**
* @var string|null
* @Assert\Email()
* @Groups({
* "read",
* "outlook_subscription_configuration_user:list", "outlook_subscription_configuration_user:read"
* })
*/
private $email;
/**
* @var string|null
* @Assert\Length(max="5", maxMessage="Les initiales sont limités à 5 caractères")
* @Groups({"read"})
*/
private $initials;
/**
* @Assert\Callback({"App\FormValidator\PasswordValidator", "validate"})
* @Groups({"read"})
*/
private $plainPassword;
/**
* @var string|null
* @Groups({"read"})
*/
private $phone;
/**
* @Assert\NotNull(message="field_not_valid")
* @Assert\NotBlank(message="field_not_valid")
*
* @var Customer|null
* @Groups({"read"})
*/
private $customer;
/**
* @var RGPDConfig|null
* @Groups({"read"})
*/
private $rgpdConfig;
/**
* @var array|null
* @Groups({"read"})
*/
private $roles;
/**
* @var array|null
* @Groups({"read"})
*/
private $orders;
/**
* @var array|null
* @Groups({"read"})
*/
private $tabs;
/**
* @var array|null
* @Groups({"read"})
*/
private $savedUserSearchs;
/**
* @var string|null
* @Groups({"read"})
*/
private $sfiMailingHosts;
/**
* @var bool|null
* @Groups({"read"})
*/
private $isActive = true;
/**
* @var bool|null
* @Groups({"read"})
*/
private $isSuperAdmin = false;
/**
* @var string|null
* @Groups({"read"})
*/
private $liveoLogin;
/**
* @var string|null
* @Groups({"read"})
*/
private $liveoPassword;
/**
* @var string|null
* @Groups({"read"})
*/
private $externalId;
/**
* @Groups({"read"})
*/
private $isMyTaskByDefault = false;
/**
* @Groups({"read"})
*/
private $isMyQuoteByDefault = false;
/**
* @Groups({"read"})
*/
private $isMyProspectByDefault = false;
/**
* @Groups({"read"})
*/
private $isMyContactByDefault = false;
/**
* @var string|null
* @Groups({"read"})
*/
private $signature;
/**
* @var DateTime|null
* @Groups({"read"})
*/
private $tokenValidAfter;
/**
* @var DateTime|null
* @Groups({"read"})
*/
private $lastLogin;
/**
* @var ArrayCollection
* @Groups({"read"})
*/
private $accessRights;
/**
* @var array
* @Groups({"read"})
*/
private $defaultQuoteSections = [];
/**
* @var array
* @Groups({"read"})
*/
private $defaultSearchFilters = [];
public function __construct()
{
$this->accessRights = new ArrayCollection();
}
/**
* @return string|null
*/
public function getId(): ?string
{
return $this->id;
}
/**
* @param string|null $id
*
* @return UserInfo
*/
public function setId(?string $id): UserInfo
{
$this->id = $id;
return $this;
}
/**
* @return string|null
*/
public function getLogin(): ?string
{
return $this->login;
}
/**
* @param string|null $login
*
* @return UserInfo
*/
public function setLogin(?string $login): UserInfo
{
$this->login = $login;
return $this;
}
/**
* @return string|null
*/
public function getCivility(): ?string
{
return $this->civility;
}
/**
* @param string|null $civility
*
* @return UserInfo
*/
public function setCivility(?string $civility): UserInfo
{
$this->civility = $civility;
return $this;
}
/**
* @return string|null
*/
public function getFirstname(): ?string
{
return $this->firstname;
}
/**
* @param string|null $firstname
*
* @return UserInfo
*/
public function setFirstname(?string $firstname): UserInfo
{
$this->firstname = $firstname;
return $this;
}
/**
* @return string|null
*/
public function getFullname(): ?string
{
return $this->fullname;
}
/**
* @param string|null $fullname
*
* @return UserInfo
*/
public function setFullname(?string $fullname): UserInfo
{
$this->fullname = $fullname;
return $this;
}
/**
* @return string|null
*/
public function getJob(): ?string
{
return $this->job;
}
/**
* @param string|null $job
*
* @return $this
*/
public function setJob(?string $job): UserInfo
{
$this->job = $job;
return $this;
}
/**
* @return string|null
*/
public function getLastname(): ?string
{
return strtoupper($this->lastname);
}
/**
* @param string|null $lastname
*
* @return UserInfo
*/
public function setLastname(?string $lastname): UserInfo
{
$this->lastname = strtoupper($lastname);
return $this;
}
/**
* @return SecurityGroup|null
*/
public function getSecurityGroup(): ?SecurityGroup
{
return $this->securityGroup;
}
/**
* @param SecurityGroup|null $securityGroup
*
* @return UserInfo
*/
public function setSecurityGroup(?SecurityGroup $securityGroup): UserInfo
{
$this->securityGroup = $securityGroup;
return $this;
}
/**
* @return string|null
*/
public function getEmail(): ?string
{
return $this->email;
}
/**
* @param string|null $email
*
* @return UserInfo
*/
public function setEmail(?string $email): UserInfo
{
$this->email = $email;
return $this;
}
/**
* @return string|null
*/
public function getInitials(): ?string
{
return $this->initials;
}
/**
* @param string|null $initials
*
* @return UserInfo
*/
public function setInitials(?string $initials): UserInfo
{
$this->initials = $initials;
return $this;
}
public function getPlainPassword()
{
return $this->plainPassword;
}
/**
* @param $plainPassword
*
* @return UserInfo
*/
public function setPlainPassword($plainPassword): UserInfo
{
$this->plainPassword = $plainPassword;
return $this;
}
/**
* @return string|null
*/
public function getPhone(): ?string
{
return $this->phone;
}
/**
* @param string|null $phone
*
* @return UserInfo
*/
public function setPhone(?string $phone): UserInfo
{
$this->phone = $phone;
return $this;
}
/**
* @return Customer|null
*/
public function getCustomer(): ?Customer
{
return $this->customer;
}
/**
* @param Customer|null $customer
*
* @return UserInfo
*/
public function setCustomer(?Customer $customer): UserInfo
{
$this->customer = $customer;
return $this;
}
/**
* @return array|null
*/
public function getRoles(): ?array
{
return $this->roles;
}
/**
* @param array|null $roles
*
* @return UserInfo
*/
public function setRoles(?array $roles): UserInfo
{
$this->roles = $roles;
return $this;
}
/**
* @return array|null
*/
public function getOrders(): ?array
{
return $this->orders;
}
/**
* @param array|null $orders
*
* @return UserInfo
*/
public function setOrders(?array $orders): UserInfo
{
$this->orders = $orders;
return $this;
}
/**
* @return array|null
*/
public function getTabs(): ?array
{
return $this->tabs;
}
/**
* @param array|null $tabs
*
* @return UserInfo
*/
public function setTabs(?array $tabs): UserInfo
{
$this->tabs = $tabs;
return $this;
}
/**
* @return array|null
*/
public function getSavedUserSearchs(): ?array
{
return $this->savedUserSearchs;
}
/**
* @param array|null $savedUserSearchs
*
* @return UserInfo
*/
public function setSavedUserSearchs(?array $savedUserSearchs): UserInfo
{
$this->savedUserSearchs = $savedUserSearchs;
return $this;
}
/**
* @return string|null
*/
public function getSfiMailingHosts(): ?string
{
return $this->sfiMailingHosts;
}
/**
* @param string|null $sfiMailingHosts
*
* @return UserInfo
*/
public function setSfiMailingHosts(?string $sfiMailingHosts): UserInfo
{
$this->sfiMailingHosts = $sfiMailingHosts;
return $this;
}
/**
* @return bool|null
*/
public function getIsActive(): ?bool
{
return $this->isActive;
}
/**
* @param bool|null $isActive
*
* @return UserInfo
*/
public function setIsActive(?bool $isActive): UserInfo
{
$this->isActive = $isActive;
return $this;
}
/**
* @return RGPDConfig|null
*/
public function getRgpdConfig(): ?RGPDConfig
{
return $this->rgpdConfig;
}
/**
* @param RGPDConfig|null $rgpdConfig
*
* @return UserInfo
*/
public function setRgpdConfig(?RGPDConfig $rgpdConfig): UserInfo
{
$this->rgpdConfig = $rgpdConfig;
return $this;
}
/**
* @return string|null
*/
public function getExternalId(): ?string
{
return $this->externalId;
}
/**
* @param string|null $externalId
*
* @return UserInfo
*/
public function setExternalId(?string $externalId): UserInfo
{
$this->externalId = $externalId;
return $this;
}
/**
* @return string
*/
public function __toString(): string
{
return $this->getFirstname().' '.strtoupper($this->getLastname());
}
/**
* @return bool|null
*/
public function getIsSuperAdmin(): ?bool
{
return $this->isSuperAdmin;
}
/**
* @param bool|null $isSuperAdmin
*
* @return UserInfo
*/
public function setIsSuperAdmin(?bool $isSuperAdmin): UserInfo
{
$this->isSuperAdmin = $isSuperAdmin;
return $this;
}
/**
* @return bool
*/
public function getIsMyTaskByDefault(): bool
{
return $this->isMyTaskByDefault;
}
/**
* @param bool $isMyTaskByDefault
*
* @return UserInfo
*/
public function setIsMyTaskByDefault(bool $isMyTaskByDefault): UserInfo
{
$this->isMyTaskByDefault = $isMyTaskByDefault;
return $this;
}
/**
* @return bool
*/
public function getIsMyQuoteByDefault(): bool
{
return $this->isMyQuoteByDefault;
}
/**
* @param bool $isMyQuoteByDefault
*
* @return UserInfo
*/
public function setIsMyQuoteByDefault(bool $isMyQuoteByDefault): UserInfo
{
$this->isMyQuoteByDefault = $isMyQuoteByDefault;
return $this;
}
/**
* @return bool
*/
public function getIsMyProspectByDefault(): bool
{
return $this->isMyProspectByDefault;
}
/**
* @param bool $isMyProspectByDefault
*
* @return UserInfo
*/
public function setIsMyProspectByDefault(bool $isMyProspectByDefault): UserInfo
{
$this->isMyProspectByDefault = $isMyProspectByDefault;
return $this;
}
/**
* @return bool
*/
public function getIsMyContactByDefault(): bool
{
return $this->isMyContactByDefault;
}
/**
* @param bool $isMyContactByDefault
*
* @return UserInfo
*/
public function setIsMyContactByDefault(bool $isMyContactByDefault): UserInfo
{
$this->isMyContactByDefault = $isMyContactByDefault;
return $this;
}
/**
* @return string|null
*/
public function getSignature(): ?string
{
return $this->signature;
}
/**
* @param string|null $signature
*
* @return UserInfo
*/
public function setSignature(?string $signature): UserInfo
{
$this->signature = $signature;
return $this;
}
/**
* @return string|null
*/
public function getLiveoLogin(): ?string
{
return $this->liveoLogin;
}
/**
* @param string|null $liveoLogin
*
* @return UserInfo
*/
public function setLiveoLogin(?string $liveoLogin): UserInfo
{
$this->liveoLogin = $liveoLogin;
return $this;
}
/**
* @return string|null
*/
public function getLiveoPassword(): ?string
{
return $this->liveoPassword;
}
/**
* @param string|null $liveoPassword
*
* @return UserInfo
*/
public function setLiveoPassword(?string $liveoPassword): UserInfo
{
$this->liveoPassword = $liveoPassword;
return $this;
}
/**
* @return DateTime|null
*/
public function getTokenValidAfter(): ?DateTime
{
return $this->tokenValidAfter;
}
/**
* @param DateTime|null $tokenValidAfter
*
* @return UserInfo
*/
public function setTokenValidAfter(?DateTime $tokenValidAfter): UserInfo
{
$this->tokenValidAfter = $tokenValidAfter;
return $this;
}
/**
* @return DateTime|null
*/
public function getLastLogin(): ?DateTime
{
return $this->lastLogin;
}
/**
* @param DateTime|null $lastLogin
*
* @return UserInfo
*/
public function setLastLogin(?DateTime $lastLogin): UserInfo
{
$this->lastLogin = $lastLogin;
return $this;
}
/**
* @return ArrayCollection
*/
public function getAccessRights(): ArrayCollection
{
return $this->accessRights;
}
/**
* @param ArrayCollection $accessRights
*
* @return UserInfo
*/
public function setAccessRights(ArrayCollection $accessRights): UserInfo
{
$this->accessRights = $accessRights;
return $this;
}
/**
* @return array
*/
public function getDefaultQuoteSections(): array
{
return $this->defaultQuoteSections;
}
/**
* @param array $defaultQuoteSections
*
* @return self
*/
public function setDefaultQuoteSections(array $defaultQuoteSections): self
{
$this->defaultQuoteSections = $defaultQuoteSections;
return $this;
}
/**
* @return array
*/
public function getDefaultSearchFilters(): array
{
return $this->defaultSearchFilters;
}
/**
* @param array $defaultSearchFilters
*
* @return $this
*/
public function setDefaultSearchFilters(array $defaultSearchFilters): self
{
$this->defaultSearchFilters = $defaultSearchFilters;
return $this;
}
}