<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Nucleos\UserBundle\Model\User as BaseUser;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(
* repositoryClass="App\Repository\UserRepository"
* )
* @ORM\Table(
* name="user",
* options={"collate"="utf8_swedish_ci"}
* )
* @ORM\HasLifecycleCallbacks
*/
class User extends BaseUser implements EntityInterface
{
/**
* @ORM\Id
* @ORM\Column(
* type="integer"
* )
* @ORM\GeneratedValue(
* strategy="AUTO"
* )
*
* @var ?int
*/
protected ?int $id = null;
/**
* @ORM\Column(
* name="first_name",
* type="string",
* length=100
* )
*
* @var string
*/
protected string $firstName;
/**
* @ORM\Column(
* name="last_name",
* type="string",
* length=100
* )
*
* @var string
*/
protected string $lastName;
/**
* @ORM\Column(
* name="offer_signature",
* type="string",
* length=500,
* nullable=true
* )
*
* @var ?string
*/
protected ?string $offerSignature = null;
/**
* Plain password. Used for model validation. Must not be persisted.
*
* @Assert\Regex(
* pattern="/^(?=.*[a-zåäö])(?=.*[A-ZÅÄÖ])(?=.*[^A-ZÅÄÖa-zåäö]).{8,}$/u",
* message="user.password.invalid"
* )
*
* @var ?string
*/
protected ?string $plainPassword = null;
/**
* @ORM\Column(
* name="sales_case_list_filter",
* type="json",
* nullable=true
* )
*
* @var ?array
*/
protected ?array $salesCaseListFilter = null;
/**
* @return string
*/
public function __toString(): string
{
return $this->getName() . ' (' . $this->getEmail() . ')';
}
/**
* @return ?int
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return string
*/
public function getFirstName(): string
{
return $this->firstName;
}
/**
* @return string
*/
public function getLastName(): string
{
return $this->lastName;
}
/**
* Get full name of user
*
* @return string
*/
public function getName(): string
{
return $this->firstName . ' ' . $this->lastName;
}
/**
* @return ?string
*/
public function getOfferSignature(): ?string
{
return $this->offerSignature;
}
/**
* @return ?array
*/
public function getSalesCaseListFilter(): ?array
{
return $this->salesCaseListFilter;
}
/**
* @param string $email
* @return void
*/
public function setEmail(string $email): void
{
parent::setEmail($email);
$this->setUsername($email);
}
/**
* @param string $firstName
*/
public function setFirstName(string $firstName): void
{
$this->firstName = $firstName;
}
/**
* @param string $lastName
*/
public function setLastName(string $lastName): void
{
$this->lastName = $lastName;
}
/**
* @param ?string $offerSignature
*/
public function setOfferSignature(?string $offerSignature): void
{
$this->offerSignature = $offerSignature;
}
/**
* @param ?array $salesCaseListFilter
*/
public function setSalesCaseListFilter(?array $salesCaseListFilter): void
{
$this->salesCaseListFilter = $salesCaseListFilter;
}
/**
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function updateUsername(): void
{
$this->username = $this->email;
}
}