<?php
namespace App\Entity;
use App\Entity\Enum\QualificationStateEnum;
use App\Repository\ProspectQualificationRepository;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\Criteria;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(repositoryClass=ProspectQualificationRepository::class)
*/
class ProspectQualification
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=5)
*/
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=Prospect::class, mappedBy="qualification")
*/
private $prospect;
/**
* @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;
public function __construct()
{
$this->state = QualificationStateEnum::PENDING;
}
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 Prospect
*/
public function getProspect()
{
return $this->prospect;
}
/**
* @param Prospect $prospect
*/
public function setProspect(Prospect $prospect): void
{
$this->prospect = $prospect;
}
/**
* @deprecated
* @return Collection
*/
public function getProspectsOnStoreWaitingQualification(): Collection
{
$criteria = Criteria::create()
->where(Criteria::expr()->eq('waitingQualification', true))
//->orderBy(['k.dateCreation', 'desc'])
;
return $this->prospect->getProspectsOnStore()->matching($criteria);
}
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;
}
}