<?php
namespace App\Entity;
use App\Entity\TeacherRegister\TeacherRegister;
use App\Repository\TeacherRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use phpDocumentor\Reflection\Types\This;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=TeacherRepository::class)
* @ORM\Table(name="teacher",indexes={
* @ORM\Index(name="unicko_function_id_idx", columns={"unicko_function", "id"})
* })
* @UniqueEntity("email")
*/
class Teacher implements UserInterface, PasswordAuthenticatedUserInterface
{
const STATUS_ACTIVE = "Aktyvus";
const STATUS_INACTIVE = "Neaktyvus";
const STATUS_SUSPENDED = "Laikinai sustabdęs";
const TEACHER_STATUSES = [self::STATUS_ACTIVE, self::STATUS_INACTIVE, self::STATUS_SUSPENDED];
const LEVELS = [
[
'name' => 'Junior Tutor',
'hoursMin' => 0,
'hoursMax' => 110,
'hourlyRate' => 8,
'badge' => 'junior',
'hourlyImpact' => 0,
],
[
'name' => 'Mid Tutor',
'hoursMin' => 110,
'hoursMax' => 256,
'hourlyRate' => 9,
'badge' => 'mid',
'hourlyImpact' => 12.5,
],
[
'name' => 'Senior Tutor',
'hoursMin' => 256,
'hoursMax' => 402,
'hourlyRate' => 10,
'badge' => 'senior',
'hourlyImpact' => 25,
],
[
'name' => 'Pro Tutor',
'hoursMin' => 402,
'hoursMax' => 548,
'hourlyRate' => 11,
'badge' => 'pro',
'hourlyImpact' => 37.5,
],
[
'name' => 'Expert Tutor',
'hoursMin' => 548,
'hoursMax' => 694,
'hourlyRate' => 12,
'badge' => 'expert',
'hourlyImpact' => 50,
],
[
'name' => 'Master Tutor',
'hoursMin' => 694,
'hoursMax' => 840,
'hourlyRate' => 13,
'badge' => 'master',
'hourlyImpact' => 62.5,
],
[
'name' => 'Pro Expert',
'hoursMin' => 840,
'hoursMax' => 986,
'hourlyRate' => 14,
'badge' => 'proexpert',
'hourlyImpact' => 75,
],
[
'name' => 'Pro Master',
'hoursMin' => 986,
'hoursMax' => 1132,
'hourlyRate' => 15,
'badge' => 'promaster',
'hourlyImpact' => 87.5,
],
[
'name' => 'Pro Master Tutor *',
'hoursMin' => 1132,
'hoursMax' => 1278,
'hourlyRate' => 16,
'badge' => 'promaster1',
'hourlyImpact' => 100,
],
[
'name' => 'Pro Master Tutor **',
'hoursMin' => 1278,
'hoursMax' => 1424,
'hourlyRate' => 17,
'badge' => 'promaster2',
'hourlyImpact' => 112.5,
],
[
'name' => 'Pro Master Tutor ***',
'hoursMin' => 1424,
'hoursMax' => 1570,
'hourlyRate' => 18,
'badge' => 'promaster3',
'hourlyImpact' => 125,
],
[
'name' => 'Premium Tutor *',
'hoursMin' => 1570,
'hoursMax' => 1716,
'hourlyRate' => 19,
'badge' => 'premium1',
'hourlyImpact' => 137.5,
],
[
'name' => 'Premium Tutor **',
'hoursMin' => 1716,
'hoursMax' => 99999,
'hourlyRate' => 20,
'badge' => 'premium2',
'hourlyImpact' => 150,
],
];
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({"CensorshipList","TeacherList","TeacherRegisterList","TeacherModList","ResponsesList","ChildPreferenceAssignmentList", "DeclineHistoryList", "NotificationList", "ChildPreferenceList", "AdminConfirmationsList", "TeacherSickLeavesList", "TabletList", "WoltCouponList","ChildLessonReviewList"})
*/
private $id;
/**
* @ORM\Column(type="string", length=180, unique=true)
* @Groups({"CensorshipList","showme","TeacherList", "NotificationList", "ChildPreferenceList", "TeacherSickLeavesList", "TabletList", "WoltCouponList","ChildLessonReviewList"})
*/
private $email;
/**
* @ORM\Column(type="json")
* @Groups({"TeacherList", "TeacherRegisterList"})
*/
private $roles = ['ROLE_TEACHER', 'ROLE_USER'];
/**
* @var string The hashed password
* @ORM\Column(type="string")
*/
private $password;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"showme","LessonList","TeacherList","ChildPreferenceList", "TeacherSurveyList","TeacherModList","ResponsesList","ChildPreferenceAssignmentList", "DeclineHistoryList", "NotificationList", "AdminConfirmationsList", "TeacherSickLeavesList", "TabletList", "WoltCouponList","ChildLessonReviewList"})
*/
private $fullname;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"showme","LessonList","TeacherList","ChildPreferenceAssignmentList"})
*/
private $phoneNumber;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"showme","TeacherList"})
*/
private $university;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"TeacherList", "ChildPreferenceList"})
*/
private $workStart;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"TeacherList"})
*/
private $workEnd;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $maxLoad;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList", "ChildPreferenceList"})
*/
private $available = 0;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList","ResponsesList", "TeacherRegisterList"})
*/
private $status;
/**
* @ORM\OneToMany(targetEntity=ChildPreference::class, mappedBy="teacher")
*/
private $childPreferences;
/**
* @ORM\OneToMany(targetEntity=ChildPreferenceHistory::class, mappedBy="teacher")
*/
private $childPreferenceHistories;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"showme"})
*/
private $individualNumber;
/**
* @ORM\OneToMany(targetEntity=Lesson::class, mappedBy="teacher")
*/
private $lessons;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherSurveyList", "NotificationList"})
*/
private $profileImagePath;
/**
* @ORM\OneToMany(targetEntity=TeacherPayment::class, mappedBy="teacher")
*/
private $teacherPayments;
/**
* @ORM\OneToMany(targetEntity=TeacherPaymentLog::class, mappedBy="teacher")
*/
private $teacherPaymentLogs;
/**
* @ORM\OneToMany(targetEntity=TeacherComment::class, mappedBy="teacher")
*/
private $teacherComments;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateAdd;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $classes = "";
/**
* @ORM\ManyToMany(targetEntity=Discipline::class, inversedBy="teachers")
* @Groups({"TeacherList"})
*/
private $disciplines;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $paymentStatus = Payment::STATUS_NOTPAID;
/**
* @ORM\OneToMany(targetEntity=TeacherDisciplineClass::class, mappedBy="teacher", cascade={"all"})
* @Groups({"TeacherList"})
*/
private $teacherDisciplineClasses;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"showme"})
*/
private $accountNumber;
/**
* @ORM\OneToMany(targetEntity=TeacherPriceChange::class, mappedBy="teacher", cascade={"all"})
*/
private $teacherPriceChanges;
/**
* @ORM\OneToMany(targetEntity=TeacherAvailabilityTime::class, mappedBy="teacher", cascade={"all"})
*/
private $teacherAvailabilityTimes;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups({"TeacherList"})
*/
private $comment;
/**
* @ORM\OneToMany(targetEntity=GuardianSurveyResponse::class, mappedBy="teacher")
*/
private $guardianSurveyResponses;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $shortName;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $summer;
/**
* @ORM\OneToMany(targetEntity=TeacherSurvey::class, mappedBy="teacher")
*/
private $teacherSurveys;
/**
* @ORM\OneToMany(targetEntity=TeacherSurveyResponse::class, mappedBy="teacher")
*/
private $teacherSurveyResponses;
/**
* @ORM\Column(type="boolean", nullable=true,options={"default" : "0"})
*/
private $showSurvey = false;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $shortDescription;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherSurveyList"})
*/
private $discordName;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $blockNextDayLessonsReminders;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $blockTodayLessonsReminders;
/**
* @ORM\Column(type="float", nullable=true,options={"default" : "0"})
*/
private $workedHours = 0;
/**
* @ORM\Column(type="float", nullable=true,options={"default" : "0"})
*/
private $workedHoursMarch = 0;
/**
* @ORM\Column(type="string", length=255, nullable=true,options={"default" : "Junior Tutor"})
* @Groups({"TeacherList"})
*/
private $levelName = "Junior Tutor";
/**
* @ORM\OneToMany(targetEntity=TeacherHoliday::class, mappedBy="teacher")
*/
private $teacherHolidays;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"TeacherList","LessonList"})
*/
private $lessonsMissed;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"TeacherList"})
*/
private $warningDate;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagRU;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagPL;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagENG;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagIB;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagDyslexia;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagSensitive;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagTrial;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $extraLoad;
/**
* @ORM\OneToMany(targetEntity=LessonLearncubeLog::class, mappedBy="teacher")
*/
private $lessonLearncubeLogs;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups({"TeacherList"})
*/
private $adminComment;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $educationStage;
/**
* @ORM\OneToMany(targetEntity=ChildPreferenceDeclineHistory::class, mappedBy="teacher")
*/
private $childPreferenceDeclineHistories;
/**
* @ORM\OneToMany(targetEntity=TeacherHoursBonus::class, mappedBy="teacher")
*/
private $teacherHoursBonuses;
/**
* @ORM\OneToMany(targetEntity=TeacherTablet::class, mappedBy="teacher")
*/
private $teacherTablets;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"TeacherList"})
*/
private $lcFrom;
/**
* @ORM\OneToMany(targetEntity=TeacherUnavailableRange::class, mappedBy="teacher")
* @Groups({"TeacherList"})
*/
private $teacherUnavailableRanges;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $contractTerminateReason;
/**
* @ORM\Column(type="float", nullable=true)
* @Groups({"TeacherList"})
*/
private $contractTerminateFee;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $contractTerminateFeePaid;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $unickoFunction;
/**
* @ORM\OneToOne(targetEntity=TeacherRegister::class, mappedBy="teacher", cascade={"persist", "remove"})
* @Groups({"TeacherList"})
*/
private $teacherRegister;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"TeacherList"})
*/
private $birthday;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $individualWorkFilePath;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $country;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $summerTime;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $studyField;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"TeacherList"})
*/
private $congratulatedBirthday;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $googleRefreshToken;
/**
* @ORM\Column(type="json", nullable=true)
*/
private $googleAccessToken = [];
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $threemaPassword;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $threemaId;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $threemaStatus;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $threemaGroup;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $trainingStarted = 0;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $trainingEnded = 0;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $referralCode;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Groups({"TeacherList"})
*/
private $school;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups({"TeacherList"})
*/
private $ielts;
/**
* @ORM\OneToMany(targetEntity=TeacherSickLeaves::class, mappedBy="teacher")
*/
private $teacherSickLeaves;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $personalIdentificationNumber;
/**
* @ORM\OneToMany(targetEntity=TeacherPaymentBonusProposal::class, mappedBy="teacher")
*/
private $teacherPaymentBonusProposals;
/**
* @ORM\OneToMany(targetEntity=Tablet::class, mappedBy="teacher")
*/
private $tablets;
/**
* @ORM\OneToMany(targetEntity=WoltCoupon::class, mappedBy="teacher")
*/
private $woltCoupons;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagWeb;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $flagStrict;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $gender;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $flagExperienceAtSchool;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $flagPriorityAssignment;
/**
* @ORM\OneToOne(targetEntity=TeacherPreference::class, mappedBy="teacher", cascade={"persist", "remove"})
*/
private $teacherPreference;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $newContractMarksignUrl;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $newCotractSigned;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $newContractMarksignDocumentId;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $newContractSignedUrl;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $newContractType;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups({"TeacherList"})
*/
private $summerAt;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $flagOnlyIB;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagAutoAcceptAssignment;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $gapBetweenAssignments;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({"TeacherList"})
*/
private $flagAutoAcceptAssignmentTeacher;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $gapBetweenAssignmentsTeacher;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $gapBetweenAssignmentsSubmittedAt;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $chatStreamToken;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $maxLoadChangedAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $mobileAppLastUsedAt;
/**
* @ORM\OneToOne(targetEntity=TeacherQRCode::class, mappedBy="teacher", cascade={"persist", "remove"})
*/
private $qrCode;
/**
* @ORM\OneToMany(targetEntity=ChatCensorshipJournal::class, mappedBy="teacher")
*/
private $chatCensorshipJournals;
/**
* @ORM\OneToMany(targetEntity=ChildLessonReview::class, mappedBy="Teacher")
*/
private $childLessonReviews;
/**
* @ORM\OneToMany(targetEntity=TeacherPublicProfile::class, mappedBy="teacher")
*/
private $teacherPublicProfiles;
public function __construct()
{
$this->childPreferences = new ArrayCollection();
$this->childPreferenceHistories = new ArrayCollection();
$this->lessons = new ArrayCollection();
$this->teacherPayments = new ArrayCollection();
$this->teacherPaymentLogs = new ArrayCollection();
$this->teacherComments = new ArrayCollection();
$this->dateAdd = new \DateTime();
$this->disciplines = new ArrayCollection();
$this->teacherDisciplineClasses = new ArrayCollection();
$this->teacherPriceChanges = new ArrayCollection();
$this->teacherAvailabilityTimes = new ArrayCollection();
$this->guardianSurveyResponses = new ArrayCollection();
$this->teacherSurveys = new ArrayCollection();
$this->teacherSurveyResponses = new ArrayCollection();
$this->teacherHolidays = new ArrayCollection();
$this->lessonLearncubeLogs = new ArrayCollection();
$this->childPreferenceDeclineHistories = new ArrayCollection();
$this->teacherHoursBonuses = new ArrayCollection();
$this->teacherTablets = new ArrayCollection();
$this->teacherUnavailableRanges = new ArrayCollection();
$this->teacherSickLeaves = new ArrayCollection();
$this->teacherPaymentBonusProposals = new ArrayCollection();
$this->tablets = new ArrayCollection();
$this->woltCoupons = new ArrayCollection();
$this->chatCensorshipJournals = new ArrayCollection();
$this->childLessonReviews = new ArrayCollection();
$this->teacherPublicProfiles = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
/**
* A visual identifier that represents this user.
*
* @see UserInterface
*/
public function getUsername(): string
{
return (string) $this->email;
}
public function getUserIdentifier(): string
{
return (string) $this->email;
}
/**
* @see UserInterface
*/
public function getRoles(): array
{
if(!$this->roles){
$roles = ['ROLE_TEACHER', 'ROLE_USER'];
}
else{
$roles = $this->roles;
}
return array_unique($roles);
}
public function setRoles(array $roles): self
{
$this->roles = $roles;
return $this;
}
/**
* @see UserInterface
*/
public function getPassword(): string
{
return (string) $this->password;
}
public function setPassword(string $password): self
{
$this->password = $password;
return $this;
}
/**
* @see UserInterface
*/
public function getSalt()
{
// not needed when using the "bcrypt" algorithm in security.yaml
}
/**
* @see UserInterface
*/
public function eraseCredentials()
{
// If you store any temporary, sensitive data on the user, clear it here
// $this->plainPassword = null;
}
public function getFullname($showFull = false): ?string
{
if($showFull){
return $this->fullname;
}
else{
$name = explode(" ",$this->fullname)[0];
$name = $name . " " . $this->threemaId;
return $name;
}
}
public function setFullname(?string $fullname): self
{
$this->fullname = $fullname;
return $this;
}
public function getPhoneNumber(): ?string
{
return $this->phoneNumber;
}
public function setPhoneNumber(?string $phoneNumber): self
{
$this->phoneNumber = $phoneNumber;
return $this;
}
public function getUniversity(): ?string
{
return $this->university;
}
public function setUniversity(?string $university): self
{
$this->university = $university;
return $this;
}
public function getWorkStart(): ?\DateTimeInterface
{
return $this->workStart;
}
public function setWorkStart(?\DateTimeInterface $workStart): self
{
$this->workStart = $workStart;
return $this;
}
public function getWorkEnd(): ?\DateTimeInterface
{
return $this->workEnd;
}
public function setWorkEnd(?\DateTimeInterface $workEnd): self
{
$this->workEnd = $workEnd;
return $this;
}
public function getMaxLoad(): ?string
{
return $this->maxLoad;
}
public function setMaxLoad(?string $maxLoad): self
{
$this->maxLoad = $maxLoad;
return $this;
}
/**
* @Groups({"TeacherList"})
*/
public function getCurrentLoad()
{
$maxLoad = $this->maxLoad ?: 0;
return $maxLoad - $this->available;
}
public function getAvailable(): ?string
{
return $this->available;
}
public function setAvailable(?string $available): self
{
$this->available = $available;
return $this;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(?string $status): self
{
$this->status = $status;
return $this;
}
/**
* @return Collection|ChildPreferenceHistory[]
*/
public function getChildPreferenceHistories(): Collection
{
return $this->childPreferenceHistories;
}
/**
* @return Collection|ChildPreference[]
*/
public function getChildPreferences(): Collection
{
return $this->childPreferences;
}
public function addChildPreference(ChildPreference $childPreference): self
{
if (!$this->childPreferences->contains($childPreference)) {
$this->childPreferences[] = $childPreference;
$childPreference->setTeacher($this);
}
return $this;
}
public function removeChildPreference(ChildPreference $childPreference): self
{
if ($this->childPreferences->removeElement($childPreference)) {
// set the owning side to null (unless already changed)
if ($childPreference->getTeacher() === $this) {
$childPreference->setTeacher(null);
}
}
return $this;
}
public function getIndividualNumber(): ?string
{
return $this->individualNumber;
}
public function setIndividualNumber(?string $individualNumber): self
{
$this->individualNumber = $individualNumber;
return $this;
}
public function getAccountNumber(): ?string
{
return $this->accountNumber;
}
public function setAccountNumber(?string $accountNumber): self
{
$this->accountNumber = $accountNumber;
return $this;
}
public function __toString()
{
return "{$this->fullname}";
}
/**
* @return Collection|Lesson[]
*/
public function getLessons(): Collection
{
return $this->lessons;
}
public function addLesson(Lesson $lesson): self
{
if (!$this->lessons->contains($lesson)) {
$this->lessons[] = $lesson;
$lesson->setTeacher($this);
}
return $this;
}
public function removeLesson(Lesson $lesson): self
{
if ($this->lessons->removeElement($lesson)) {
// set the owning side to null (unless already changed)
if ($lesson->getTeacher() === $this) {
$lesson->setTeacher(null);
}
}
return $this;
}
public function getProfileImagePath(): ?string
{
return $this->profileImagePath;
}
public function setProfileImagePath(?string $profileImagePath): self
{
$this->profileImagePath = $profileImagePath;
return $this;
}
/**
* @return Collection|TeacherPayment[]
*/
public function getTeacherPayments(): Collection
{
return $this->teacherPayments;
}
public function addTeacherPayment(TeacherPayment $teacherPayment): self
{
if (!$this->teacherPayments->contains($teacherPayment)) {
$this->teacherPayments[] = $teacherPayment;
$teacherPayment->setTeacher($this);
}
return $this;
}
public function removeTeacherPayment(TeacherPayment $teacherPayment): self
{
if ($this->teacherPayments->removeElement($teacherPayment)) {
// set the owning side to null (unless already changed)
if ($teacherPayment->getTeacher() === $this) {
$teacherPayment->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection|TeacherPaymentLog[]
*/
public function getTeacherPaymentLogs(): Collection
{
return $this->teacherPaymentLogs;
}
public function addTeacherPaymentLog(TeacherPaymentLog $teacherPaymentLog): self
{
if (!$this->teacherPaymentLogs->contains($teacherPaymentLog)) {
$this->teacherPaymentLogs[] = $teacherPaymentLog;
$teacherPaymentLog->setTeacher($this);
}
return $this;
}
public function removeTeacherPaymentLog(TeacherPaymentLog $teacherPaymentLog): self
{
if ($this->teacherPaymentLogs->removeElement($teacherPaymentLog)) {
// set the owning side to null (unless already changed)
if ($teacherPaymentLog->getTeacher() === $this) {
$teacherPaymentLog->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection|TeacherComment[]
*/
public function getTeacherComments(): Collection
{
return $this->teacherComments;
}
public function addTeacherComment(TeacherComment $teacherComment): self
{
if (!$this->teacherComments->contains($teacherComment)) {
$this->teacherComments[] = $teacherComment;
$teacherComment->setTeacher($this);
}
return $this;
}
public function removeTeacherComment(TeacherComment $teacherComment): self
{
if ($this->teacherComments->removeElement($teacherComment)) {
// set the owning side to null (unless already changed)
if ($teacherComment->getTeacher() === $this) {
$teacherComment->setTeacher(null);
}
}
return $this;
}
public function __call($name, $arguments)
{
// TODO: Implement @method string getUserIdentifier()
}
public function getDateAdd(): ?\DateTimeInterface
{
return $this->dateAdd;
}
public function setDateAdd(?\DateTimeInterface $dateAdd): self
{
$this->dateAdd = $dateAdd;
return $this;
}
public function getClasses(): ?array
{
return explode(',',$this->classes);
}
public function setClasses(?array $classes): self
{
$classes = implode(',', $classes);
$this->classes = $classes;
return $this;
}
/**
* @return Collection|Discipline[]
*/
public function getDisciplines(): Collection
{
return $this->disciplines;
}
public function addDiscipline(Discipline $discipline): self
{
if (!$this->disciplines->contains($discipline)) {
$this->disciplines[] = $discipline;
}
return $this;
}
public function removeDiscipline(Discipline $discipline): self
{
$this->disciplines->removeElement($discipline);
return $this;
}
public function getPaymentStatus(): ?string
{
return $this->paymentStatus;
}
public function setPaymentStatus($balanceStatus): self
{
$this->paymentStatus = $balanceStatus;
return $this;
}
/**
* @return Collection|TeacherDisciplineClass[]
*/
public function getTeacherDisciplineClasses(): Collection
{
return $this->teacherDisciplineClasses;
}
public function addTeacherDisciplineClass(TeacherDisciplineClass $teacherDisciplineClass): self
{
if (!$this->teacherDisciplineClasses->contains($teacherDisciplineClass)) {
$this->teacherDisciplineClasses[] = $teacherDisciplineClass;
$teacherDisciplineClass->setTeacher($this);
}
return $this;
}
public function removeTeacherDisciplineClass(TeacherDisciplineClass $teacherDisciplineClass): self
{
if ($this->teacherDisciplineClasses->removeElement($teacherDisciplineClass)) {
// set the owning side to null (unless already changed)
if ($teacherDisciplineClass->getTeacher() === $this) {
$teacherDisciplineClass->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection|TeacherPriceChange[]
*/
public function getTeacherPriceChanges(): Collection
{
return $this->teacherPriceChanges;
}
public function addTeacherPriceChange(TeacherPriceChange $teacherPriceChange): self
{
if (!$this->teacherPriceChanges->contains($teacherPriceChange)) {
$this->teacherPriceChanges[] = $teacherPriceChange;
$teacherPriceChange->setTeacher($this);
}
return $this;
}
public function removeTeacherPriceChange(TeacherPriceChange $teacherPriceChange): self
{
if ($this->teacherPriceChanges->removeElement($teacherPriceChange)) {
// set the owning side to null (unless already changed)
if ($teacherPriceChange->getTeacher() === $this) {
$teacherPriceChange->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection|TeacherAvailabilityTime[]
*/
public function getTeacherAvailabilityTimes(): Collection
{
return $this->teacherAvailabilityTimes;
}
public function addTeacherAvailabilityTime(TeacherAvailabilityTime $teacherAvailabilityTime): self
{
if (!$this->teacherAvailabilityTimes->contains($teacherAvailabilityTime)) {
$this->teacherAvailabilityTimes[] = $teacherAvailabilityTime;
$teacherAvailabilityTime->setTeacher($this);
}
return $this;
}
public function removeTeacherAvailabilityTime(TeacherAvailabilityTime $teacherAvailabilityTime): self
{
if ($this->teacherAvailabilityTimes->removeElement($teacherAvailabilityTime)) {
// set the owning side to null (unless already changed)
if ($teacherAvailabilityTime->getTeacher() === $this) {
$teacherAvailabilityTime->setTeacher(null);
}
}
return $this;
}
public function getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): self
{
$this->comment = $comment;
return $this;
}
/**
* @return Collection|GuardianSurveyResponse[]
*/
public function getGuardianSurveyResponses(): Collection
{
return $this->guardianSurveyResponses;
}
public function addGuardianSurveyResponse(GuardianSurveyResponse $guardianSurveyResponse): self
{
if (!$this->guardianSurveyResponses->contains($guardianSurveyResponse)) {
$this->guardianSurveyResponses[] = $guardianSurveyResponse;
$guardianSurveyResponse->setTeacher($this);
}
return $this;
}
public function removeGuardianSurveyResponse(GuardianSurveyResponse $guardianSurveyResponse): self
{
if ($this->guardianSurveyResponses->removeElement($guardianSurveyResponse)) {
// set the owning side to null (unless already changed)
if ($guardianSurveyResponse->getTeacher() === $this) {
$guardianSurveyResponse->setTeacher(null);
}
}
return $this;
}
public function getShortName(): ?string
{
return $this->shortName;
}
public function setShortName(?string $shortName): self
{
$this->shortName = $shortName;
return $this;
}
public function getSummer(): ?string
{
return $this->summer;
}
public function setSummer(?string $summer): self
{
$this->summer = $summer;
return $this;
}
/**
* @return Collection|TeacherSurvey[]
*/
public function getTeacherSurveys(): Collection
{
return $this->teacherSurveys;
}
public function addTeacherSurvey(TeacherSurvey $teacherSurvey): self
{
if (!$this->teacherSurveys->contains($teacherSurvey)) {
$this->teacherSurveys[] = $teacherSurvey;
$teacherSurvey->setTeacher($this);
}
return $this;
}
public function removeTeacherSurvey(TeacherSurvey $teacherSurvey): self
{
if ($this->teacherSurveys->removeElement($teacherSurvey)) {
// set the owning side to null (unless already changed)
if ($teacherSurvey->getTeacher() === $this) {
$teacherSurvey->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection|TeacherSurveyResponse[]
*/
public function getTeacherSurveyResponses(): Collection
{
return $this->teacherSurveyResponses;
}
public function addTeacherSurveyResponse(TeacherSurveyResponse $teacherSurveyResponse): self
{
if (!$this->teacherSurveyResponses->contains($teacherSurveyResponse)) {
$this->teacherSurveyResponses[] = $teacherSurveyResponse;
$teacherSurveyResponse->setTeacher($this);
}
return $this;
}
public function removeTeacherSurveyResponse(TeacherSurveyResponse $teacherSurveyResponse): self
{
if ($this->teacherSurveyResponses->removeElement($teacherSurveyResponse)) {
// set the owning side to null (unless already changed)
if ($teacherSurveyResponse->getTeacher() === $this) {
$teacherSurveyResponse->setTeacher(null);
}
}
return $this;
}
public function getShowSurvey(): ?bool
{
return $this->showSurvey;
}
public function setShowSurvey(?bool $showSurvey): self
{
$this->showSurvey = $showSurvey;
return $this;
}
public function getShortDescription(): ?string
{
return $this->shortDescription;
}
public function setShortDescription(?string $shortDescription): self
{
$this->shortDescription = $shortDescription;
return $this;
}
public function getDiscordName(): ?string
{
return $this->discordName;
}
public function setDiscordName(?string $discordName): self
{
$this->discordName = $discordName;
return $this;
}
public function getBlockNextDayLessonsReminders(): ?bool
{
return $this->blockNextDayLessonsReminders;
}
public function setBlockNextDayLessonsReminders(?bool $blockNextDayLessonsReminders): self
{
$this->blockNextDayLessonsReminders = $blockNextDayLessonsReminders;
return $this;
}
public function getBlockTodayLessonsReminders(): ?bool
{
return $this->blockTodayLessonsReminders;
}
public function setBlockTodayLessonsReminders(?bool $blockTodayLessonsReminders): self
{
$this->blockTodayLessonsReminders = $blockTodayLessonsReminders;
return $this;
}
public function getLevelInfo()
{
$totalHours = $this->workedHours;
$levelName = $this->levelName;
$currentLevel = null;
$nextLevel = null;
foreach (self::LEVELS as $key => $level) {
if ($level['name'] == $levelName) {
$currentLevel = self::LEVELS[$key];
if(isset(self::LEVELS[$key + 1])) {
$nextLevel = self::LEVELS[$key + 1];
}
}
}
$levelInfo = [
'totalHours' => $totalHours,
'name' => $currentLevel['name'],
'hourlyImpact' => $currentLevel['hourlyImpact'],
'hourlyRateNow' => $currentLevel['hourlyRate'],
'hourlyRateNext' => $nextLevel ? $nextLevel['hourlyRate'] : '---',
'currentLevelMinHours' => $currentLevel['hoursMin'],
'currentLevelMaxHours' => $currentLevel['hoursMax'],
'hoursForNextLevel' => $currentLevel['hoursMax'] - $currentLevel['hoursMin'],
'hoursRemainingForNextLevel' => ($currentLevel['hoursMax'] - $currentLevel['hoursMin']) - ($totalHours - $currentLevel['hoursMin'] >= 0 ? $totalHours - $currentLevel['hoursMin'] : $totalHours),
// 'hoursRemainingForNextLevel' => $currentLevel['hoursMax'] - $totalHours,
'hoursCompletedForNextLevel' => $totalHours - $currentLevel['hoursMin'] >= 0 ? $totalHours - $currentLevel['hoursMin'] : $totalHours,
'completedPercent' => round(($totalHours - $currentLevel['hoursMin'] >= 0 ? $totalHours - $currentLevel['hoursMin'] : $totalHours) / ($currentLevel['hoursMax'] - $currentLevel['hoursMin']) * 100,0),
'badge' => $currentLevel['badge']
];
return $levelInfo;
}
public function getWorkedHours(): ?float
{
return $this->workedHours;
}
public function setWorkedHours(?float $workedHours): self
{
$this->workedHours = $workedHours;
return $this;
}
public function getWorkedHoursMarch(): ?float
{
return $this->workedHoursMarch;
}
public function setWorkedHoursMarch(?float $workedHoursMarch): self
{
$this->workedHoursMarch = $workedHoursMarch;
return $this;
}
public function getLevelName(): ?string
{
return $this->levelName;
}
public function setLevelName(?string $levelName): self
{
$this->levelName = $levelName;
return $this;
}
/**
* @return Collection|TeacherHo+liday[]
*/
public function getTeacherHolidays(): Collection
{
return $this->teacherHolidays;
}
public function addTeacherHoliday(TeacherHoliday $teacherHoliday): self
{
if (!$this->teacherHolidays->contains($teacherHoliday)) {
$this->teacherHolidays[] = $teacherHoliday;
$teacherHoliday->setTeacher($this);
}
return $this;
}
public function removeTeacherHoliday(TeacherHoliday $teacherHoliday): self
{
if ($this->teacherHolidays->removeElement($teacherHoliday)) {
// set the owning side to null (unless already changed)
if ($teacherHoliday->getTeacher() === $this) {
$teacherHoliday->setTeacher(null);
}
}
return $this;
}
public function getLessonsMissed(): ?int
{
return $this->lessonsMissed;
}
public function setLessonsMissed(?int $lessonsMissed): self
{
$this->lessonsMissed = $lessonsMissed;
return $this;
}
public function getWarningDate(): ?\DateTimeInterface
{
return $this->warningDate;
}
public function setWarningDate(?\DateTimeInterface $warningDate): self
{
$this->warningDate = $warningDate;
return $this;
}
public function getFlagRU(): ?bool
{
return $this->flagRU;
}
public function setFlagRU(?bool $flagRU): self
{
$this->flagRU = $flagRU;
return $this;
}
public function getFlagPL(): ?bool
{
return $this->flagPL;
}
public function setFlagPL(?bool $flagPL): self
{
$this->flagPL = $flagPL;
return $this;
}
public function getFlagENG(): ?bool
{
return $this->flagENG;
}
public function setFlagENG(?bool $flagENG): self
{
$this->flagENG = $flagENG;
return $this;
}
public function getFlagIB(): ?bool
{
return $this->flagIB;
}
public function setFlagIB(?bool $flagIB): self
{
$this->flagIB = $flagIB;
return $this;
}
public function getFlagDyslexia(): ?bool
{
return $this->flagDyslexia;
}
public function setFlagDyslexia(?bool $flagDyslexia): self
{
$this->flagDyslexia = $flagDyslexia;
return $this;
}
public function getFlagSensitive(): ?bool
{
return $this->flagSensitive;
}
public function setFlagSensitive(?bool $flagSensitive): self
{
$this->flagSensitive = $flagSensitive;
return $this;
}
public function getFlagTrial(): ?bool
{
return $this->flagTrial;
}
public function setFlagTrial(?bool $flagTrial): self
{
$this->flagTrial = $flagTrial;
return $this;
}
public function getExtraLoad(): ?string
{
return $this->extraLoad;
}
public function setExtraLoad(?string $extraLoad): self
{
$this->extraLoad = $extraLoad;
return $this;
}
/**
* @return Collection<int, LessonLearncubeLog>
*/
public function getLessonLearncubeLogs(): Collection
{
return $this->lessonLearncubeLogs;
}
public function addLessonLearncubeLog(LessonLearncubeLog $lessonLearncubeLog): self
{
if (!$this->lessonLearncubeLogs->contains($lessonLearncubeLog)) {
$this->lessonLearncubeLogs[] = $lessonLearncubeLog;
$lessonLearncubeLog->setTeacher($this);
}
return $this;
}
public function removeLessonLearncubeLog(LessonLearncubeLog $lessonLearncubeLog): self
{
if ($this->lessonLearncubeLogs->removeElement($lessonLearncubeLog)) {
// set the owning side to null (unless already changed)
if ($lessonLearncubeLog->getTeacher() === $this) {
$lessonLearncubeLog->setTeacher(null);
}
}
return $this;
}
public function getAdminComment(): ?string
{
return $this->adminComment;
}
public function setAdminComment(?string $adminComment): self
{
$this->adminComment = $adminComment;
return $this;
}
public function getEducationStage(): ?string
{
return $this->educationStage;
}
public function setEducationStage(?string $educationStage): self
{
$this->educationStage = $educationStage;
return $this;
}
/**
* @return Collection<int, ChildPreferenceDeclineHistory>
*/
public function getChildPreferenceDeclineHistories(): Collection
{
return $this->childPreferenceDeclineHistories;
}
public function addChildPreferenceDeclineHistory(ChildPreferenceDeclineHistory $childPreferenceDeclineHistory): self
{
if (!$this->childPreferenceDeclineHistories->contains($childPreferenceDeclineHistory)) {
$this->childPreferenceDeclineHistories[] = $childPreferenceDeclineHistory;
$childPreferenceDeclineHistory->setTeacher($this);
}
return $this;
}
public function removeChildPreferenceDeclineHistory(ChildPreferenceDeclineHistory $childPreferenceDeclineHistory): self
{
if ($this->childPreferenceDeclineHistories->removeElement($childPreferenceDeclineHistory)) {
// set the owning side to null (unless already changed)
if ($childPreferenceDeclineHistory->getTeacher() === $this) {
$childPreferenceDeclineHistory->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection<int, TeacherHoursBonus>
*/
public function getTeacherHoursBonuses(): Collection
{
return $this->teacherHoursBonuses;
}
public function addTeacherHoursBonus(TeacherHoursBonus $teacherHoursBonus): self
{
if (!$this->teacherHoursBonuses->contains($teacherHoursBonus)) {
$this->teacherHoursBonuses[] = $teacherHoursBonus;
$teacherHoursBonus->setTeacher($this);
}
return $this;
}
public function removeTeacherHoursBonus(TeacherHoursBonus $teacherHoursBonus): self
{
if ($this->teacherHoursBonuses->removeElement($teacherHoursBonus)) {
// set the owning side to null (unless already changed)
if ($teacherHoursBonus->getTeacher() === $this) {
$teacherHoursBonus->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection<int, TeacherTablet>
*/
public function getTeacherTablets(): Collection
{
return $this->teacherTablets;
}
public function addTeacherTablet(TeacherTablet $teacherTablet): self
{
if (!$this->teacherTablets->contains($teacherTablet)) {
$this->teacherTablets[] = $teacherTablet;
$teacherTablet->setTeacher($this);
}
return $this;
}
public function removeTeacherTablet(TeacherTablet $teacherTablet): self
{
if ($this->teacherTablets->removeElement($teacherTablet)) {
// set the owning side to null (unless already changed)
if ($teacherTablet->getTeacher() === $this) {
$teacherTablet->setTeacher(null);
}
}
return $this;
}
public function getLcFrom(): ?\DateTimeInterface
{
return $this->lcFrom;
}
public function setLcFrom(?\DateTimeInterface $lcFrom): self
{
$this->lcFrom = $lcFrom;
return $this;
}
/**
* @return Collection<int, TeacherUnavailableRange>
*/
public function getTeacherUnavailableRanges($withDeleted = false): Collection
{
if(!$withDeleted) {
foreach ($this->teacherUnavailableRanges as $key => $teacherUnavailableRange) {
if ($teacherUnavailableRange->isIsDeleted()) {
unset($this->teacherUnavailableRanges[$key]);
}
}
}
return $this->teacherUnavailableRanges;
}
public function addTeacherUnavailableRange(TeacherUnavailableRange $teacherUnavailableRange): self
{
if (!$this->teacherUnavailableRanges->contains($teacherUnavailableRange)) {
$this->teacherUnavailableRanges[] = $teacherUnavailableRange;
$teacherUnavailableRange->setTeacher($this);
}
return $this;
}
public function removeTeacherUnavailableRange(TeacherUnavailableRange $teacherUnavailableRange): self
{
if ($this->teacherUnavailableRanges->removeElement($teacherUnavailableRange)) {
// set the owning side to null (unless already changed)
if ($teacherUnavailableRange->getTeacher() === $this) {
$teacherUnavailableRange->setTeacher(null);
}
}
return $this;
}
public function getContractTerminateReason(): ?string
{
return $this->contractTerminateReason;
}
public function setContractTerminateReason(?string $contractTerminateReason): self
{
$this->contractTerminateReason = $contractTerminateReason;
return $this;
}
public function getContractTerminateFee(): ?float
{
return $this->contractTerminateFee;
}
public function setContractTerminateFee(?float $contractTerminateFee): self
{
$this->contractTerminateFee = $contractTerminateFee;
return $this;
}
public function isContractTerminateFeePaid(): ?bool
{
return $this->contractTerminateFeePaid;
}
public function setContractTerminateFeePaid(?bool $contractTerminateFeePaid): self
{
$this->contractTerminateFeePaid = $contractTerminateFeePaid;
return $this;
}
public function isUnickoFunction(): ?bool
{
return $this->unickoFunction;
}
public function getUnickoFunction(): ?bool
{
return $this->unickoFunction;
}
public function setUnickoFunction(?bool $unickoFunction): self
{
$this->unickoFunction = $unickoFunction;
return $this;
}
public function getTeacherRegister(): ?TeacherRegister
{
return $this->teacherRegister;
}
public function setTeacherRegister(?TeacherRegister $teacherRegister): self
{
// unset the owning side of the relation if necessary
if ($teacherRegister === null && $this->teacherRegister !== null) {
$this->teacherRegister->setTeacher(null);
}
// set the owning side of the relation if necessary
if ($teacherRegister !== null && $teacherRegister->getTeacher() !== $this) {
$teacherRegister->setTeacher($this);
}
$this->teacherRegister = $teacherRegister;
return $this;
}
public function getBirthday(): ?\DateTimeInterface
{
return $this->birthday;
}
public function setBirthday(?\DateTimeInterface $birthday): self
{
$this->birthday = $birthday;
return $this;
}
public function getIndividualWorkFilePath(): ?string
{
return $this->individualWorkFilePath;
}
public function setIndividualWorkFilePath(?string $individualWorkFilePath): self
{
$this->individualWorkFilePath = $individualWorkFilePath;
return $this;
}
public function getCountry(): ?string
{
return $this->country;
}
public function setCountry(?string $country): self
{
$this->country = $country;
return $this;
}
public function isSummerTime(): ?bool
{
return $this->summerTime;
}
public function setSummerTime(?bool $summerTime): self
{
$this->summerTime = $summerTime;
return $this;
}
public function getStudyField(): ?string
{
return $this->studyField;
}
public function setStudyField(?string $studyField): self
{
$this->studyField = $studyField;
return $this;
}
public function isCongratulatedBirthday(): ?bool
{
return $this->congratulatedBirthday !== null;
}
public function setCongratulatedBirthday(?\DateTimeInterface $congratulatedBirthday): self
{
$this->congratulatedBirthday = $congratulatedBirthday;
return $this;
}
public function getCongratulatedBirthday(): ?\DateTimeInterface
{
return $this->congratulatedBirthday;
}
public function getGoogleRefreshToken(): ?string
{
return $this->googleRefreshToken;
}
public function setGoogleRefreshToken(?string $googleRefreshToken): self
{
$this->googleRefreshToken = $googleRefreshToken;
return $this;
}
public function getGoogleAccessToken(): ?array
{
return $this->googleAccessToken;
}
public function setGoogleAccessToken(?array $googleAccessToken): self
{
$this->googleAccessToken = $googleAccessToken;
return $this;
}
public function getThreemaPassword(): ?string
{
return $this->threemaPassword;
}
public function setThreemaPassword(?string $threemaPassword): self
{
$this->threemaPassword = $threemaPassword;
return $this;
}
public function getThreemaId(): ?string
{
return $this->threemaId;
}
public function setThreemaId(?string $threemaId): self
{
$this->threemaId = $threemaId;
return $this;
}
public function getThreemaStatus(): ?string
{
return $this->threemaStatus;
}
public function setThreemaStatus(?string $threemaStatus): self
{
$this->threemaStatus = $threemaStatus;
return $this;
}
public function getThreemaGroup(): ?string
{
return $this->threemaGroup;
}
public function setThreemaGroup(?string $threemaGroup): self
{
$this->threemaGroup = $threemaGroup;
return $this;
}
public function isTrainingStarted(): ?bool
{
return $this->trainingStarted;
}
public function setTrainingStarted(?bool $trainingStarted): self
{
$this->trainingStarted = $trainingStarted;
return $this;
}
public function isTrainingEnded(): ?bool
{
return $this->trainingEnded;
}
public function setTrainingEnded(?bool $trainingEnded): self
{
$this->trainingEnded = $trainingEnded;
return $this;
}
public function getReferralCode(): ?string
{
return $this->referralCode;
}
public function setReferralCode(?string $referralCode): self
{
$this->referralCode = $referralCode;
return $this;
}
public function getSchool(): ?string
{
return $this->school;
}
public function setSchool(?string $school): self
{
$this->school = $school;
return $this;
}
public function getIelts(): ?int
{
return $this->ielts;
}
public function setIelts(?int $ielts): self
{
$this->ielts = $ielts;
return $this;
}
/**
* @return Collection<int, TeacherSickLeaves>
*/
public function getTeacherSickLeaves(): Collection
{
return $this->teacherSickLeaves;
}
public function addTeacherSickLeaf(TeacherSickLeaves $teacherSickLeaf): self
{
if (!$this->teacherSickLeaves->contains($teacherSickLeaf)) {
$this->teacherSickLeaves[] = $teacherSickLeaf;
$teacherSickLeaf->setTeacher($this);
}
return $this;
}
public function removeTeacherSickLeaf(TeacherSickLeaves $teacherSickLeaf): self
{
if ($this->teacherSickLeaves->removeElement($teacherSickLeaf)) {
// set the owning side to null (unless already changed)
if ($teacherSickLeaf->getTeacher() === $this) {
$teacherSickLeaf->setTeacher(null);
}
}
return $this;
}
public function getPersonalIdentificationNumber(): ?string
{
return $this->personalIdentificationNumber;
}
public function setPersonalIdentificationNumber(?string $personalIdentificationNumber): self
{
$this->personalIdentificationNumber = $personalIdentificationNumber;
return $this;
}
/**
* @return Collection<int, TeacherPaymentBonusProposal>
*/
public function getTeacherPaymentBonusProposals(): Collection
{
return $this->teacherPaymentBonusProposals;
}
public function addTeacherPaymentBonusProposal(TeacherPaymentBonusProposal $teacherPaymentBonusProposal): self
{
if (!$this->teacherPaymentBonusProposals->contains($teacherPaymentBonusProposal)) {
$this->teacherPaymentBonusProposals[] = $teacherPaymentBonusProposal;
$teacherPaymentBonusProposal->setTeacher($this);
}
return $this;
}
public function removeTeacherPaymentBonusProposal(TeacherPaymentBonusProposal $teacherPaymentBonusProposal): self
{
if ($this->teacherPaymentBonusProposals->removeElement($teacherPaymentBonusProposal)) {
// set the owning side to null (unless already changed)
if ($teacherPaymentBonusProposal->getTeacher() === $this) {
$teacherPaymentBonusProposal->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection<int, Tablet>
*/
public function getTablets(): Collection
{
return $this->tablets;
}
public function addTablet(Tablet $tablet): self
{
if (!$this->tablets->contains($tablet)) {
$this->tablets[] = $tablet;
$tablet->setTeacher($this);
}
return $this;
}
public function removeTablet(Tablet $tablet): self
{
if ($this->tablets->removeElement($tablet)) {
// set the owning side to null (unless already changed)
if ($tablet->getTeacher() === $this) {
$tablet->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection<int, WoltCoupon>
*/
public function getWoltCoupons(): Collection
{
return $this->woltCoupons;
}
public function addWoltCoupon(WoltCoupon $woltCoupon): self
{
if (!$this->woltCoupons->contains($woltCoupon)) {
$this->woltCoupons[] = $woltCoupon;
$woltCoupon->setTeacher($this);
}
return $this;
}
public function removeWoltCoupon(WoltCoupon $woltCoupon): self
{
if ($this->woltCoupons->removeElement($woltCoupon)) {
// set the owning side to null (unless already changed)
if ($woltCoupon->getTeacher() === $this) {
$woltCoupon->setTeacher(null);
}
}
return $this;
}
public function isFlagWeb(): ?bool
{
return $this->flagWeb;
}
public function setFlagWeb(?bool $flagWeb): self
{
$this->flagWeb = $flagWeb;
return $this;
}
public function isFlagStrict(): ?bool
{
return $this->flagStrict;
}
public function setFlagStrict(?bool $flagStrict): self
{
$this->flagStrict = $flagStrict;
return $this;
}
public function getGender(): ?string
{
return $this->gender;
}
public function setGender(?string $gender): self
{
$this->gender = $gender;
return $this;
}
public function isFlagExperienceAtSchool(): ?bool
{
return $this->flagExperienceAtSchool;
}
public function setFlagExperienceAtSchool(?bool $flagExperienceAtSchool): self
{
$this->flagExperienceAtSchool = $flagExperienceAtSchool;
return $this;
}
public function isFlagPriorityAssignment(): ?bool
{
return $this->flagPriorityAssignment;
}
public function setFlagPriorityAssignment(?bool $flagPriorityAssignment): self
{
$this->flagPriorityAssignment = $flagPriorityAssignment;
return $this;
}
public function getTeacherPreference(): ?TeacherPreference
{
return $this->teacherPreference;
}
public function setTeacherPreference(?TeacherPreference $teacherPreference): self
{
// unset the owning side of the relation if necessary
if ($teacherPreference === null && $this->teacherPreference !== null) {
$this->teacherPreference->setTeacher(null);
}
// set the owning side of the relation if necessary
if ($teacherPreference !== null && $teacherPreference->getTeacher() !== $this) {
$teacherPreference->setTeacher($this);
}
$this->teacherPreference = $teacherPreference;
return $this;
}
public function getNewContractMarksignUrl(): ?string
{
return $this->newContractMarksignUrl;
}
public function setNewContractMarksignUrl(?string $newContractMarksignUrl): self
{
$this->newContractMarksignUrl = $newContractMarksignUrl;
return $this;
}
public function isNewCotractSigned(): ?bool
{
return $this->newCotractSigned;
}
public function setNewCotractSigned(?bool $newCotractSigned): self
{
$this->newCotractSigned = $newCotractSigned;
return $this;
}
public function getNewContractMarksignDocumentId(): ?string
{
return $this->newContractMarksignDocumentId;
}
public function setNewContractMarksignDocumentId(?string $newContractMarksignDocumentId): self
{
$this->newContractMarksignDocumentId = $newContractMarksignDocumentId;
return $this;
}
public function getNewContractSignedUrl(): ?string
{
return $this->newContractSignedUrl;
}
public function setNewContractSignedUrl(?string $newContractSignedUrl): self
{
$this->newContractSignedUrl = $newContractSignedUrl;
return $this;
}
public function getNewContractType(): ?string
{
return $this->newContractType;
}
public function setNewContractType(?string $newContractType): self
{
$this->newContractType = $newContractType;
return $this;
}
public function getSummerAt(): ?\DateTimeInterface
{
return $this->summerAt;
}
public function setSummerAt(?\DateTimeInterface $summerAt): self
{
$this->summerAt = $summerAt;
return $this;
}
public function isFlagOnlyIB(): ?bool
{
return $this->flagOnlyIB;
}
public function setFlagOnlyIB(?bool $flagOnlyIB): self
{
$this->flagOnlyIB = $flagOnlyIB;
return $this;
}
public function isFlagAutoAcceptAssignment(): ?bool
{
return $this->flagAutoAcceptAssignment;
}
public function setFlagAutoAcceptAssignment(?bool $flagAutoAcceptAssignment): self
{
$this->flagAutoAcceptAssignment = $flagAutoAcceptAssignment;
return $this;
}
public function getGapBetweenAssignments(): ?int
{
if($this->gapBetweenAssignments === null) {
return 5;
}
return $this->gapBetweenAssignments;
}
public function setGapBetweenAssignments(?int $gapBetweenAssignments): self
{
$this->gapBetweenAssignments = $gapBetweenAssignments;
return $this;
}
public function isFlagAutoAcceptAssignmentTeacher(): ?bool
{
return $this->flagAutoAcceptAssignmentTeacher;
}
public function setFlagAutoAcceptAssignmentTeacher(?bool $flagAutoAcceptAssignmentTeacher): self
{
$this->flagAutoAcceptAssignmentTeacher = $flagAutoAcceptAssignmentTeacher;
return $this;
}
public function getGapBetweenAssignmentsTeacher(): ?int
{
return $this->gapBetweenAssignmentsTeacher;
}
public function setGapBetweenAssignmentsTeacher(?int $gapBetweenAssignmentsTeacher): self
{
$this->gapBetweenAssignmentsTeacher = $gapBetweenAssignmentsTeacher;
return $this;
}
public function getGapBetweenAssignmentsSubmittedAt(): ?\DateTimeInterface
{
return $this->gapBetweenAssignmentsSubmittedAt;
}
public function setGapBetweenAssignmentsSubmittedAt(?\DateTimeInterface $gapBetweenAssignmentsSubmittedAt): self
{
$this->gapBetweenAssignmentsSubmittedAt = $gapBetweenAssignmentsSubmittedAt;
return $this;
}
public function getChatStreamToken(): ?string
{
return $this->chatStreamToken;
}
public function setChatStreamToken(?string $chatStreamToken): self
{
$this->chatStreamToken = $chatStreamToken;
return $this;
}
public function getMaxLoadChangedAt(): ?\DateTimeInterface
{
return $this->maxLoadChangedAt;
}
public function setMaxLoadChangedAt(?\DateTimeInterface $maxLoadChangedAt): self
{
$this->maxLoadChangedAt = $maxLoadChangedAt;
return $this;
}
public function getMobileAppLastUsedAt(): ?\DateTimeInterface
{
return $this->mobileAppLastUsedAt;
}
public function setMobileAppLastUsedAt(?\DateTimeInterface $mobileAppLastUsedAt): self
{
$this->mobileAppLastUsedAt = $mobileAppLastUsedAt;
return $this;
}
/**
* @return mixed
*/
public function getQrCode()
{
return $this->qrCode;
}
/**
* @param mixed $qrCode
*/
public function setQrCode($qrCode): void
{
$this->qrCode = $qrCode;
}
/**
* @return Collection<int, ChatCensorshipJournal>
*/
public function getChatCensorshipJournals(): Collection
{
return $this->chatCensorshipJournals;
}
public function addChatCensorshipJournal(ChatCensorshipJournal $chatCensorshipJournal): self
{
if (!$this->chatCensorshipJournals->contains($chatCensorshipJournal)) {
$this->chatCensorshipJournals[] = $chatCensorshipJournal;
$chatCensorshipJournal->setTeacher($this);
}
return $this;
}
public function removeChatCensorshipJournal(ChatCensorshipJournal $chatCensorshipJournal): self
{
if ($this->chatCensorshipJournals->removeElement($chatCensorshipJournal)) {
// set the owning side to null (unless already changed)
if ($chatCensorshipJournal->getTeacher() === $this) {
$chatCensorshipJournal->setTeacher(null);
}
}
return $this;
}
/**
* @return Collection<int, ChildLessonReview>
*/
public function getChildLessonReviews(): Collection
{
return $this->childLessonReviews;
}
public function addChildLessonReview(ChildLessonReview $childLessonReview): self
{
if (!$this->childLessonReviews->contains($childLessonReview)) {
$this->childLessonReviews[] = $childLessonReview;
$childLessonReview->setTeacher($this);
}
return $this;
}
public function removeChildLessonReview(ChildLessonReview $childLessonReview): self
{
if ($this->childLessonReviews->removeElement($childLessonReview)) {
// set the owning side to null (unless already changed)
if ($childLessonReview->getTeacher() === $this) {
$childLessonReview->setTeacher(null);
}
}
return $this;
}
public function getTeacherPublicProfiles(): Collection
{
return $this->teacherPublicProfiles;
}
public function setTeacherPublicProfiles(Collection $teacherPublicProfiles): void
{
$this->teacherPublicProfiles = $teacherPublicProfiles;
}
}