<?php
namespace App\Entity;
use App\Repository\BlogPostCategoryRepository;
use App\Repository\BlogPostRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\Instance;
/**
* @ORM\Entity(repositoryClass=BlogPostCategoryRepository::class)
*/
class BlogPostCategory implements WithQRCodeInterface, PositionedInterface
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=100)
*/
private $title;
/**
* @ORM\Column(type="string", length=255)
*/
private $slug;
/**
* @ORM\Column(type="boolean")
*/
private $isActivated = false;
/**
* @ORM\Column(type="datetime")
*/
private $createdAt;
/**
* @ORM\Column(type="datetime")
*/
private $updatedAt;
/**
* @ORM\Column(type="integer")
*/
private $position;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $qrCode;
/**
* @ORM\Column(type="boolean")
*/
private $isPublic;
/**
* @ORM\OneToOne(targetEntity=Seo::class, cascade={"persist", "remove"})
*/
private $seo;
/**
* @ORM\OneToMany(targetEntity=BlogPost::class, mappedBy="blogPostCategory")
*/
private $blogPosts;
/**
* @ORM\ManyToMany(targetEntity=User::class, mappedBy="blogPostCategories")
*/
private $users;
/**
* @ORM\ManyToMany(targetEntity=Roles::class)
*/
private $roles;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria1;
/**
* @ORM\ManyToMany(targetEntity=Criteria1Item::class, inversedBy="blogPostCategories")
*/
private $criteria1Items;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria2;
/**
* @ORM\ManyToMany(targetEntity=Criteria2Item::class)
*/
private $criteria2Items;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria3;
/**
* @ORM\ManyToMany(targetEntity=Criteria3Item::class)
*/
private $criteria3Items;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria4;
/**
* @ORM\ManyToMany(targetEntity=Criteria4Item::class)
*/
private $criteria4Items;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hasAllCriteria5;
/**
* @ORM\ManyToMany(targetEntity=Criteria5Item::class)
*/
private $criteria5Items;
/**
* @ORM\ManyToMany(targetEntity=Instance::class, inversedBy="blogPostCategories")
*/
private Collection $instances;
/**
* BlogPostCategory constructor.
*/
public function __construct()
{
$this->blogPosts = new ArrayCollection();
$this->createdAt = new \DateTime();
$this->updatedAt = new \DateTime();
$this->users = new ArrayCollection();
$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();
}
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return string|null
*/
public function getTitle(): ?string
{
return $this->title;
}
/**
* @param string $title
* @return $this
*/
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
/**
* @return string|null
*/
public function getSlug(): ?string
{
return $this->slug;
}
/**
* @param string $slug
* @return $this
*/
public function setSlug(string $slug): self
{
$this->slug = $slug;
return $this;
}
/**
* @return bool|null
*/
public function getIsActivated(): ?bool
{
return $this->isActivated;
}
/**
* @param bool $isActivated
* @return $this
*/
public function setIsActivated(bool $isActivated): self
{
$this->isActivated = $isActivated;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
/**
* @param \DateTimeInterface $createdAt
* @return $this
*/
public function setCreatedAt(\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
/**
* @param \DateTimeInterface $updatedAt
* @return $this
*/
public function setUpdatedAt(\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* @return Collection<int, BlogPost>
*/
public function getBlogPosts(): Collection
{
return $this->blogPosts;
}
public function addBlogPost(BlogPost $blogPost): self
{
if (!$this->blogPosts->contains($blogPost)) {
$this->blogPosts[] = $blogPost;
$blogPost->setBlogPostCategory($this);
}
return $this;
}
public function removeBlogPost(BlogPost $blogPost): self
{
if ($this->blogPosts->removeElement($blogPost)) {
// set the owning side to null (unless already changed)
if ($blogPost->getBlogPostCategory() === $this) {
$blogPost->setBlogPostCategory(null);
}
}
return $this;
}
public function getPosition(): ?int
{
return $this->position;
}
public function setPosition(int $position): self
{
$this->position = $position;
return $this;
}
public function getQrCode(): ?string
{
return $this->qrCode;
}
public function setQrCode(string $qrCode): self
{
$this->qrCode = $qrCode;
return $this;
}
public function getQrCodeRouteName(): string
{
return 'categorie';
}
public function getQrCodeRouteParams(): array
{
return [
'slug' => $this->getSlug(),
];
}
public function getIsPublic(): ?bool
{
return $this->isPublic;
}
public function setIsPublic(bool $isPublic): self
{
$this->isPublic = $isPublic;
return $this;
}
/**
* @return Collection<int, User>
*/
public function getUsers(): Collection
{
return $this->users;
}
public function addUser(User $user): self
{
if (!$this->users->contains($user)) {
$this->users[] = $user;
}
return $this;
}
public function removeUser(User $user): self
{
if ($this->users->contains($user)) {
$this->users->removeElement($user);
}
return $this;
}
public function getSeo(): ?Seo
{
return $this->seo;
}
public function setSeo(?Seo $seo): self
{
$this->seo = $seo;
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 removeRole(Roles $role): self
{
$this->roles->removeElement($role);
return $this;
}
public function isHasAllCriteria1(): ?bool
{
return $this->hasAllCriteria1;
}
public function setHasAllCriteria1(?bool $hasAllCriteria1): self
{
$this->hasAllCriteria1 = $hasAllCriteria1;
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;
}
public function removeCriteria1Item(Criteria1Item $criteria1Item): self
{
$this->criteria1Items->removeElement($criteria1Item);
return $this;
}
public function isHasAllCriteria2(): ?bool
{
return $this->hasAllCriteria2;
}
public function setHasAllCriteria2(?bool $hasAllCriteria2): self
{
$this->hasAllCriteria2 = $hasAllCriteria2;
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;
}
public function removeCriteria2Item(Criteria2Item $criteria2Item): self
{
$this->criteria2Items->removeElement($criteria2Item);
return $this;
}
public function isHasAllCriteria3(): ?bool
{
return $this->hasAllCriteria3;
}
public function setHasAllCriteria3(?bool $hasAllCriteria3): self
{
$this->hasAllCriteria3 = $hasAllCriteria3;
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;
}
public function removeCriteria3Item(Criteria3Item $criteria3Item): self
{
$this->criteria3Items->removeElement($criteria3Item);
return $this;
}
public function isHasAllCriteria4(): ?bool
{
return $this->hasAllCriteria4;
}
public function setHasAllCriteria4(?bool $hasAllCriteria4): self
{
$this->hasAllCriteria4 = $hasAllCriteria4;
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;
}
public function removeCriteria4Item(Criteria4Item $criteria4Item): self
{
$this->criteria4Items->removeElement($criteria4Item);
return $this;
}
public function isHasAllCriteria5(): ?bool
{
return $this->hasAllCriteria5;
}
public function setHasAllCriteria5(?bool $hasAllCriteria5): self
{
$this->hasAllCriteria5 = $hasAllCriteria5;
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;
}
public function removeCriteria5Item(Criteria5Item $criteria5Item): self
{
$this->criteria5Items->removeElement($criteria5Item);
return $this;
}
public function __toString(): string
{
return $this->getTitle() ?? '';
}
/**
* @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());
}
}