<?php
namespace App\Entity;
use App\Entity\Enum\ProspectOnStoreStatusEnum;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use phpDocumentor\Reflection\Types\Self_;
/**
* @ORM\Entity(repositoryClass="App\Repository\ProspectOnStoreStatusRepository")
* @ORM\EntityListeners({"App\Listener\ProspectOnStoreStatusListener"})
*/
class ProspectOnStoreStatus
{
const ORIGIN_AUTO = 'auto';
const ORIGIN_HUBSPOT = 'hs';
const ORIGIN_ADMIN = 'admin';
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer")
* 1 == Mauvais
* 2 == A recontacter
* 3 == RDV pris
* 4 == Faux numéro
* 5 == Hors cible
* 6 == Vente réalisée
* 7 == Déjà équipé
* 8 == Trop éloigné
* 9 == Injoignable
* 10 == Non appareillable
* 11 == Autre
* 12 == RDV annulé
* 13 == RDV venu
* 14 == RDV pas venu
*
*/
private $status;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $comment;
/**
* @ORM\Column(type="datetime")
* @Gedmo\Timestampable(on="create")
*/
private $created;
/**
* @ORM\Column(type="datetime", nullable=true)
* @var DateTime
*/
private $dateMeeting;
/**
* @ORM\Column(type="boolean")
* @var boolean
*/
private $isSmsMeetingPoint = false;
/**
* @ORM\Column(type="datetime", nullable=true)
* @var DateTime
*/
private $dateCallback;
/**
* @ORM\Column(type="string", length=5, nullable=true)
* @var string
*/
private $callbackReminderState;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @var string
*/
private $callbackReminderEmail;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\ProspectOnStore", inversedBy="prospectOnStoreStatus")
* @ORM\JoinColumn(nullable=true)
*/
private $prospectOnStore;
/**
* @ORM\ManyToOne(targetEntity=User::class)
* @ORM\JoinColumn(nullable=true)
* @Gedmo\Blameable(on="create")
*/
private $author;
/**
* @ORM\Column(type="string", length=5, nullable=true)
*/
private $origin;
public function getId(): ?int
{
return $this->id;
}
public function getStatus(): ?int
{
return $this->status;
}
public function setStatus(?int $status): self
{
$this->status = $status;
return $this;
}
public function getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): self
{
$this->comment = $comment;
return $this;
}
public function getCreated(): ?\DateTimeInterface
{
return $this->created;
}
public function setCreated(\DateTimeInterface $created): self
{
$this->created = $created;
return $this;
}
public function getDateMeeting(): ?\DateTimeInterface
{
return $this->dateMeeting;
}
public function setDateMeeting(\DateTimeInterface $dateMeeting): self
{
$this->dateMeeting = $dateMeeting;
return $this;
}
public function getIsSmsMeetingPoint(): ?bool
{
return $this->isSmsMeetingPoint;
}
public function setIsSmsMeetingPoint(bool $isSmsMeetingPoint): self
{
$this->isSmsMeetingPoint = $isSmsMeetingPoint;
return $this;
}
/**
* @return ProspectOnStore|null
*/
public function getProspectOnStore(): ?ProspectOnStore
{
return $this->prospectOnStore;
}
/**
* @param ProspectOnStore|null $prospect
* @return $this
*/
public function setProspectOnStore(?ProspectOnStore $prospect): self
{
$this->prospectOnStore = $prospect;
return $this;
}
/**
* @return DateTime
*/
public function getDateCallback(): ?DateTime
{
return $this->dateCallback;
}
/**
* @param DateTime $dateCallback
*/
public function setDateCallback(?DateTime $dateCallback): void
{
$this->dateCallback = $dateCallback;
}
/**
* @return string
*/
public function getCallbackReminderState(): ?string
{
return $this->callbackReminderState;
}
/**
* @param string $callbackReminderState
*/
public function setCallbackReminderState(string $callbackReminderState): void
{
$this->callbackReminderState = $callbackReminderState;
}
/**
* @return string
*/
public function getCallbackReminderEmail(): ?string
{
return $this->callbackReminderEmail;
}
/**
* @param string $callbackReminderEmail
*/
public function setCallbackReminderEmail(string $callbackReminderEmail): void
{
$this->callbackReminderEmail = $callbackReminderEmail;
}
public function getAuthor(): ?User
{
return $this->author;
}
public function setAuthor(?User $author): self
{
$this->author = $author;
return $this;
}
public function getOrigin(): ?string
{
return $this->origin;
}
public function setOrigin(?string $origin): self
{
$this->origin = $origin;
return $this;
}
/**
* has the status been created by a MCA admin or automatically (from feedback)
* @return string|null
*/
public function isOriginAdminOrAuto(): ?string
{
return $this->origin == self::ORIGIN_AUTO || $this->origin == self::ORIGIN_ADMIN || $this->origin == self::ORIGIN_HUBSPOT;
}
public function mustTriggerNotification(): ?string
{
return $this->status == ProspectOnStoreStatusEnum::APPOINTMENT_MADE
|| $this->status == ProspectOnStoreStatusEnum::SELL_MADE;
}
/**
* has the status been created by a MCA admin
* @return string|null
*/
public function isOriginAdmin(): ?string
{
return $this->origin == self::ORIGIN_ADMIN;
}
}