<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
* @ORM\Table(name="users")
* @UniqueEntity("username")
* @UniqueEntity("emailAddress")
*/
class User extends LoginPerson
{
const TAG_OLDCUSTOMER = 'old_customer';
const TAG_ENABLE_ABO = 'enable_abo';
/**
* @Serializer\Type("libphonenumber\PhoneNumber")
* @ORM\Column(type="phone_number", nullable=true)
*/
private $phoneNumber2;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Order", mappedBy="user", fetch="EAGER")
*/
private $orders;
/**
* @ORM\Column(type="boolean", options={"default": false})
*/
private $isTempUser;
/**
* @ORM\Column(type="boolean", options={"default": false})
*/
private $hasNewsletter;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $idApi;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $customerNrWeclapp;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Customer")
* @ORM\JoinColumn(name="customer_id", referencedColumnName="id", nullable=true)
*/
private $customer;
/**
* @ORM\OneToMany(targetEntity="App\Entity\UserMandate", mappedBy="user", fetch="EAGER")
*/
private $mandates;
/**
* @ORM\Column(type="integer", nullable=false, options={"default": 0})
*/
private $consentTransfer;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
protected $deleteAfter;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $customerNrMollie;
/**
* @ORM\Column(type="simple_array", options={"default": ""})
*/
private $tags = [];
public function __construct( $blank = false )
{
parent::__construct($blank);
if ($blank) {
$this->setRoles(['ROLE_USER']);
}
$this->setIsTempUser(false);
}
/**
* @return mixed
*/
public function getPhoneNumber2()
{
return $this->phoneNumber2;
}
/**
* @param mixed $phoneNumber2
*/
public function setPhoneNumber2($phoneNumber2)
{
$this->phoneNumber2 = $phoneNumber2;
}
/**
* @return mixed
*/
public function getRoles()
{
$roles = $this->roles;
if (!in_array('ROLE_USER', $roles)) {
$roles[] = 'ROLE_USER';
}
return $roles;
}
/**
* @return mixed
*/
public function getOrders()
{
return $this->orders;
}
/**
* @param mixed $orders
*/
public function setOrders($orders)
{
$this->orders = $orders;
}
/**
* @return mixed
*/
public function getIsTempUser()
{
return $this->isTempUser;
}
/**
* @param mixed $isTempUser
*/
public function setIsTempUser($isTempUser)
{
$this->isTempUser = $isTempUser;
}
/**
* @return mixed
*/
public function getHasNewsletter()
{
return $this->hasNewsletter;
}
/**
* @param mixed $hasNewsletter
*/
public function setHasNewsletter($hasNewsletter): void
{
$this->hasNewsletter = $hasNewsletter;
}
/**
* @return mixed
*/
public function getIdApi()
{
return $this->idApi;
}
/**
* @param mixed $idApi
*/
public function setIdApi($idApi)
{
$this->idApi = $idApi;
}
/**
* @return mixed
*/
public function getCustomerNrWeclapp()
{
return $this->customerNrWeclapp;
}
/**
* @param mixed $customerNrWeclapp
*/
public function setCustomerNrWeclapp($customerNrWeclapp): void
{
$this->customerNrWeclapp = $customerNrWeclapp;
}
/**
* @return Customer|null
*/
public function getCustomer()
{
return $this->customer;
}
/**
* @param Customer $customer
*/
public function setCustomer(Customer $customer)
{
$this->customer = $customer;
}
/**
* @return ?UserMandate[]
*/
public function getMandates()
{
return $this->mandates;
}
/**
* @param mixed $mandates
*/
public function setMandates($mandates): void
{
$this->mandates = $mandates;
}
/**
* @return mixed
*/
public function getConsentTransfer()
{
return $this->consentTransfer;
}
/**
* @param mixed $consentTransfer
*/
public function setConsentTransfer($consentTransfer): void
{
$this->consentTransfer = $consentTransfer;
}
/**
* @return mixed
*/
public function getDeleteAfter()
{
return $this->deleteAfter;
}
/**
* @param mixed $deleteAfter
*/
public function setDeleteAfter($deleteAfter): void
{
$this->deleteAfter = $deleteAfter;
}
/**
* @return mixed
*/
public function getCustomerNrMollie()
{
return $this->customerNrMollie;
}
/**
* @param mixed $customerNrMollie
*/
public function setCustomerNrMollie($customerNrMollie): void
{
$this->customerNrMollie = $customerNrMollie;
}
public function getTags(): array
{
return $this->tags ?? [];
}
public function setTags(array $tags): void
{
$this->tags = $tags ?? [];
}
public function addTag(string $tag): void
{
if (!in_array($tag, $this->tags)) {
$this->tags[] = $tag;
}
}
public function removeTag(string $tag): void
{
if (($key = array_search($tag, $this->tags)) !== false) {
unset($this->tags[$key]);
}
}
}