<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* User
*
* @ORM\Table(name="user", uniqueConstraints={@ORM\UniqueConstraint(name="user_id_uindex", columns={"id"})}, indexes={@ORM\Index(name="user_user_id_fk", columns={"godfather_id"}), @ORM\Index(name="user_manager_id_fk", columns={"manager_id"})})
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string|null
*
* @ORM\Column(name="last_name", type="string", length=255, nullable=true)
*/
private $lastName;
/**
* @var string|null
*
* @ORM\Column(name="first_name", type="string", length=255, nullable=true)
*/
private $firstName;
/**
* @var string|null
*
* @ORM\Column(name="position", type="string", length=255, nullable=true)
*/
private $position;
/**
* @var bool|null
*
* @ORM\Column(name="pro", type="boolean", nullable=true)
*/
private $pro = false;
/**
* @var string|null
*
* @ORM\Column(name="godfather_code", type="string", length=255, nullable=true)
*/
private $godfatherCode;
/**
* @var \DateTime|null
*
* @ORM\Column(name="creation_date", type="datetime", nullable=true)
*/
private $creationDate;
/**
* @var string|null
*
* @ORM\Column(name="address", type="string", length=255, nullable=true)
*/
private $address;
/**
* @var string|null
*
* @ORM\Column(name="address_2", type="string", length=255, nullable=true)
*/
private $address2;
/**
* @var string|null
*
* @ORM\Column(name="zip_code", type="string", length=32, nullable=true)
*/
private $zipCode;
/**
* @var string|null
*
* @ORM\Column(name="city", type="string", length=255, nullable=true)
*/
private $city;
/**
* @var string|null
*
* @ORM\Column(name="phone", type="string", length=255, nullable=true)
*/
private $phone;
/**
* @var string|null
*
* @ORM\Column(name="email", type="string", length=255, nullable=true)
*/
private $email;
/**
* @var bool|null
*
* @ORM\Column(name="owner", type="boolean", nullable=true)
*/
private $owner = false;
/**
* @var \DateTime|null
*
* @ORM\Column(name="date_of_birth", type="datetime", nullable=true)
*/
private $dateOfBirth;
/**
* @var string|null
*
* @ORM\Column(name="pdl_number", type="string", length=255, nullable=true)
*/
private $pdlNumber;
/**
* @var string|null
*
* @ORM\Column(name="pce_number", type="string", length=255, nullable=true)
*/
private $pceNumber;
/**
* @var bool|null
*
* @ORM\Column(name="gas", type="boolean", nullable=true)
*/
private $gas = false;
/**
* @var bool|null
*
* @ORM\Column(name="electricity", type="boolean", nullable=true)
*/
private $electricity = false;
/**
* @var bool|null
*
* @ORM\Column(name="photovoltaique", type="boolean", nullable=true)
*/
private $photovoltaique = false;
/**
* @var bool|null
*
* @ORM\Column(name="thermostat", type="boolean", nullable=true)
*/
private $thermostat = false;
/**
* @var Manager
*
* @ORM\ManyToOne(targetEntity="Manager")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="manager_id", referencedColumnName="id")
* })
*/
private $manager;
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="godfather_id", referencedColumnName="id")
* })
*/
private $godfather;
/**
* @ORM\OneToMany(targetEntity="Company", mappedBy="user")
*/
private $companies;
/**
* @var Account
*
* @ORM\OneToOne(targetEntity="Account", mappedBy="user")
*/
private $account;
/**
* @var string|null
*
* @ORM\Column(name="fe_invitation_token", type="string", length=255, nullable=true)
*/
private $feInvitationToken;
/**
* @var \DateTime|null
*
* @ORM\Column(name="fe_invitation_date", type="datetime", nullable=true)
*/
private $feInvitationDate;
/**
* @var Device
*
* @ORM\OneToOne(targetEntity="Device", mappedBy="user")
*/
private $device;
/**
* @var bool|null
*
* @ORM\Column(name="archived", type="boolean", nullable=true)
*/
private $archived = false;
/**
* @var Collection
*
* @ORM\OneToMany(targetEntity="Contract", mappedBy="user")
*/
private $contracts;
/**
* @var string|null
*
* @ORM\Column(name="referral_code", type="string", length=10, nullable=true)
*/
private $referralCode;
/**
* @var string|null
*
* @ORM\Column(name="step_in_process", type="string", length=100, nullable=true)
*/
private $stepInProcess;
/**
* @var string|null
*
* @ORM\Column(name="comment", type="string", length=65535, nullable=true)
*/
private $comment;
public function __construct()
{
$this->companies = new ArrayCollection();
}
/**
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* @param int $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return string|null
*/
public function getLastName()
{
return $this->lastName;
}
/**
* @param string|null $lastName
*/
public function setLastName($lastName)
{
$this->lastName = $lastName;
}
/**
* @return string|null
*/
public function getFirstName()
{
return $this->firstName;
}
/**
* @param string|null $firstName
*/
public function setFirstName($firstName)
{
$this->firstName = $firstName;
}
/**
* @return string|null
*/
public function getPosition(): ?string
{
return $this->position;
}
/**
* @param string|null $position
*/
public function setPosition(?string $position): void
{
$this->position = $position;
}
/**
* @return bool|null
*/
public function getPro()
{
return $this->pro;
}
/**
* @param bool|null $pro
*/
public function setPro($pro)
{
$this->pro = $pro;
}
/**
* @return string|null
*/
public function getGodfatherCode()
{
return $this->godfatherCode;
}
/**
* @param string|null $godfatherCode
*/
public function setGodfatherCode($godfatherCode)
{
$this->godfatherCode = $godfatherCode;
}
/**
* @return \DateTime|null
*/
public function getCreationDate()
{
return $this->creationDate;
}
/**
* @param \DateTime|null $creationDate
*/
public function setCreationDate($creationDate)
{
$this->creationDate = $creationDate;
}
/**
* @return string|null
*/
public function getAddress()
{
return $this->address;
}
/**
* @param string|null $address
*/
public function setAddress($address)
{
$this->address = $address;
}
/**
* @return string|null
*/
public function getAddress2()
{
return $this->address2;
}
/**
* @param string|null $address2
*/
public function setAddress2($address2)
{
$this->address2 = $address2;
}
/**
* @return string|null
*/
public function getZipCode()
{
return $this->zipCode;
}
/**
* @param string|null $zipCode
*/
public function setZipCode($zipCode)
{
$this->zipCode = $zipCode;
}
/**
* @return string|null
*/
public function getCity()
{
return $this->city;
}
/**
* @param string|null $city
*/
public function setCity($city)
{
$this->city = $city;
}
/**
* @return string|null
*/
public function getPhone()
{
return $this->phone;
}
/**
* @param string|null $phone
*/
public function setPhone($phone)
{
$this->phone = $phone;
}
/**
* @return string|null
*/
public function getEmail()
{
return $this->email;
}
/**
* @param string|null $email
*/
public function setEmail($email)
{
$this->email = $email;
}
/**
* @return bool|null
*/
public function getOwner()
{
return $this->owner;
}
/**
* @param bool|null $owner
*/
public function setOwner($owner)
{
$this->owner = $owner;
}
/**
* @return \DateTime|null
*/
public function getDateOfBirth(): ?\DateTime
{
return $this->dateOfBirth;
}
/**
* @param \DateTime|null $dateOfBirth
*/
public function setDateOfBirth(?\DateTime $dateOfBirth): void
{
$this->dateOfBirth = $dateOfBirth;
}
/**
* @return string|null
*/
public function getPdlNumber()
{
return $this->pdlNumber;
}
/**
* @param string|null $pdlNumber
*/
public function setPdlNumber($pdlNumber)
{
$this->pdlNumber = $pdlNumber;
}
/**
* @return string|null
*/
public function getPceNumber()
{
return $this->pceNumber;
}
/**
* @param string|null $pceNumber
*/
public function setPceNumber($pceNumber)
{
$this->pceNumber = $pceNumber;
}
/**
* @return bool|null
*/
public function getGas()
{
return $this->gas;
}
/**
* @param bool|null $gas
*/
public function setGas($gas)
{
$this->gas = $gas;
}
/**
* @return bool|null
*/
public function getElectricity()
{
return $this->electricity;
}
/**
* @param bool|null $electricity
*/
public function setElectricity($electricity)
{
$this->electricity = $electricity;
}
public function getPhotovoltaique(): ?bool
{
return $this->photovoltaique;
}
public function setPhotovoltaique(?bool $photovoltaique): void
{
$this->photovoltaique = $photovoltaique;
}
public function getThermostat(): ?bool
{
return $this->thermostat;
}
public function setThermostat(?bool $thermostat): void
{
$this->thermostat = $thermostat;
}
/**
* @return Manager
*/
public function getManager()
{
return $this->manager;
}
/**
* @param Manager $manager
*/
public function setManager($manager)
{
$this->manager = $manager;
}
/**
* @return User
*/
public function getGodfather()
{
return $this->godfather;
}
/**
* @param User $godfather
*/
public function setGodfather($godfather)
{
$this->godfather = $godfather;
}
/**
* @return ArrayCollection
*/
public function getCompanies()
{
return $this->companies;
}
/**
* @param ArrayCollection $companies
*/
public function setCompanies($companies)
{
$this->companies = $companies;
}
public function addCompany(Company $company)
{
if (!$this->companies->contains($company)) {
$this->companies[] = $company;
$company->setUser($this);
}
return $this;
}
public function removeCompany(Company $company)
{
if ($this->companies->removeElement($company)) {
// set the owning side to null (unless already changed)
if ($company->getUser() === $this) {
$company->setUser(null);
}
}
return $this;
}
/**
* @return Account|null
*/
public function getAccount(): ?Account
{
return $this->account;
}
/**
* @return string|null
*/
public function getFeInvitationToken(): ?string
{
return $this->feInvitationToken;
}
/**
* @param string|null $feInvitationToken
*/
public function setFeInvitationToken(?string $feInvitationToken): void
{
$this->feInvitationToken = $feInvitationToken;
}
/**
* @return \DateTime|null
*/
public function getFeInvitationDate(): ?\DateTime
{
return $this->feInvitationDate;
}
/**
* @param \DateTime|null $feInvitationDate
*/
public function setFeInvitationDate(?\DateTime $feInvitationDate): void
{
$this->feInvitationDate = $feInvitationDate;
}
/**
* @return Device
*/
public function getDevice(): Device
{
return $this->device;
}
/**
* @param Device $device
*/
public function setDevice(Device $device): void
{
$this->device = $device;
}
/**
* @return bool|null
*/
public function getArchived(): ?bool
{
return $this->archived;
}
/**
* @param bool|null $archived
*/
public function setArchived(?bool $archived): void
{
$this->archived = $archived;
}
/**
* @return Collection
*/
public function getContracts(): Collection
{
return $this->contracts;
}
public function getReferralCode(): ?string
{
return $this->referralCode;
}
public function setReferralCode(?string $referralCode): void
{
$this->referralCode = $referralCode;
}
/**
* @param Collection $contracts
*/
public function setContracts(Collection $contracts): void
{
$this->contracts = $contracts;
}
public function getStepInProcess(): ?string
{
return $this->stepInProcess;
}
public function setStepInProcess(?string $stepInProcess): void
{
$this->stepInProcess = $stepInProcess;
}
public function getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): void
{
$this->comment = $comment;
}
public function getServicesString()
{
$services = [];
foreach ($this->getContracts() as $contract) {
foreach ($contract->getTypes() as $type) {
if (!in_array($type, $services)) {
$services[] = $type;
}
}
}
return implode(", ", $services);
}
}