src/CourseBundle/Entity/CQuizQuestionCategory.php
<?php
/* For licensing terms, see /license.txt */
declare(strict_types=1);
namespace Chamilo\CourseBundle\Entity;
use Chamilo\CoreBundle\Entity\AbstractResource;
use Chamilo\CoreBundle\Entity\ResourceInterface;
use Chamilo\CoreBundle\Entity\ResourceShowCourseResourcesInSessionInterface;
use Chamilo\CourseBundle\Repository\CQuizQuestionCategoryRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Stringable;
use Symfony\Component\Uid\Uuid;
use Symfony\Component\Validator\Constraints as Assert;
#[ORM\Table(name: 'c_quiz_question_category')]
#[ORM\Entity(repositoryClass: CQuizQuestionCategoryRepository::class)]
class CQuizQuestionCategory extends AbstractResource implements ResourceInterface, ResourceShowCourseResourcesInSessionInterface, Stringable
{
#[ORM\Column(name: 'iid', type: 'integer')]
#[ORM\Id]
#[ORM\GeneratedValue]
protected ?int $iid = null;
#[Assert\NotBlank]
#[ORM\Column(name: 'title', type: 'string', length: 255, nullable: false)]
protected string $title;
#[ORM\Column(name: 'description', type: 'text', nullable: true)]
protected ?string $description = null;
/**
* @var Collection|CQuizQuestion[]
*/
#[ORM\ManyToMany(targetEntity: CQuizQuestion::class, mappedBy: 'categories')]
protected Collection $questions;
public function __construct()
{
$this->questions = new ArrayCollection();
}
public function __toString(): string
{
return $this->getTitle();
}
public function addQuestion(CQuizQuestion $question): void
{
if ($this->questions->contains($question)) {
return;
}
$this->questions->add($question);
$question->addCategory($this);
}
public function removeQuestion(CQuizQuestion $question): void
{
if (!$this->questions->contains($question)) {
return;
}
$this->questions->removeElement($question);
$question->removeCategory($this);
}
public function getIid(): ?int
{
return $this->iid;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
public function getTitle(): string
{
return $this->title;
}
public function setDescription(string $description): self
{
$this->description = $description;
return $this;
}
/**
* Get description.
*/
public function getDescription(): ?string
{
return $this->description;
}
/**
* @return Collection<int, CQuizQuestion>
*/
public function getQuestions(): Collection
{
return $this->questions;
}
public function setQuestions(Collection $questions): self
{
$this->questions = $questions;
return $this;
}
public function getResourceIdentifier(): int|Uuid
{
return $this->getIid();
}
public function getResourceName(): string
{
return $this->getTitle();
}
public function setResourceName(string $name): self
{
return $this->setTitle($name);
}
}