<?php
namespace App\Entity;
use App\Repository\MailingTaskRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: MailingTaskRepository::class)]
class MailingTask
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[ORM\ManyToOne(targetEntity: AccountingFirm::class, inversedBy: 'mailingTasks')]
private $accountingFirm;
#[ORM\Column(type: 'datetime')]
private $date_created;
#[ORM\Column(type: 'datetime', nullable: true)]
private $date_finished;
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $status;
#[ORM\Column(type: 'string', length: 255)]
private $type;
#[ORM\OneToMany(mappedBy: 'mailingTask', targetEntity: MailingLog::class)]
private $mailingLogs;
#[ORM\ManyToOne(targetEntity: MailingCommunication::class, inversedBy: 'mailingTasks')]
private $mailingCommunication;
#[ORM\ManyToOne(targetEntity: EmailingClientCampaign::class, inversedBy: 'mailingTask')]
private $emailingClientCampaign;
#[ORM\Column(type: 'integer', nullable: true)]
private $webinaireId;
#[ORM\OneToOne(targetEntity:SatisfactionClientSurvey::class, mappedBy: 'mailingTask', cascade: ['persist', 'remove'])]
private $survey;
#[ORM\Column(type: 'integer', nullable: true, options: ['default' => 0])]
private ?int $retryCount = 0;
#[ORM\Column(type: 'text', nullable: true)]
private ?string $lastError = null;
#[ORM\Column(type: 'datetime', nullable: true)]
private ?\DateTimeInterface $lastErrorDate = null;
public function __construct()
{
$this->date_created = new \DateTime();
$this->mailingLogs = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getAccountingFirm(): ?accountingFirm
{
return $this->accountingFirm;
}
public function setAccountingFirm(?accountingFirm $accountingFirm): self
{
$this->accountingFirm = $accountingFirm;
return $this;
}
public function getDateCreated(): ?\DateTimeInterface
{
return $this->date_created;
}
public function setDateCreated(\DateTimeInterface $date_created): self
{
$this->date_created = $date_created;
return $this;
}
public function getDateFinished(): ?\DateTimeInterface
{
return $this->date_finished;
}
public function setDateFinished(?\DateTimeInterface $date_finished): self
{
$this->date_finished = $date_finished;
return $this;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(?string $status): self
{
$this->status = $status;
return $this;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(string $type): self
{
$this->type = $type;
return $this;
}
public function addMailingLog(MailingLog $mailingLogs): self
{
if (!$this->mailingLogs->contains($mailingLogs)) {
$this->mailingLogs[] = $mailingLogs;
$mailingLogs->setMailingTask($this);
}
return $this;
}
public function removeMailingLog(MailingLog $mailingLogs): self
{
if ($this->mailingLogs->removeElement($mailingLogs)) {
// set the owning side to null (unless already changed)
if ($mailingLogs->getMailingTask() === $this) {
$mailingLogs->setMailingTask(null);
}
}
return $this;
}
public function getMailingCommunication(): ?MailingCommunication
{
return $this->mailingCommunication;
}
public function setMailingCommunication(?MailingCommunication $mailingCommunication): self
{
$this->mailingCommunication = $mailingCommunication;
return $this;
}
public function getEmailingClientCampaign(): ?EmailingClientCampaign
{
return $this->emailingClientCampaign;
}
public function setEmailingClientCampaign(?EmailingClientCampaign $emailingClientCampaign): self
{
$this->emailingClientCampaign = $emailingClientCampaign;
return $this;
}
public function getWebinaireId(): ?int
{
return $this->webinaireId;
}
public function setWebinaireId(?int $webinaireId): self
{
$this->webinaireId = $webinaireId;
return $this;
}
public function getSurvey(): ?SatisfactionClientSurvey
{
return $this->survey;
}
public function setSurvey(?SatisfactionClientSurvey $survey): self
{
$this->survey = $survey;
$newMailingTask = null === $survey ? null : $this;
if ($survey->getMailingTask() !== $newMailingTask) {
$survey->setMailingTask($newMailingTask);
}
return $this;
}
public function getRetryCount(): ?int
{
return $this->retryCount;
}
public function setRetryCount(?int $retryCount): self
{
$this->retryCount = $retryCount;
return $this;
}
public function getLastError(): ?string
{
return $this->lastError;
}
public function setLastError(?string $lastError): self
{
$this->lastError = $lastError;
return $this;
}
public function getLastErrorDate(): ?\DateTimeInterface
{
return $this->lastErrorDate;
}
public function setLastErrorDate(?\DateTimeInterface $lastErrorDate): self
{
$this->lastErrorDate = $lastErrorDate;
return $this;
}
}