<?php
namespace App\Application\Internit\ComunicadoBundle\Entity;
use App\Application\Internit\ComunicadoBundle\Repository\ComunicadoRepository;
use App\Application\Internit\ClienteBundle\Entity\Cliente;
use App\Application\Internit\UnidadeClienteBundle\Entity\UnidadeCliente;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use App\Entity\SonataMediaGallery;
use App\Entity\SonataMediaMedia;
use Doctrine\ORM\Mapping as ORM;
use DateTime;
/** Info: */
#[ORM\Table(name: 'comunicado')]
#[ORM\Entity(repositoryClass: ComunicadoRepository::class)]
#[UniqueEntity('id')]
class Comunicado
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(name: 'id', type: 'integer', unique: true, nullable: false)]
private ?int $id = null;
#[Assert\NotNull]
#[Assert\NotBlank]
#[ORM\Column(name: 'titulo', type: 'string', unique: false, nullable: false)]
private string $titulo;
#[ORM\Column(name: 'mensagem', type: 'text', unique: false, nullable: true)]
private ?string $mensagem = null;
#[Assert\NotNull]
#[Assert\NotBlank]
##[Assert\Date]
#[ORM\Column(name: 'data', type: 'date', unique: false, nullable: false)]
private DateTime $data;
#[ORM\Column(name: 'visivel', type: 'boolean', unique: false, nullable: true)]
private ?bool $visivel = null;
#[ORM\JoinTable(name: 'cliente_comunicado')]
#[ORM\JoinColumn(name: 'comunicado_id', referencedColumnName: 'id')] // , onDelete: 'SET NULL'
#[ORM\InverseJoinColumn(name: 'cliente_id', referencedColumnName: 'id')]
#[ORM\ManyToMany(targetEntity: Cliente::class, inversedBy: 'comunicados')]
private Collection $clientes;
#[ORM\JoinTable(name: 'unidade_cliente_comunicado')]
#[ORM\JoinColumn(name: 'comunicado_id', referencedColumnName: 'id')] // , onDelete: 'SET NULL'
#[ORM\InverseJoinColumn(name: 'unidade_cliente_id', referencedColumnName: 'id')]
#[ORM\ManyToMany(targetEntity: UnidadeCliente::class, inversedBy: 'comunicados')]
private Collection $unidadeCliente;
private mixed $multipleUpload;
#[ORM\ManyToOne(targetEntity: SonataMediaGallery::class, cascade: ['persist'])]
private mixed $galeria;
private int $qtdUnidades;
public function __construct()
{
$this->clientes = new ArrayCollection();
$this->unidadeCliente = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getTitulo(): string
{
return $this->titulo;
}
public function setTitulo(string $titulo): void
{
$this->titulo = $titulo;
}
public function getMensagem(): ?string
{
return $this->mensagem;
}
public function setMensagem(?string $mensagem): void
{
$this->mensagem = $mensagem;
}
public function getData(): DateTime
{
return $this->data;
}
public function setData(DateTime $data): void
{
$this->data = $data;
}
public function getVisivel(): ?bool
{
return $this->visivel;
}
public function setVisivel(?bool $visivel): void
{
$this->visivel = $visivel;
}
public function getClientes(): Collection
{
return $this->clientes;
}
public function setClientes(Collection $clientes): void
{
$this->clientes = $clientes;
}
/**
* @return mixed
*/
public function getMultipleUpload(): mixed
{
return $this->multipleUpload;
}
/**
* @param mixed $multipleUpload
*/
public function setMultipleUpload(mixed $multipleUpload): void
{
$this->multipleUpload = $multipleUpload;
}
public function getGaleria(): mixed
{
return $this->galeria;
}
public function setGaleria(mixed $galeria): void
{
$this->galeria = $galeria;
}
/**
* @return Collection
*/
public function getUnidadeCliente(): Collection
{
return $this->unidadeCliente;
}
/**
* @param Collection $unidadeCliente
*/
public function setUnidadeCliente(Collection $unidadeCliente): void
{
$this->unidadeCliente = $unidadeCliente;
}
public function getQtdUnidades(): int
{
return count($this->getUnidadeCliente());
}
}