<?php
namespace App\Entity;
use App\Repository\ExamRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=ExamRepository::class)
*/
class Exam
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="exams")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity=Child::class, inversedBy="exams")
*/
private $student;
/**
* @ORM\Column(type="string", length=100)
*/
private $type;
/**
* @ORM\ManyToOne(targetEntity=Subject::class, inversedBy="exams")
* @ORM\JoinColumn(nullable=false)
*/
private $program;
/**
* @ORM\Column(type="string", length=50)
*/
private $level;
/**
* @ORM\Column(type="date")
*/
private $date;
/**
* @ORM\Column(type="boolean", options={"default":false})
*/
private $isCorrected;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $grade;
/**
* @ORM\Column(type="date", nullable=true)
*/
private $correctedDate;
/**
* @ORM\Column(type="string", length=150, nullable=true)
*/
private $correctedBy;
/**
* @ORM\OneToMany(targetEntity=ExamStudentFiles::class, mappedBy="exam", cascade={"remove"})
*/
private $examStudentFiles;
/**
* @ORM\OneToMany(targetEntity=CorrectionExamFiles::class, mappedBy="exam", cascade={"remove"})
*/
private $correctionExamFiles;
/**
* @ORM\ManyToOne(targetEntity=SubscriptionOrder::class, inversedBy="exams")
*/
private $relatedToSubscription;
/**
* @ORM\ManyToOne(targetEntity=SessionOrder::class, inversedBy="exams")
*/
private $relatedToGroupCourses;
/**
* @ORM\ManyToOne(targetEntity=TrainingReport::class, inversedBy="exams")
*/
private $relatedToTrainingReport;
public function __construct()
{
$this->examStudentFiles = new ArrayCollection();
$this->correctionExamFiles = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getStudent(): ?Child
{
return $this->student;
}
public function setStudent(?Child $student): self
{
$this->student = $student;
return $this;
}
public function getType(): ?string
{
return $this->type;
}
public function setType(string $type): self
{
$this->type = $type;
return $this;
}
public function getProgram(): ?Subject
{
return $this->program;
}
public function setProgram(?Subject $program): self
{
$this->program = $program;
return $this;
}
public function getLevel(): ?string
{
return $this->level;
}
public function setLevel(string $level): self
{
$this->level = $level;
return $this;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
public function getIsCorrected(): ?bool
{
return $this->isCorrected;
}
public function setIsCorrected(bool $isCorrected): self
{
$this->isCorrected = $isCorrected;
return $this;
}
public function getGrade(): ?int
{
return $this->grade;
}
public function setGrade(?int $grade): self
{
$this->grade = $grade;
return $this;
}
public function getCorrectedDate(): ?\DateTimeInterface
{
return $this->correctedDate;
}
public function setCorrectedDate(?\DateTimeInterface $correctedDate): self
{
$this->correctedDate = $correctedDate;
return $this;
}
public function getCorrectedBy(): ?string
{
return $this->correctedBy;
}
public function setCorrectedBy(?string $correctedBy): self
{
$this->correctedBy = $correctedBy;
return $this;
}
/**
* @return Collection|ExamStudentFiles[]
*/
public function getExamStudentFiles(): Collection
{
return $this->examStudentFiles;
}
public function addExamStudentFile(ExamStudentFiles $examStudentFile): self
{
if (!$this->examStudentFiles->contains($examStudentFile)) {
$this->examStudentFiles[] = $examStudentFile;
$examStudentFile->setExam($this);
}
return $this;
}
public function removeExamStudentFile(ExamStudentFiles $examStudentFile): self
{
if ($this->examStudentFiles->removeElement($examStudentFile)) {
// set the owning side to null (unless already changed)
if ($examStudentFile->getExam() === $this) {
$examStudentFile->setExam(null);
}
}
return $this;
}
/**
* @return Collection|CorrectionExamFiles[]
*/
public function getCorrectionExamFiles(): Collection
{
return $this->correctionExamFiles;
}
public function addCorrectionExamFile(CorrectionExamFiles $correctionExamFile): self
{
if (!$this->correctionExamFiles->contains($correctionExamFile)) {
$this->correctionExamFiles[] = $correctionExamFile;
$correctionExamFile->setExam($this);
}
return $this;
}
public function removeCorrectionExamFile(CorrectionExamFiles $correctionExamFile): self
{
if ($this->correctionExamFiles->removeElement($correctionExamFile)) {
// set the owning side to null (unless already changed)
if ($correctionExamFile->getExam() === $this) {
$correctionExamFile->setExam(null);
}
}
return $this;
}
public function getRelatedToSubscription(): ?SubscriptionOrder
{
return $this->relatedToSubscription;
}
public function setRelatedToSubscription(?SubscriptionOrder $relatedToSubscription): self
{
$this->relatedToSubscription = $relatedToSubscription;
return $this;
}
public function getRelatedToGroupCourses(): ?SessionOrder
{
return $this->relatedToGroupCourses;
}
public function setRelatedToGroupCourses(?SessionOrder $relatedToGroupCourses): self
{
$this->relatedToGroupCourses = $relatedToGroupCourses;
return $this;
}
public function getRelatedToTrainingReport(): ?TrainingReport
{
return $this->relatedToTrainingReport;
}
public function setRelatedToTrainingReport(?TrainingReport $relatedToTrainingReport): self
{
$this->relatedToTrainingReport = $relatedToTrainingReport;
return $this;
}
}