<?php
namespace App\Entity;
use App\Repository\SmsClientCampaignRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: SmsClientCampaignRepository::class)]
class SmsClientCampaign
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[ORM\Column(type: 'string', length: 255)]
private $name;
#[ORM\Column(type: 'string', length: 160, nullable: true)]
private $message;
#[ORM\ManyToOne(targetEntity: SmsClientList::class, inversedBy: 'campaigns')]
private $diffusionList;
#[ORM\Column(type: 'datetime', nullable: true)]
private $sendDate;
#[ORM\Column(type: 'string', length: 255)]
private $status;
#[ORM\ManyToOne(targetEntity: AccountingFirm::class, inversedBy: 'smsClientCampaigns')]
private $accountingFirm;
#[ORM\Column(type: 'integer', nullable: true)]
private $smsUsed;
#[ORM\Column(type: 'json', nullable: true)]
private $selectedCategories = [];
#[ORM\Column(type: 'json', nullable: true)]
private $selectedTags = [];
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getMessage(): ?string
{
return $this->message;
}
public function setMessage(string $message): self
{
$this->message = $message;
return $this;
}
public function getDiffusionList(): ?SmsClientList
{
return $this->diffusionList;
}
public function setDiffusionList(?SmsClientList $diffusionList): self
{
$this->diffusionList = $diffusionList;
return $this;
}
public function getSendDate(): ?\DateTime
{
return $this->sendDate;
}
public function setSendDate(?\DateTime $sendDate): self
{
$this->sendDate = $sendDate;
return $this;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(string $status): self
{
$this->status = $status;
return $this;
}
public function getAccountingFirm(): ?AccountingFirm
{
return $this->accountingFirm;
}
public function setAccountingFirm(?AccountingFirm $accountingFirm): self
{
$this->accountingFirm = $accountingFirm;
return $this;
}
public function getSmsUsed(): ?int
{
return $this->smsUsed;
}
public function setSmsUsed(?int $smsUsed): self
{
$this->smsUsed = $smsUsed;
return $this;
}
public function getSelectedCategories(): ?array
{
return $this->selectedCategories;
}
public function setSelectedCategories(ArrayCollection|array $selectedCategories): self
{
if ($selectedCategories instanceof Collection) {
$this->selectedCategories = $selectedCategories->map(fn($cat) => $cat->getId())->toArray();
} elseif (is_array($selectedCategories)) {
$this->selectedCategories = $selectedCategories;
} else {
$this->selectedCategories = [];
}
return $this;
}
public function getSelectedTags(): ?array
{
return $this->selectedTags;
}
public function setSelectedTags(ArrayCollection|array $selectedTags): self
{
if ($selectedTags instanceof Collection) {
$this->selectedTags = $selectedTags->map(fn($tag) => $tag->getId())->toArray();
} elseif (is_array($selectedTags)) {
$this->selectedTags = $selectedTags;
} else {
$this->selectedTags = [];
}
return $this;
}
}