<?php
namespace App\Entity;
use App\Repository\OrlOfficeRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass=OrlOfficeRepository::class)
*/
class OrlOffice
{
const STATE_NEW='new';
const STATE_VALID='valid';
const STATE_REJECTED='rejected';
const STATE_TOBEDELETED='to_be_deleted';
const AREA_SEARCH = 20; // perimetre de recherche des stores par défaut (reach)
const AREA_SEARCH_EXT = 100; // perimetre de recherche étendu si aucun store (reach extends)
const NUM_PER_PAGE = 10; // nombre de store par page (finder)
const NUM_TOP_CLIENT = 3; // nombre de store dans la selection MCA (top page)
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
* @var string
*/
private $name;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @var string
*/
private $address;
/**
* @ORM\Column(type="string", length=5)
* @Assert\Regex(
* pattern="/^(([0-8][0-9])|(9[0-5])|(2[ab]))[0-9]{3}$/",
* message="Le code postal n'est pas valide"
* )
* @var string
*/
private $zipCode;
/**
* @ORM\Column(type="string", length=255)
* @var string
*/
private $city;
/**
* @Assert\Regex(pattern="/^(?:\+33|0)\s*[1-9](?:[\s.-]*\d{2}){4}$/", message="Le numéro de téléphone n'est pas valide.")
* @ORM\Column(type="string", length=255, nullable=true)
* @var string
*/
private $phoneNumber;
/**
* @ORM\Column(type="float", nullable=true)
* @var float
*/
private $latitude;
/**
* @ORM\Column(type="float", nullable=true)
* @var float
*/
private $longitude;
/**
* @ORM\Column(type="string", length=25)
*/
private $state=self::STATE_NEW;
/**
* @ORM\Column(type="boolean", options={"default" : true})
* @var bool
*/
private $acquisitionEnabled = true;
/**
* @ORM\Column(type="float", nullable=true)
* @var float
*/
private $reach;
/**
* @ORM\Column(type="boolean", options={"default" : false})
* @var bool
*/
private $isPriority = false;
/**
* @ORM\Column(type="string", length=25, nullable=true)
* @var string
*/
private $siretNumber;
/**
* @var \DateTime $updated
*
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime")
*/
private $updatedAt;
/**
* @var \DateTime
* @ORM\Column(type="datetime", nullable=true)
*/
private $deletedAt;
/**
* @ORM\OneToMany(targetEntity="App\Entity\OrlProspectOnOrlOffice", mappedBy="orlOffice")
*/
private $orlProspectsOnOrlOffice;
public function __construct()
{
$this->orlProspectsOnOrlOffice = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
if(! is_null($this->deletedAt)){
return $this->name.' (supprimé)';
}
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getState(): ?string
{
return $this->state;
}
public function setState(string $state): self
{
$this->state = $state;
return $this;
}
/**
* Obtenir l'adresse complète
* @return string
*/
public function getFullAddress() {
return $this->getAddress() . ' ' . $this->getZipCode() . ' ' . $this->getCity();
}
public function getAddress(): ?string
{
return $this->address;
}
public function setAddress(?string $address): self
{
$this->address = $address;
return $this;
}
public function getZipCode(): ?string
{
return $this->zipCode;
}
public function setZipCode(string $zipCode): self
{
$this->zipCode = $zipCode;
return $this;
}
public function getCity(): ?string
{
return $this->city;
}
public function setCity(string $city): self
{
$this->city = $city;
return $this;
}
public function getPhoneNumber(): ?string
{
return $this->phoneNumber;
}
public function setPhoneNumber(?string $phoneNumber): self
{
$this->phoneNumber = $phoneNumber;
return $this;
}
public function getLatitude(): ?float
{
return $this->latitude;
}
public function setLatitude(?float $latitude): self
{
$this->latitude = $latitude;
return $this;
}
public function getLongitude(): ?float
{
return $this->longitude;
}
public function setLongitude(?float $longitude): self
{
$this->longitude = $longitude;
return $this;
}
public function getAcquisitionEnabled(): ?bool
{
return $this->acquisitionEnabled;
}
public function setAcquisitionEnabled(bool $acquisitionEnabled): self
{
$this->acquisitionEnabled = $acquisitionEnabled;
return $this;
}
public function getReach(): ?float
{
return $this->reach;
}
public function setReach(?float $reach): self
{
$this->reach = $reach;
return $this;
}
public function getIsPriority(): ?bool
{
return $this->isPriority;
}
public function setIsPriority(bool $isPriority): self
{
$this->isPriority = $isPriority;
return $this;
}
public function getSiretNumber(): ?string
{
return $this->siretNumber;
}
public function setSiretNumber(?string $siretNumber): self
{
$siretNumber = str_replace(' ', '', $siretNumber);
$this->siretNumber = $siretNumber;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function getDeletedAt(): ?\DateTimeInterface
{
return $this->deletedAt;
}
public function setDeletedAt(?\DateTimeInterface $deletedAt): self
{
$this->deletedAt = $deletedAt;
return $this;
}
/**
* @return Collection|OrlProspectOnOrlOffice[]
*/
public function getOrlProspectsOnOrlOffice(): Collection
{
return $this->orlProspectsOnOrlOffice;
}
public function addOrlProspectsOnOrlOffice(OrlProspectOnOrlOffice $orlProspectsOnOrlOffice): self
{
if (!$this->orlProspectsOnOrlOffice->contains($orlProspectsOnOrlOffice)) {
$this->orlProspectsOnOrlOffice[] = $orlProspectsOnOrlOffice;
$orlProspectsOnOrlOffice->setOrlOffice($this);
}
return $this;
}
public function removeOrlProspectsOnOrlOffice(OrlProspectOnOrlOffice $orlProspectsOnOrlOffice): self
{
if ($this->orlProspectsOnOrlOffice->contains($orlProspectsOnOrlOffice)) {
$this->orlProspectsOnOrlOffice->removeElement($orlProspectsOnOrlOffice);
// set the owning side to null (unless already changed)
if ($orlProspectsOnOrlOffice->getOrlOffice() === $this) {
$orlProspectsOnOrlOffice->setOrlOffice(null);
}
}
return $this;
}
}