<?php
namespace CoreBundle\Entity;
use AppBundle\Form\Model\RemedialModuleModel;
use CoreBundle\Entity\Common\MmppUserInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use Symfony\Component\Validator\Constraints as Assert;
use TheCodingMachine\GraphQLite\Annotations\Field;
use TheCodingMachine\GraphQLite\Annotations\Type;
/**
* Student
*
* @ORM\Table(name="note_student")
* @ORM\Entity(repositoryClass="CoreBundle\Repository\StudentRepository")
*/
#[Type]
class Student implements MmppUserInterface, \Serializable
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
*/
private $name;
/**
* @ORM\Column(type="string", nullable=true, length=40)
*/
private $password;
/**
* @ORM\Column(type="string", nullable=true, length=16)
* @var string
*/
private $plainPassword;
/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
* @Assert\Email()
*/
private $email;
/**
* @ORM\Column(type="string", nullable=false, length=32, options={"default": "primant"})
* @var string
*/
private $recidive;
/**
* @ORM\Column(type="boolean", nullable=true, options={"default": false})
* @var boolean
*/
private $remote;
/**
* @ORM\Column(type="string", nullable=false, length=10, options={"default": "mr"})
* @var string
*/
private $civil;
/**
* @ORM\Column(type="string", nullable=true)
* @var string
*/
private $commercial;
/**
* @ORM\Column(type="string", nullable=false)
* @Assert\NotBlank()
* @var string
*/
private $address;
/**
* @ORM\Column(type="string", nullable=false, length=100)
* @Assert\NotBlank()
* @var string
*/
private $city;
/**
* @ORM\Column(type="string", nullable=false, length=10)
* @Assert\NotBlank()
* @var string
*/
private $cp;
/**
* @ORM\Column(type="string", nullable=true)
* @var string
*/
private $bac;
/**
* @ORM\Column(type="string", nullable=true)
* @var string
*/
private $stage;
/**
* @ORM\Column(type="boolean", nullable=false, options={"default": false})
* @var bool
*/
private $isPau;
/**
* @ORM\Column(type="string", nullable=true)
* @var string
*/
private $numero;
/**
* @ORM\ManyToOne(targetEntity="EdtGroupFacTd", inversedBy="students")
* @ORM\JoinColumn(referencedColumnName="id", onDelete="SET NULL")
*
* @var EdtGroupFacTd
*/
private $groupFac;
/**
* Can connect
*
* @ORM\Column(type="boolean", options={"default": true})
*/
private $active;
/**
* Visible in rankings/marks
*
* @ORM\Column(type="boolean", options={"default": true})
*/
private $visible;
/**
* @ORM\Column(type="boolean", options={"default": false})
*/
private $passwordSend;
/**
* @ORM\Column(type="boolean", options={"default": false})
*/
private $charteAccepted;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $avatar;
/**
* @ORM\Column(type="datetime", name="logged_on", nullable=true)
*/
private $loggedOn;
/**
* @ORM\Column(type="datetime", name="last_activity", nullable=true)
*/
private $lastActivity;
/**
* @ORM\Column(type="string", name="doub_moyenne", nullable=true)
* @var string
*/
private $doubMoyenne;
/**
* @ORM\Column(type="boolean", name="oral_exam", nullable=true)
* @var boolean
*/
private $oralExam;
/**
* @ORM\Column(type="datetime", name="date_oral_exam", nullable=true)
*/
private $dateOralExam;
/**
* @ORM\Column(type="string", name="phone_number", nullable=true)
* @var string
*/
private $phoneNumber;
/**
* @ORM\Column(type="string", name="parent_phone_number", nullable=true)
* @var string
*/
private $parentPhoneNumber;
/**
* @ORM\ManyToOne(targetEntity="Periode", inversedBy="students")
* @ORM\JoinColumn(name="periode_id", referencedColumnName="id", nullable=false)
*/
private $periode;
/**
* @ORM\ManyToOne(targetEntity="Branche", inversedBy="students")
* @ORM\JoinColumn(name="branche_id", referencedColumnName="id", nullable=false)
*/
private $branche;
/**
* @ORM\ManyToOne(targetEntity="GroupStudent", inversedBy="students")
* @ORM\JoinColumn(name="group_id", referencedColumnName="id")
*/
private $group;
/**
* @ORM\OneToMany(targetEntity="Post", mappedBy="student")
* @ORM\OrderBy({"createdOn" = "DESC"})
*/
private $posts;
/**
* @ORM\Column(type="text", nullable=true)
*/
private ?string $remedialComment;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private ?bool $remedialDone;
/**
* @ORM\OneToMany(targetEntity="StudentSecteur", mappedBy="student", cascade={"persist", "remove", "merge"}, orphanRemoval=true)
* @var ArrayCollection
*/
private $studentSecteurs;
/**
* @var ArrayCollection
*/
private $secteurQuad1;
/**
* @var ArrayCollection
*/
private $secteurQuad2;
/**
* @ORM\ManyToOne(targetEntity="Category", inversedBy="studentsConnected")
* @ORM\JoinColumn(name="last_category_id", referencedColumnName="id", onDelete="SET NULL")
*/
private $lastCategory;
/**
* @ORM\OneToMany(targetEntity="FileStudent", mappedBy="student")
*/
private $fileStudents;
/**
* @ORM\OneToMany(targetEntity="NoteTestStudent", mappedBy="student")
*/
private $noteTestStudents;
/**
* @ORM\OneToMany(targetEntity="Remedial", mappedBy="student", cascade={"persist", "remove"})
*/
private Collection $remedials;
/**
* @ORM\OneToMany(targetEntity="NoteAbsence", mappedBy="student")
*/
private $absences;
/**
* Pour faire la distinction entre tutor et student
* @var string
*/
public $class = 'student';
/**
* @Gedmo\Timestampable(on="update")
* @ORM\Column(type="datetime", nullable=true)
*/
private $updatedOn;
/**
* @Gedmo\Timestampable(on="create")
* @ORM\Column(type="datetime", nullable=true)
*/
private $createdOn;
/**
* @ORM\Column(type="string", nullable=true)
* @var string
*/
private $photo;
/**
* @ORM\Column(type="string", nullable=true)
* @var string
*/
#[Field]
private $firebaseToken;
/**
* @ORM\Column(type="datetime_immutable", nullable=true)
* @var \DateTimeImmutable
*/
#[Field]
private $firebaseTokenDate;
/**
* @ORM\Column(type="string", nullable=true)
*/
private ?string $qrCode;
/**
* @ORM\Column(type="datetime_immutable", nullable=true)
*/
private ?\DateTimeImmutable $qrCodeDate;
/**
* @ORM\OneToMany(targetEntity="QuestionnaireQcmStudent", mappedBy="student")
* @var ArrayCollection
*/
private $qcmStudents;
/**
* Nouvelle version
*
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="Module", inversedBy="students")
* @ORM\JoinTable(name="students_modules")
* @ORM\OrderBy({"name" = "ASC"})
*/
private $modules;
/**
* Nouvelle version
*
* @var ArrayCollection
* @ORM\ManyToMany(targetEntity="MinorOption", inversedBy="students")
* @ORM\JoinTable(name="students_minor_options")
*/
private $minorOptions;
/**
* @ORM\OneToMany(targetEntity="StudentDocFile", mappedBy="student", cascade={"persist", "remove"}, orphanRemoval=true)
* @var ArrayCollection
*/
private $studentDocFiles;
/**
* @ORM\OneToMany(targetEntity="RankingMark", mappedBy="student")
*/
private Collection $marks;
/**
* @var array
*/
private $docFilesQ1;
/**
* @var array
*/
private $docFilesQ2;
/** @var array RemedialModuleModel[] */
private array $remedialModuleModels;
public function __construct()
{
$this->posts = new ArrayCollection();
$this->secteurQuad1 = new ArrayCollection();
$this->secteurQuad2 = new ArrayCollection();
$this->studentSecteurs = new ArrayCollection();
$this->fileStudents = new ArrayCollection();
$this->noteTestStudents = new ArrayCollection();
$this->absences = new ArrayCollection();
$this->qcmStudents = new ArrayCollection();
$this->modules = new ArrayCollection();
$this->minorOptions = new ArrayCollection();
$this->studentDocFiles = new ArrayCollection();
$this->docFilesQ1 = [];
$this->docFilesQ2 = [];
$this->marks = new ArrayCollection();
$this->remedials = new ArrayCollection();
}
#[Field(outputType: "ID")]
public function getId(): ?int
{
return $this->id;
}
#[Field]
public function getName(): string
{
return $this->name;
}
public function setName(?string $name): self
{
$this->name = $name;
return $this;
}
public function getForumActive()
{
return $this->isEnabled();
}
public function getUsername()
{
return $this->email;
}
public function getUserIdentifier(): string
{
return $this->email;
}
public function getRoles()
{
return array('ROLE_USER');
}
public function eraseCredentials()
{
}
public function isEnabled()
{
return $this->active;
}
/**
* @return Secteur[]
* @todo interface dans MMPPUserInterface
*/
#[Field]
public function getSecteurs(?string $quad = null)
{
$secteurs= [];
foreach ($this->studentSecteurs as $studentSecteur) {
if ((null === $quad) || ($quad == $studentSecteur->getQuad())) {
/** @var Secteur $secteur */
$secteur = $studentSecteur->getSecteur();
$secteurs[$secteur->getId()] = $secteur;
}
}
return array_values($secteurs);
}
/**
* @param Secteur $secteur
* @return bool
*/
public function hasSecteur(Secteur $secteur, $quad)
{
return in_array($secteur, $this->getSecteurs($quad));
}
/**
* @return ArrayCollection
*/
public function getSecteurQuad1()
{
return $this->secteurQuad1;
}
/**
* @param Secteur $secteur
* @return Student
*/
public function addSecteurQuad1(Secteur $secteur)
{
$this->secteurQuad1[] = $secteur;
return $this;
}
/**
* @param ArrayCollection $secteurQuad1
* @return Student
*/
public function setSecteurQuad1(ArrayCollection $secteurQuad1): Student
{
$this->secteurQuad1 = $secteurQuad1;
return $this;
}
/**
* @return ArrayCollection
*/
public function getSecteurQuad2()
{
return $this->secteurQuad2;
}
/**
* @param Secteur $secteur
* @return Student
*/
public function addSecteurQuad2(Secteur $secteur)
{
$this->secteurQuad2[] = $secteur;
return $this;
}
/**
* @param ArrayCollection $secteurQuad2
* @return Student
*/
public function setSecteurQuad2(ArrayCollection $secteurQuad2): Student
{
$this->secteurQuad2 = $secteurQuad2;
return $this;
}
/**
* Get admin
*
* @return boolean
*/
#[Field]
public function getAdmin(): bool
{
return false;
}
public function getPassword(): ?string
{
return $this->password;
}
public function getSalt()
{
return null;
}
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
public function getPlainPassword(): ?string
{
return $this->plainPassword;
}
public function setPlainPassword(string $plainPassword): self
{
$this->plainPassword = $plainPassword;
return $this;
}
#[Field]
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getRecidive(): ?string
{
return $this->recidive;
}
public function setRecidive(?string $recidive): self
{
$this->recidive = $recidive;
return $this;
}
#[Field]
public function getRemote(): ?bool
{
return $this->remote;
}
public function setRemote(?bool $remote): self
{
$this->remote = $remote;
return $this;
}
public function getAddress(): ?string
{
return $this->address;
}
public function setAddress(?string $address): self
{
$this->address = $address;
return $this;
}
public function getCity(): ?string
{
return $this->city;
}
public function setCity(?string $city): self
{
$this->city = $city;
return $this;
}
public function getCp(): ?string
{
return $this->cp;
}
public function setCp(?string $cp): self
{
$this->cp = $cp;
return $this;
}
public function getBac(): ?string
{
return $this->bac;
}
public function setBac(?string $bac): self
{
$this->bac = $bac;
return $this;
}
public function getStage(): ?string
{
return $this->stage;
}
public function setStage(?string $stage): self
{
$this->stage = $stage;
return $this;
}
public function getIsPau(): ?bool
{
return $this->isPau;
}
public function setIsPau(?bool $isPau): self
{
$this->isPau = $isPau;
return $this;
}
public function getNumero(): ?string
{
return $this->numero;
}
public function setNumero(?string $numero): self
{
$this->numero = $numero;
return $this;
}
public function getActive(): ?bool
{
return $this->active;
}
public function setActive(bool $active): self
{
$this->active = $active;
return $this;
}
public function getPasswordSend(): ?bool
{
return $this->passwordSend;
}
public function setPasswordSend(bool $passwordSend): self
{
$this->passwordSend = $passwordSend;
return $this;
}
public function getCharteAccepted(): ?bool
{
return $this->charteAccepted;
}
public function setCharteAccepted(bool $charteAccepted): self
{
$this->charteAccepted = $charteAccepted;
return $this;
}
public function getAvatar(): ?string
{
return $this->avatar;
}
public function setAvatar(string $avatar): self
{
$this->avatar = $avatar;
return $this;
}
public function getLoggedOn(): ?\DateTimeInterface
{
return $this->loggedOn;
}
public function setLoggedOn(\DateTimeInterface $loggedOn): self
{
$this->loggedOn = $loggedOn;
return $this;
}
public function getLastActivity(): ?\DateTimeInterface
{
return $this->lastActivity;
}
public function setLastActivity(\DateTimeInterface $lastActivity): self
{
$this->lastActivity = $lastActivity;
return $this;
}
public function getDoubMoyenne(): ?string
{
return $this->doubMoyenne;
}
public function setDoubMoyenne(?string $doubMoyenne): self
{
$this->doubMoyenne = $doubMoyenne;
return $this;
}
public function getUpdatedOn(): ?\DateTimeInterface
{
return $this->updatedOn;
}
public function setUpdatedOn(\DateTimeInterface $updatedOn): self
{
$this->updatedOn = $updatedOn;
return $this;
}
public function getCreatedOn(): ?\DateTimeInterface
{
return $this->createdOn;
}
public function setCreatedOn(\DateTimeInterface $createdOn): self
{
$this->createdOn = $createdOn;
return $this;
}
public function getPhoto(): ?string
{
return $this->photo;
}
public function setPhoto(?string $photo): self
{
$this->photo = $photo;
return $this;
}
public function getGroupFac(): ?EdtGroupFacTd
{
return $this->groupFac;
}
public function setGroupFac(?EdtGroupFacTd $groupFac): self
{
$this->groupFac = $groupFac;
return $this;
}
public function getPeriode(): ?Periode
{
return $this->periode;
}
public function setPeriode(?Periode $periode): self
{
$this->periode = $periode;
return $this;
}
#[Field]
public function getBranche(): ?Branche
{
return $this->branche;
}
public function setBranche(?Branche $branche): self
{
$this->branche = $branche;
return $this;
}
public function getGroup(): ?GroupStudent
{
return $this->group;
}
public function setGroup(?GroupStudent $group): self
{
$this->group = $group;
return $this;
}
/**
* @return Collection|Post[]
*/
public function getPosts(): Collection
{
return $this->posts;
}
public function addPost(Post $post): self
{
if (!$this->posts->contains($post)) {
$this->posts[] = $post;
$post->setStudent($this);
}
return $this;
}
public function removePost(Post $post): self
{
if ($this->posts->contains($post)) {
$this->posts->removeElement($post);
// set the owning side to null (unless already changed)
if ($post->getStudent() === $this) {
$post->setStudent(null);
}
}
return $this;
}
/**
* @return Collection|StudentSecteur[]
*/
public function getStudentSecteurs(): Collection
{
return $this->studentSecteurs;
}
public function addStudentSecteur(StudentSecteur $studentSecteur): self
{
if (!$this->studentSecteurs->contains($studentSecteur)) {
$this->studentSecteurs[] = $studentSecteur;
$studentSecteur->setStudent($this);
}
return $this;
}
public function removeStudentSecteur(StudentSecteur $studentSecteur): self
{
if ($this->studentSecteurs->contains($studentSecteur)) {
$this->studentSecteurs->removeElement($studentSecteur);
// set the owning side to null (unless already changed)
if ($studentSecteur->getStudent() === $this) {
$studentSecteur->setStudent(null);
}
}
return $this;
}
public function getLastCategory(): ?Category
{
return $this->lastCategory;
}
public function setLastCategory(?Category $lastCategory): self
{
$this->lastCategory = $lastCategory;
return $this;
}
/**
* @return Collection|FileStudent[]
*/
public function getFileStudents(): Collection
{
return $this->fileStudents;
}
public function addFileStudent(FileStudent $fileStudent): self
{
if (!$this->fileStudents->contains($fileStudent)) {
$this->fileStudents[] = $fileStudent;
$fileStudent->setStudent($this);
}
return $this;
}
public function removeFileStudent(FileStudent $fileStudent): self
{
if ($this->fileStudents->contains($fileStudent)) {
$this->fileStudents->removeElement($fileStudent);
// set the owning side to null (unless already changed)
if ($fileStudent->getStudent() === $this) {
$fileStudent->setStudent(null);
}
}
return $this;
}
/**
* @return Collection|NoteTestStudent[]
*/
public function getNoteTestStudents(): Collection
{
return $this->noteTestStudents;
}
public function addNoteTestStudent(NoteTestStudent $noteTestStudent): self
{
if (!$this->noteTestStudents->contains($noteTestStudent)) {
$this->noteTestStudents[] = $noteTestStudent;
$noteTestStudent->setStudent($this);
}
return $this;
}
public function removeNoteTestStudent(NoteTestStudent $noteTestStudent): self
{
if ($this->noteTestStudents->contains($noteTestStudent)) {
$this->noteTestStudents->removeElement($noteTestStudent);
// set the owning side to null (unless already changed)
if ($noteTestStudent->getStudent() === $this) {
$noteTestStudent->setStudent(null);
}
}
return $this;
}
/**
* @return Collection|NoteAbsence[]
*/
public function getAbsences(): Collection
{
return $this->absences;
}
public function addAbsence(NoteAbsence $absence): self
{
if (!$this->absences->contains($absence)) {
$this->absences[] = $absence;
$absence->setStudent($this);
}
return $this;
}
public function removeAbsence(NoteAbsence $absence): self
{
if ($this->absences->contains($absence)) {
$this->absences->removeElement($absence);
// set the owning side to null (unless already changed)
if ($absence->getStudent() === $this) {
$absence->setStudent(null);
}
}
return $this;
}
/** @see \Serializable::serialize() */
public function serialize()
{
return serialize(array(
$this->id,
$this->email,
$this->password,
// see section on salt below
// $this->salt,
));
}
/** @see \Serializable::unserialize() */
public function unserialize($serialized)
{
list (
$this->id,
$this->email,
$this->password,
// see section on salt below
// $this->salt
) = unserialize($serialized);
}
/**
* @return Collection|QuestionnaireQcmStudent[]
*/
public function getQcmStudents(): Collection
{
return $this->qcmStudents;
}
public function addQcmStudent(QuestionnaireQcmStudent $qcmStudent): self
{
if (!$this->qcmStudents->contains($qcmStudent)) {
$this->qcmStudents[] = $qcmStudent;
$qcmStudent->setStudent($this);
}
return $this;
}
public function removeQcmStudent(QuestionnaireQcmStudent $qcmStudent): self
{
if ($this->qcmStudents->contains($qcmStudent)) {
$this->qcmStudents->removeElement($qcmStudent);
// set the owning side to null (unless already changed)
if ($qcmStudent->getStudent() === $this) {
$qcmStudent->setStudent(null);
}
}
return $this;
}
/**
* @return Module[]
*/
public function getModules(): Collection
{
return $this->modules;
}
/**
* @return Module[]
*/
#[Field(name: "modules")]
public function getActiveModules(): array
{
$modules = [];
/** @var Module $module */
foreach ($this->modules as $module) {
if ($module->getActive()) {
$modules[] = $module;
}
}
return $modules;
}
public function addModule(Module $module): self
{
if (!$this->modules->contains($module)) {
$this->modules[] = $module;
}
return $this;
}
public function removeModule(Module $module): self
{
if ($this->modules->contains($module)) {
$this->modules->removeElement($module);
}
return $this;
}
public function hasModule(Module $module): bool
{
return $this->modules->contains($module);
}
/**
* @return Collection|MinorOption[]
*/
#[Field]
public function getMinorOptions(): Collection
{
return $this->minorOptions;
}
public function addMinorOption(MinorOption $minorOption): self
{
if (!$this->minorOptions->contains($minorOption)) {
$this->minorOptions[] = $minorOption;
}
return $this;
}
public function removeMinorOption(MinorOption $minorOption): self
{
if ($this->minorOptions->contains($minorOption)) {
$this->minorOptions->removeElement($minorOption);
}
return $this;
}
public function getVisible(): ?bool
{
return $this->visible;
}
public function setVisible(bool $visible): self
{
$this->visible = $visible;
return $this;
}
public function getCivil(): ?string
{
return $this->civil;
}
public function setCivil(string $civil): self
{
$this->civil = $civil;
return $this;
}
public function getCommercial(): ?string
{
return $this->commercial;
}
public function setCommercial(string $commercial): self
{
$this->commercial = $commercial;
return $this;
}
public function getOralExam(): ?bool
{
return $this->oralExam;
}
public function setOralExam(?bool $oralExam): self
{
$this->oralExam = $oralExam;
return $this;
}
public function getDateOralExam(): ?\DateTime
{
return $this->dateOralExam;
}
public function setDateOralExam(?\DateTime $dateOralExam): self
{
$this->dateOralExam = $dateOralExam;
return $this;
}
public function getPhoneNumber(): ?string
{
return $this->phoneNumber;
}
public function setPhoneNumber(?string $phoneNumber): self
{
$this->phoneNumber = $phoneNumber;
return $this;
}
public function getParentPhoneNumber(): ?string
{
return $this->parentPhoneNumber;
}
public function setParentPhoneNumber(?string $parentPhoneNumber): self
{
$this->parentPhoneNumber = $parentPhoneNumber;
return $this;
}
/**
* @return Collection|StudentDocFile[]
*/
public function getStudentDocFiles(): Collection
{
return $this->studentDocFiles;
}
public function addStudentDocFile(StudentDocFile $studentDocFile): self
{
if (!$this->studentDocFiles->contains($studentDocFile)) {
$this->studentDocFiles[] = $studentDocFile;
$studentDocFile->setStudent($this);
}
return $this;
}
public function removeStudentDocFile(StudentDocFile $studentDocFile): self
{
if ($this->studentDocFiles->removeElement($studentDocFile)) {
// set the owning side to null (unless already changed)
if ($studentDocFile->getStudent() === $this) {
$studentDocFile->setStudent(null);
}
}
return $this;
}
public function getDocFilesQ1(): ?array
{
return $this->docFilesQ1;
}
public function setDocFilesQ1(array $docFiles): self
{
$this->docFilesQ1 = $docFiles;
return $this;
}
public function addDocFileQ1(DocFile $docFile): self
{
$this->docFilesQ1[] = $docFile;
return $this;
}
public function getDocFilesQ2(): ?array
{
return $this->docFilesQ2;
}
public function setDocFilesQ2(array $docFiles): self
{
$this->docFilesQ2 = $docFiles;
return $this;
}
public function addDocFileQ2(DocFile $docFile): self
{
$this->docFilesQ2[] = $docFile;
return $this;
}
public function getDocFiles(): array
{
return array_merge($this->docFilesQ1, $this->docFilesQ2);
}
public function getFirebaseToken(): ?string
{
return $this->firebaseToken;
}
public function setFirebaseToken(?string $firebaseToken): self
{
$this->firebaseToken = $firebaseToken;
return $this;
}
public function getFirebaseTokenDate(): ?\DateTimeImmutable
{
return $this->firebaseTokenDate;
}
public function setFirebaseTokenDate(?\DateTimeImmutable $firebaseTokenDate): self
{
$this->firebaseTokenDate = $firebaseTokenDate;
return $this;
}
/**
* @return Collection<int, RankingMark>
*/
public function getMarks(): Collection
{
return $this->marks;
}
public function addMark(RankingMark $mark): self
{
if (!$this->marks->contains($mark)) {
$this->marks[] = $mark;
$mark->setStudent($this);
}
return $this;
}
public function removeMark(RankingMark $mark): self
{
if ($this->marks->removeElement($mark)) {
// set the owning side to null (unless already changed)
if ($mark->getStudent() === $this) {
$mark->setStudent(null);
}
}
return $this;
}
/**
* @return Collection<int, Remedial>
*/
public function getRemedials(): Collection
{
return $this->remedials;
}
public function addRemedial(Remedial $remedial): self
{
if (!$this->remedials->contains($remedial)) {
$this->remedials[] = $remedial;
$remedial->setStudent($this);
}
return $this;
}
public function removeRemedial(Remedial $remedial): self
{
$this->remedials->removeElement($remedial);
return $this;
}
public function getRemedialComment(): ?string
{
return $this->remedialComment;
}
public function setRemedialComment(string $remedialComment): self
{
$this->remedialComment = $remedialComment;
return $this;
}
public function getRemedialDone(): ?bool
{
return $this->remedialDone;
}
public function setRemedialDone(bool $remedialDone): self
{
$this->remedialDone = $remedialDone;
return $this;
}
public function getQrCode(): ?string
{
return $this->qrCode;
}
public function setQrCode(?string $qrCode): self
{
$this->qrCode = $qrCode;
return $this;
}
public function getQrCodeDate(): ?\DateTimeImmutable
{
return $this->qrCodeDate;
}
public function setQrCodeDate(?\DateTimeImmutable $qrCodeDate): self
{
$this->qrCodeDate = $qrCodeDate;
return $this;
}
public function isRemote(): ?bool
{
return $this->remote;
}
public function isIsPau(): ?bool
{
return $this->isPau;
}
public function isActive(): ?bool
{
return $this->active;
}
public function isVisible(): ?bool
{
return $this->visible;
}
public function isPasswordSend(): ?bool
{
return $this->passwordSend;
}
public function isCharteAccepted(): ?bool
{
return $this->charteAccepted;
}
public function isOralExam(): ?bool
{
return $this->oralExam;
}
public function isRemedialDone(): ?bool
{
return $this->remedialDone;
}
public function getRemedialModuleModels(): array
{
return $this->remedialModuleModels;
}
public function setRemedialModuleModels(array $remedialModuleModels): Student
{
$this->remedialModuleModels = $remedialModuleModels;
return $this;
}
public function addRemedialModuleModel(RemedialModuleModel $remedialModuleModel): self
{
$this->remedialModuleModels[] = $remedialModuleModel;
return $this;
}
}