<?php
namespace App\Entity;
use App\Entity\Enum\QualificationServiceEnum;
use App\Repository\ProspectOnStoreQualificationRepository;
use App\Entity\Enum\QualificationStateEnum;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use ApiPlatform\Core\Annotation\ApiResource;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=ProspectOnStoreQualificationRepository::class)
* @ORM\EntityListeners({"App\Listener\ProspectOnStoreQualificationListener"})
*
* @ApiResource(
* itemOperations={"get"},
* normalizationContext={"groups"={"posq:read"}},
* denormalizationContext={"groups"={"posq:write"}}
* )
*/
class ProspectOnStoreQualification
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
* @Groups({"posq:read"})
*
*/
private $id;
/**
* @ORM\Column(type="string", length=5)
* @Groups({"posq:read","pos:read"})
*/
private $state;
/**
* @ORM\Column(type="datetime")
* @Gedmo\Timestampable(on="create")
*/
private $updatedAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $endedAt;
/**
* Validation date
* @ORM\Column(type="datetime", nullable=true)
*/
private $validatedAt;
/**
* @ORM\OneToOne(targetEntity=ProspectOnStore::class, mappedBy="qualification")
*/
private ProspectOnStore $prospectOnStore;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $mediaoptinTransmissionDate;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $mediaoptinTransmissionStatus;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $mediaoptinTransmissionError;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $comment;
/**
* @ORM\Column(type="string", length=5)
*/
private string $service;
public function __construct(ProspectOnStore $prospectOnStore)
{
$this->state = QualificationStateEnum::PENDING;
$this->service = QualificationServiceEnum::HUBSPOT;
$this->prospectOnStore = $prospectOnStore;
}
public function getId(): ?int
{
return $this->id;
}
public function getState(): ?string
{
return $this->state;
}
public function isValidated(): bool
{
return $this->state == QualificationStateEnum::VALID;
}
public function isPending(): bool
{
return $this->state == QualificationStateEnum::PENDING;
}
public function getStateLabel(): ?string
{
return QualificationStateEnum::getStateName($this->state);
}
public function setState(string $state): self
{
$this->state = $state;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* @return ProspectOnStore
*/
public function getProspectOnStore(): ProspectOnStore
{
return $this->prospectOnStore;
}
/**
* @param ProspectOnStore $prospectOnStore
*/
public function setProspectOnStore(ProspectOnStore $prospectOnStore): void
{
$this->prospectOnStore = $prospectOnStore;
}
/**
* shortcut
* @return Prospect
*/
public function getProspect(): Prospect
{
return $this->prospectOnStore->getProspect();
}
/**
* shortcut
* @return Store
*/
public function getStore(): Store
{
return $this->prospectOnStore->getStore();
}
public function getMediaoptinTransmissionDate(): ?\DateTimeInterface
{
return $this->mediaoptinTransmissionDate;
}
public function setMediaoptinTransmissionDate(?\DateTimeInterface $mediaoptinTransmissionDate): self
{
$this->mediaoptinTransmissionDate = $mediaoptinTransmissionDate;
return $this;
}
public function getMediaoptinTransmissionStatus(): ?bool
{
return $this->mediaoptinTransmissionStatus;
}
public function setMediaoptinTransmissionStatus(?bool $mediaoptinTransmissionStatus): self
{
$this->mediaoptinTransmissionStatus = $mediaoptinTransmissionStatus;
return $this;
}
public function getMediaoptinTransmissionError(): ?string
{
return $this->mediaoptinTransmissionError;
}
public function setMediaoptinTransmissionError(?string $mediaoptinTransmissionError): self
{
$this->mediaoptinTransmissionError = $mediaoptinTransmissionError;
return $this;
}
public function getValidatedAt(): ?\DateTimeInterface
{
return $this->validatedAt;
}
public function setValidatedAt(?\DateTimeInterface $validatedAt): self
{
$this->validatedAt = $validatedAt;
return $this;
}
public function getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): self
{
$this->comment = $comment;
return $this;
}
/**
* @return mixed
*/
public function getEndedAt()
{
return $this->endedAt;
}
/**
* @param mixed $endedAt
*/
public function setEndedAt($endedAt): void
{
$this->endedAt = $endedAt;
}
public function getService(): ?string
{
return $this->service;
}
public function getServiceLabel(): ?string
{
return QualificationServiceEnum::getServiceName($this->service);
}
public function setService(string $service): self
{
$this->service = $service;
return $this;
}
}