<?php
namespace App\Entity\Gestiform\Formations\Catalogue\Module;
use App\Entity\AbstractEntity;
use App\Entity\Common\Document;
use App\Entity\Gestiform\Admin\MasterListe\Masterlistelg;
use App\Entity\Gestiform\Formations\Catalogue\Competence;
use App\Entity\Gestiform\Quiz\Quiz;
use App\Repository\Gestiform\Formations\Catalogue\Module\ModuleCompetenceRepository;
use App\Trait\SortableEntity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(repositoryClass=ModuleCompetenceRepository::class)
*/
class ModuleCompetence extends AbstractEntity
{
use SortableEntity;
/**
* @ORM\ManyToOne(targetEntity=Competence::class, inversedBy="moduleCompetences")
* @ORM\JoinColumn(nullable=false)
*/
private Competence $competence;
/**
* @Gedmo\SortableGroup()
* @ORM\ManyToOne(targetEntity=Module::class, inversedBy="moduleCompetences",cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private Module $module;
/**
* @ORM\Column(type="text", length=255, nullable=true)
*/
private ?string $modaliteEvaluations = null;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private ?int $duree = null;
/**
* @ORM\ManyToMany(targetEntity=Masterlistelg::class, cascade={"persist"})
* @ORM\JoinTable(name="module_competence_procede_evaluations",
* joinColumns={@ORM\JoinColumn(name="module_competence_competence_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="masterlistelg_id", referencedColumnName="id")}
* )
*/
private Collection $procedeEvaluations;
/**
* @ORM\OneToMany(targetEntity=Document::class, mappedBy="moduleCompetence",cascade={"persist"})
*/
private Collection $documents;
/**
* @ORM\ManyToOne(targetEntity=Quiz::class,cascade={"persist"})
* @ORM\JoinColumn(nullable=true)
*/
private ?Quiz $quiz=null;
public function __construct()
{
$this->procedeEvaluations = new ArrayCollection();
$this->documents = new ArrayCollection();
}
public function getCompetence(): ?Competence
{
return $this->competence;
}
public function setCompetence(?Competence $competence): self
{
$this->competence = $competence;
return $this;
}
public function getModule(): ?Module
{
return $this->module;
}
public function setModule(?Module $module): self
{
$this->module = $module;
return $this;
}
public function getModaliteEvaluations(): ?string
{
return $this->modaliteEvaluations;
}
public function setModaliteEvaluations(?string $modaliteEvaluations): self
{
$this->modaliteEvaluations = $modaliteEvaluations;
return $this;
}
public function getDuree(): ?int
{
return $this->duree;
}
public function setDuree(?int $duree): self
{
$this->duree = $duree;
return $this;
}
/**
* @return Collection<int, Masterlistelg>
*/
public function getProcedeEvaluations(): Collection
{
return $this->procedeEvaluations;
}
public function addProcedeEvaluation(Masterlistelg $procedeEvaluation): self
{
if (!$this->procedeEvaluations->contains($procedeEvaluation)) {
$this->procedeEvaluations->add($procedeEvaluation);
}
return $this;
}
public function removeProcedeEvaluation(Masterlistelg $procedeEvaluation): self
{
$this->procedeEvaluations->removeElement($procedeEvaluation);
return $this;
}
/**
* @return Collection<int, Document>
*/
public function getDocuments(): Collection
{
return $this->documents;
}
public function addDocument(Document $document): self
{
if (!$this->documents->contains($document)) {
$this->documents->add($document);
$document->setModuleCompetence($this);
}
return $this;
}
public function removeDocument(Document $document): self
{
if ($this->documents->removeElement($document)) {
// set the owning side to null (unless already changed)
if ($document->getModuleCompetence() === $this) {
$document->setModuleCompetence(null);
}
}
return $this;
}
public function getQuiz(): ?Quiz
{
return $this->quiz;
}
public function setQuiz(?Quiz $quiz): self
{
$this->quiz = $quiz;
return $this;
}
}