<?php
namespace App\Entity;
use App\Repository\RadioRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass=RadioRepository::class)
*/
class Radio
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
#[Assert\NotNull(message: 'Le lien de streaming est obligatoire.')]
private $streamLink;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
#[Assert\NotNull(message: 'Le titre est obligatoire.')]
private $title;
/**
* @ORM\Column(type="boolean")
*/
private $isPublic;
/**
* @ORM\ManyToMany(targetEntity=Roles::class)
*/
private $roles;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria1;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria2;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria3;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria4;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria5;
/**
* @ORM\ManyToMany(targetEntity=Criteria1Item::class)
*/
private $criteria1Items;
/**
* @ORM\ManyToMany(targetEntity=Criteria2Item::class)
*/
private $criteria2Items;
/**
* @ORM\ManyToMany(targetEntity=Criteria3Item::class)
*/
private $criteria3Items;
/**
* @ORM\ManyToMany(targetEntity=Criteria4Item::class)
*/
private $criteria4Items;
/**
* @ORM\ManyToMany(targetEntity=Criteria5Item::class)
*/
private $criteria5Items;
/**
* @ORM\ManyToMany(targetEntity=Instance::class, inversedBy="radios")
*/
#[Assert\NotNull(message: 'L’organisation est obligatoire.')]
private Collection $instances;
public function __construct()
{
$this->roles = new ArrayCollection();
$this->criteria1Items = new ArrayCollection();
$this->criteria2Items = new ArrayCollection();
$this->criteria3Items = new ArrayCollection();
$this->criteria4Items = new ArrayCollection();
$this->criteria5Items = new ArrayCollection();
$this->instances = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getStreamLink(): ?string
{
return $this->streamLink;
}
public function setStreamLink(?string $streamLink): self
{
$this->streamLink = $streamLink;
return $this;
}
public function getTitle(): ?string
{
return $this->title;
}
public function setTitle(?string $title): self
{
$this->title = $title;
return $this;
}
public function getIsPublic(): ?bool
{
return $this->isPublic;
}
public function setIsPublic(bool $isPublic): self
{
$this->isPublic = $isPublic;
return $this;
}
/**
* @return Collection<int, Roles>
*/
public function getRoles(): Collection
{
return $this->roles;
}
public function addRole(Roles $role): self
{
if (!$this->roles->contains($role)) {
$this->roles[] = $role;
}
return $this;
}
public function hasAllCriteria1(): ?bool
{
return $this->hasAllCriteria1;
}
public function setHasAllCriteria1(?bool $hasAllCriteria1): self
{
$this->hasAllCriteria1 = $hasAllCriteria1;
return $this;
}
public function hasAllCriteria2(): ?bool
{
return $this->hasAllCriteria2;
}
public function setHasAllCriteria2(?bool $hasAllCriteria2): self
{
$this->hasAllCriteria2 = $hasAllCriteria2;
return $this;
}
public function hasAllCriteria3(): ?bool
{
return $this->hasAllCriteria3;
}
public function hasAllCriteria4(): ?bool
{
return $this->hasAllCriteria4;
}
public function hasAllCriteria5(): ?bool
{
return $this->hasAllCriteria5;
}
public function setHasAllCriteria3(?bool $hasAllCriteria3): self
{
$this->hasAllCriteria3 = $hasAllCriteria3;
return $this;
}
public function setHasAllCriteria4(?bool $hasAllCriteria4): self
{
$this->hasAllCriteria4 = $hasAllCriteria4;
return $this;
}
public function setHasAllCriteria5(?bool $hasAllCriteria5): self
{
$this->hasAllCriteria5 = $hasAllCriteria5;
return $this;
}
/**
* @return Collection<int, Criteria1Item>
*/
public function getCriteria1Items(): Collection
{
return $this->criteria1Items;
}
public function addCriteria1Item(Criteria1Item $criteria1Item): self
{
if (!$this->criteria1Items->contains($criteria1Item)) {
$this->criteria1Items[] = $criteria1Item;
}
return $this;
}
/**
* @return Collection<int, Criteria2Item>
*/
public function getCriteria2Items(): Collection
{
return $this->criteria2Items;
}
public function addCriteria2Item(Criteria2Item $criteria2Item): self
{
if (!$this->criteria2Items->contains($criteria2Item)) {
$this->criteria2Items[] = $criteria2Item;
}
return $this;
}
/**
* @return Collection<int, Criteria3Item>
*/
public function getCriteria3Items(): Collection
{
return $this->criteria3Items;
}
public function addCriteria3Item(Criteria3Item $criteria3Item): self
{
if (!$this->criteria3Items->contains($criteria3Item)) {
$this->criteria3Items[] = $criteria3Item;
}
return $this;
}
/**
* @return Collection<int, Criteria4Item>
*/
public function getCriteria4Items(): Collection
{
return $this->criteria4Items;
}
public function addCriteria4Item(Criteria4Item $criteria4Item): self
{
if (!$this->criteria4Items->contains($criteria4Item)) {
$this->criteria4Items[] = $criteria4Item;
}
return $this;
}
/**
* @return Collection<int, Criteria5Item>
*/
public function getCriteria5Items(): Collection
{
return $this->criteria5Items;
}
public function addCriteria5Item(Criteria5Item $criteria5Item): self
{
if (!$this->criteria5Items->contains($criteria5Item)) {
$this->criteria5Items[] = $criteria5Item;
}
return $this;
}
/**
* @return Collection<int, Instance>
*/
public function getInstances(): Collection
{
return $this->instances;
}
public function addInstance(Instance $instance): self
{
if (!$this->instances->contains($instance)) {
$this->instances[] = $instance;
}
return $this;
}
public function removeInstance(Instance $instance): self
{
$this->instances->removeElement($instance);
return $this;
}
public function getInstancesList(): string
{
return implode(', ', $this->instances->toArray());
}
}