<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\DBAL\Types\Types;
use Symfony\Component\Serializer\Annotation\Groups;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: 'App\Repository\OfficeRepository')]
class Office
{
#[Groups(['LogService', 'APIJob', 'UserInfo', 'Recruitment'])]
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[Groups(['LogService', 'APIJob', 'UserInfo', 'Recruitment'])]
#[ORM\Column(type: 'string', length: 64, nullable: true)]
private $fullName;
#[Groups(['APIJob'])]
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $address;
#[Groups(['APIJob'])]
#[ORM\Column(type: 'string', length: 4, nullable: true)]
private $country;
#[ORM\Column(type: 'string', length: 128, nullable: true)]
private $contactPhone;
#[ORM\Column(type: 'string', length: 32, nullable: true)]
private $registrationNumber;
#[ORM\Column(type: 'string', length: 128, nullable: true)]
private $taxNumber;
#[ORM\OneToMany(targetEntity: 'App\Entity\User', mappedBy: 'office', fetch: 'LAZY')]
private $users;
#[ORM\OneToMany(targetEntity: 'App\Entity\Invitation', mappedBy: 'office', orphanRemoval: true, fetch: 'LAZY')]
private $invitations;
#[ORM\ManyToOne(targetEntity: 'App\Entity\Company', inversedBy: 'offices')]
private $company;
#[ORM\OneToMany(targetEntity: 'App\Entity\Document', mappedBy: 'office')]
private $documents;
#[ORM\OneToMany(targetEntity: 'App\Entity\Bank', mappedBy: 'office')]
private $banks;
#[ORM\OneToMany(targetEntity: 'App\Entity\Organization', mappedBy: 'office', orphanRemoval: true)]
private $organizations;
#[ORM\OneToMany(targetEntity: AppraisalForm::class, mappedBy: 'office')]
private $appraisalForms;
#[ORM\Column(type: 'string', length: 255, nullable: true)]
private $workPermitType;
#[ORM\OneToOne(targetEntity: Widget::class, inversedBy: 'office', cascade: ['persist', 'remove'])]
private $widget;
#[ORM\OneToMany(targetEntity: QnA::class, mappedBy: 'office')]
private $QnAs;
#[ORM\OneToMany(targetEntity: Training::class, mappedBy: 'office')]
private $trainings;
#[ORM\OneToMany(targetEntity: Announcement::class, mappedBy: 'office')]
private $announcements;
#[ORM\Column(type: 'text', nullable: true)]
private $starterGuide;
#[ORM\OneToOne(targetEntity: FlexiWorkArrangement::class, mappedBy: 'office', cascade: ['persist', 'remove'])]
private $flexiWorkArrangement;
#[ORM\OneToOne(targetEntity: OfficeUserInfo::class, mappedBy: 'office', cascade: ['persist', 'remove'])]
private $officeUserInfo;
#[ORM\OneToOne(targetEntity: OfficeLeave::class, mappedBy: 'office', cascade: ['persist', 'remove'])]
private $officeLeave;
#[ORM\OneToMany(targetEntity: LeaveType::class, mappedBy: 'office')]
private $leaveTypes;
#[ORM\Column(type: 'string', length: 3, nullable: true)]
private $currency;
#[ORM\OneToMany(targetEntity: Salary::class, mappedBy: 'office')]
#[ORM\OrderBy(['validAt' => 'DESC'])]
private $salaries;
#[Groups(['APIJob'])]
#[ORM\Column(type: 'integer', nullable: true)]
private $customOrder;
#[Groups(['APIJob'])]
#[ORM\ManyToMany(targetEntity: Job::class, mappedBy: 'office')]
private $jobs;
#[ORM\OneToMany(targetEntity: AssetUsage::class, mappedBy: 'office')]
private $assetUsages;
#[ORM\ManyToMany(targetEntity: Course::class, mappedBy: 'offices')]
private $courses;
#[ORM\ManyToMany(targetEntity: CourseAutoEnrollment::class, mappedBy: 'offices')]
private $courseAutoEnrollments;
#[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $customPersonalInfo = null;
#[ORM\OneToMany(mappedBy: 'office', targetEntity: RecruitVacancyOffice::class, orphanRemoval: true)]
private Collection $recruitVacancyOffices;
#[ORM\OneToMany(mappedBy: 'office', targetEntity: RecruitQuestionOffice::class, orphanRemoval: true)]
private Collection $recruitQuestionOffices;
public function __construct()
{
$this->users = new ArrayCollection();
$this->invitations = new ArrayCollection();
$this->documents = new ArrayCollection();
$this->banks = new ArrayCollection();
$this->organizations = new ArrayCollection();
$this->appraisalForms = new ArrayCollection();
$this->QnAs = new ArrayCollection();
$this->trainings = new ArrayCollection();
$this->announcements = new ArrayCollection();
$this->leaveBankHolidays = new ArrayCollection();
$this->leaveTypes = new ArrayCollection();
$this->salaries = new ArrayCollection();
$this->jobs = new ArrayCollection();
$this->assetUsages = new ArrayCollection();
$this->courses = new ArrayCollection();
$this->courseAutoEnrollments = new ArrayCollection();
$this->recruitVacancyOffices = new ArrayCollection();
$this->recruitQuestionOffices = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getFullName(): ?string
{
return $this->fullName;
}
public function setFullName(?string $fullName): self
{
$this->fullName = $fullName;
return $this;
}
public function getAddress(): ?string
{
return $this->address;
}
public function setAddress(?string $address): self
{
$this->address = $address;
return $this;
}
public function getCountry(): ?string
{
return $this->country;
}
public function setCountry(?string $country): self
{
$this->country = $country;
return $this;
}
public function getContactPhone(): ?string
{
return $this->contactPhone;
}
public function setContactPhone(?string $contactPhone): self
{
$this->contactPhone = $contactPhone;
return $this;
}
public function getRegistrationNumber(): ?string
{
return $this->registrationNumber;
}
public function setRegistrationNumber(?string $registrationNumber): self
{
$this->registrationNumber = $registrationNumber;
return $this;
}
public function getTaxNumber(): ?string
{
return $this->taxNumber;
}
public function setTaxNumber(?string $taxNumber): self
{
$this->taxNumber = $taxNumber;
return $this;
}
public function getCustomOrder(): ?int
{
$num = $this->customOrder;
if (is_null($num)) {
$num = 0;
}
return $num;
}
public function setCustomOrder(?int $order): self
{
$this->customOrder = $order;
return $this;
}
/**
* @return Collection|User[]
*/
public function getUsers(): Collection
{
return $this->users;
}
/**
* Get the total number of active users.
*
* @return int
*/
public function getTotalUsers(): int
{
$activeUsers = $this->users->filter(function ($user) {
return $user->getIsActive() == true;
});
return $activeUsers->count();
}
public function addUser(User $user): self
{
if (!$this->users->contains($user)) {
$this->users[] = $user;
$user->setOffice($this);
}
return $this;
}
public function removeUser(User $user): self
{
if ($this->users->contains($user)) {
$this->users->removeElement($user);
// set the owning side to null (unless already changed)
if ($user->getOffice() === $this) {
$user->setOffice(null);
}
}
return $this;
}
/**
* @return Collection|Invitation[]
*/
public function getInvitations(): Collection
{
return $this->invitations;
}
public function addInvitation(Invitation $invitation): self
{
if (!$this->invitations->contains($invitation)) {
$this->invitations[] = $invitation;
$invitation->setOffice($this);
}
return $this;
}
public function removeInvitation(Invitation $invitation): self
{
if ($this->invitations->contains($invitation)) {
$this->invitations->removeElement($invitation);
// set the owning side to null (unless already changed)
if ($invitation->getOffice() === $this) {
$invitation->setOffice(null);
}
}
return $this;
}
public function getCompany(): ?Company
{
return $this->company;
}
public function setCompany(?Company $company): self
{
$this->company = $company;
return $this;
}
/**
* @return Collection|Document[]
*/
public function getDocuments(): Collection
{
return $this->documents;
}
public function addDocument(Document $document): self
{
if (!$this->documents->contains($document)) {
$this->documents[] = $document;
$document->setOffice($this);
}
return $this;
}
public function removeDocument(Document $document): self
{
if ($this->documents->contains($document)) {
$this->documents->removeElement($document);
// set the owning side to null (unless already changed)
if ($document->getOffice() === $this) {
$document->setOffice(null);
}
}
return $this;
}
/**
* @return Collection|Bank[]
*/
public function getBanks(): Collection
{
return $this->banks;
}
public function addBank(Bank $bank): self
{
if (!$this->banks->contains($bank)) {
$this->banks[] = $bank;
$bank->setOffice($this);
}
return $this;
}
public function removeBank(Bank $bank): self
{
if ($this->banks->contains($bank)) {
$this->banks->removeElement($bank);
// set the owning side to null (unless already changed)
if ($bank->getOffice() === $this) {
$bank->setOffice(null);
}
}
return $this;
}
/**
* @return Collection|Organization[]
*/
public function getOrganizations(): Collection
{
return $this->organizations;
}
public function addOrganization(Organization $organization): self
{
if (!$this->organizations->contains($organization)) {
$this->organizations[] = $organization;
$organization->setOffice($this);
}
return $this;
}
public function removeOrganization(Organization $organization): self
{
if ($this->organizations->contains($organization)) {
$this->organizations->removeElement($organization);
// set the owning side to null (unless already changed)
if ($organization->getOffice() === $this) {
$organization->setOffice(null);
}
}
return $this;
}
public function getActiveUsers()
{
$users = [];
foreach ($this->users as $user) {
if ($user->getIsActive() == true)
array_push($users, $user);
}
;
return $users;
}
public function getUserByOffice($o_id)
{
$users = [];
foreach ($this->getOrganizations() as $user) {
if ($user->getDepartment()->getOffice() == $o_id)
array_push($users, $user);
}
;
return $users;
}
public function getUserByDepartment($d_id)
{
$users = [];
$registered_users = [];
foreach ($this->getOrganizations() as $user) {
$uid = $user->getUser() ? $user->getUser()->getId() : false;
if ($uid != null && $user->getDepartment() != null && $user->getDepartment()->getId() == $d_id && in_array($uid, $registered_users) == false) {
array_push($users, $user);
array_push($registered_users, $uid);
}
}
;
return $users;
}
public function getUserByOfficeDepartment($d_id)
{
$users = [];
$registered_users = [];
foreach ($this->getOrganizations() as $user) {
$uid = $user->getUser() ? $user->getUser()->getId() : false;
if ($uid != null && $user->getUser()->getIsActive() == true && $user->getDepartment() != null && $user->getDepartment()->getId() == $d_id && $user->getUser()->getOffice()->getId() == $this->getId() && in_array($uid, $registered_users) == false) {
array_push($users, $user);
array_push($registered_users, $uid);
}
}
;
return $users;
}
public function getUserByAssignedDepartment($d_id)
{
$users = [];
$registered_users = [];
foreach ($this->getOrganizations() as $user) {
$uid = $user->getUser() ? $user->getUser()->getId() : false;
if ($uid != null && $user->getDepartment() != null && $user->getDepartment()->getId() == $d_id) {
array_push($users, $user);
array_push($registered_users, $uid);
}
}
;
return $users;
}
public function getOrganizationGroup()
{
$groups = [];
foreach ($this->getOrganizations() as $group) {
if ($group->getIsGroup())
array_push($groups, $group);
}
;
return $groups;
}
public function getDepartments()
{
$departments = array();
foreach ($this->users as $user) {
if ($user->getIsActive() == true) {
$d = $user->getDepartment();
if (!is_null($d)) {
if (!isset($departments['d' . $d->getId()])) {
$dt = array();
$dt['data'] = $d;
$dt['total'] = 0;
$departments['d' . $d->getId()] = $dt;
}
$departments['d' . $d->getId()]['total'] += 1;
} else {
if (!isset($departments['dother'])) {
$dt = array();
$dt['data'] = array();
$dt['data']['id'] = 'other';
$dt['data']['name'] = 'Others';
$dt['total'] = 0;
$departments['dother'] = $dt;
}
$departments['dother']['total'] += 1;
}
}
;
}
return $departments;
}
public function countStatus()
{
$status = [];
// need to register all status here
$status['status.new'] = 0;
$status['status.off'] = 0;
$status['status.working'] = 0;
$status['status.working_home'] = 0;
//$status['status.break'] = 0;
$status['status.sick'] = 0;
$status['status.leave'] = 0;
foreach ($this->users as $user) {
if ($user->getStatus() != null)
$status[$user->getStatus()]++;
}
;
return $status;
}
public function getAllUser()
{
$users = [];
foreach ($this->getUsers() as $user) {
if ($user->getIsActive() == true)
array_push($users, $user);
}
;
return $users;
}
public function getAllUsers()
{
$users = [];
foreach ($this->getUsers() as $user) {
// if ($user->getIsActive() == true)
array_push($users, $user);
}
;
return $users;
}
public function getAllManager($sort = true, $includeSub = false)
{
$managers = [];
foreach ($this->getUsers() as $user) {
if ($user->getIsActive() == true && $user->getIsManager($includeSub))
array_push($managers, $user);
}
;
if ($sort) {
usort($managers, function ($a, $b) {
return strcmp($a->getPersonalInfo()->getFirstName(), $b->getPersonalInfo()->getFirstName());
});
}
;
return $managers;
}
public function getAllSubManager($sort = true)
{
$managers = [];
foreach ($this->getUsers() as $user) {
if ($user->getIsActive() && $subManagers = $user->getAllManager($user->getManager())) {
$managers = array_merge($managers, $subManagers);
}
}
if ($sort) {
usort($managers, function ($a, $b) {
return strcmp($a->getPersonalInfo()->getFirstName(), $b->getPersonalInfo()->getFirstName());
});
}
return $managers;
}
/**
* @return Collection|AppraisalForm[]
*/
public function getAppraisalForms(): Collection
{
return $this->appraisalForms;
}
public function addAppraisalForm(AppraisalForm $appraisalForm): self
{
if (!$this->appraisalForms->contains($appraisalForm)) {
$this->appraisalForms[] = $appraisalForm;
$appraisalForm->setOffice($this);
}
return $this;
}
public function removeAppraisalForm(AppraisalForm $appraisalForm): self
{
if ($this->appraisalForms->contains($appraisalForm)) {
$this->appraisalForms->removeElement($appraisalForm);
// set the owning side to null (unless already changed)
if ($appraisalForm->getOffice() === $this) {
$appraisalForm->setOffice(null);
}
}
return $this;
}
public function getWorkPermitType(): ?string
{
return $this->workPermitType;
}
public function setWorkPermitType(?string $workPermitType): self
{
$this->workPermitType = $workPermitType;
return $this;
}
public function getWidget(): ?Widget
{
return $this->widget;
}
public function setWidget(?Widget $widget): self
{
$this->widget = $widget;
return $this;
}
/**
* @return Collection|QnA[]
*/
public function getQnAs(): Collection
{
return $this->QnAs;
}
public function addQnA(QnA $qnA): self
{
if (!$this->QnAs->contains($qnA)) {
$this->QnAs[] = $qnA;
$qnA->setOffice($this);
}
return $this;
}
public function removeQnA(QnA $qnA): self
{
if ($this->QnAs->contains($qnA)) {
$this->QnAs->removeElement($qnA);
// set the owning side to null (unless already changed)
if ($qnA->getOffice() === $this) {
$qnA->setOffice(null);
}
}
return $this;
}
/**
* @return Collection|Training[]
*/
public function getTrainings(): Collection
{
return $this->trainings;
}
public function addTraining(Training $training): self
{
if (!$this->trainings->contains($training)) {
$this->trainings[] = $training;
$training->setOffice($this);
}
return $this;
}
public function removeTraining(Training $training): self
{
if ($this->trainings->contains($training)) {
$this->trainings->removeElement($training);
// set the owning side to null (unless already changed)
if ($training->getOffice() === $this) {
$training->setOffice(null);
}
}
return $this;
}
/**
* @return Collection|Announcement[]
*/
public function getAnnouncements(): Collection
{
return $this->announcements;
}
public function addAnnouncement(Announcement $announcement): self
{
if (!$this->announcements->contains($announcement)) {
$this->announcements[] = $announcement;
$announcement->setOffice($this);
}
return $this;
}
public function removeAnnouncement(Announcement $announcement): self
{
if ($this->announcements->contains($announcement)) {
$this->announcements->removeElement($announcement);
// set the owning side to null (unless already changed)
if ($announcement->getOffice() === $this) {
$announcement->setOffice(null);
}
}
return $this;
}
public function getStarterGuide(): ?string
{
return $this->starterGuide;
}
public function setStarterGuide(?string $starterGuide): self
{
$this->starterGuide = $starterGuide;
return $this;
}
public function getFlexiWorkArrangement(): ?FlexiWorkArrangement
{
return $this->flexiWorkArrangement;
}
public function setFlexiWorkArrangement(FlexiWorkArrangement $flexiWorkArrangement): self
{
$this->flexiWorkArrangement = $flexiWorkArrangement;
// set the owning side of the relation if necessary
if ($flexiWorkArrangement->getOffice() !== $this) {
$flexiWorkArrangement->setOffice($this);
}
return $this;
}
public function getOfficeUserInfo(): ?OfficeUserInfo
{
return $this->officeUserInfo;
}
public function setOfficeUserInfo(OfficeUserInfo $officeUserInfo): self
{
// set the owning side of the relation if necessary
if ($officeUserInfo->getOffice() !== $this) {
$officeUserInfo->setOffice($this);
}
$this->officeUserInfo = $officeUserInfo;
return $this;
}
public function fullyVaccinated()
{
$vaccinated = [];
foreach ($this->users as $user) {
if ($user->getPersonalInfo()->getVaccination() != null && $user->getPersonalInfo()->getVaccination()->getStatus() == 'form.vaccination.second')
array_push($vaccinated, $user);
}
;
return $vaccinated;
}
public function getOfficeLeave(): ?OfficeLeave
{
return $this->officeLeave;
}
public function setOfficeLeave(OfficeLeave $officeLeave): self
{
// set the owning side of the relation if necessary
if ($officeLeave->getOffice() !== $this) {
$officeLeave->setOffice($this);
}
$this->officeLeave = $officeLeave;
return $this;
}
/**
* @return Collection<int, LeaveType>
*/
public function getLeaveTypes(): Collection
{
return $this->leaveTypes;
}
public function addLeaveType(LeaveType $leaveType): self
{
if (!$this->leaveTypes->contains($leaveType)) {
$this->leaveTypes[] = $leaveType;
$leaveType->setOffice($this);
}
return $this;
}
public function removeLeaveType(LeaveType $leaveType): self
{
if ($this->leaveTypes->removeElement($leaveType)) {
// set the owning side to null (unless already changed)
if ($leaveType->getOffice() === $this) {
$leaveType->setOffice(null);
}
}
return $this;
}
public function getAllHourlyRates()
{
$hourlyRates = [];
foreach ($this->salaries as $salary) {
$hourlyRates[] = ['type' => 'office', 'date' => $salary->getValidAt()->format('Y-m-d'), 'rate' => $salary->getHourlyRate()];
}
return $hourlyRates;
}
public function getHourlyRate($date = null)
{
$dateStr = $date ? $date : date('Y-m-d');
if (count($this->salaries) == 0)
return false;
foreach ($this->salaries as $salary) {
if ($dateStr >= $salary->getValidAt()->format('Y-m-d'))
return $salary->getHourlyRate();
}
return 0;
}
public function getHourlyRateUsd($date = null)
{
$dateStr = $date ? $date : date('Y-m-d');
if (count($this->salaries) == 0)
return false;
foreach ($this->salaries as $salary) {
if ($dateStr >= $salary->getValidAt()->format('Y-m-d'))
return $salary->getHourlyRateUsd($dateStr);
}
return 0;
}
public function getCurrency(): ?string
{
return $this->currency ?? 'USD';
}
public function setCurrency(?string $currency): self
{
$this->currency = $currency;
return $this;
}
/**
* @return Collection<int, Salary>
*/
public function getSalaries(): Collection
{
return $this->salaries;
}
public function addSalary(Salary $salary): self
{
if (!$this->salaries->contains($salary)) {
$this->salaries[] = $salary;
$salary->setOffice($this);
}
return $this;
}
public function removeSalary(Salary $salary): self
{
if ($this->salaries->removeElement($salary)) {
// set the owning side to null (unless already changed)
if ($salary->getOffice() === $this) {
$salary->setOffice(null);
}
}
return $this;
}
/**
* @return Collection|Job[]
*/
public function getJobs(): Collection
{
return $this->jobs;
}
public function addJob(Job $job): self
{
if (!$this->jobs->contains($job)) {
$this->jobs[] = $job;
$job->addOffice($this);
}
return $this;
}
public function removeJob(Job $job): self
{
if ($this->jobs->removeElement($job)) {
$job->removeOffice($this);
}
return $this;
}
/**
* @return Collection|AssetUsage[]
*/
public function getassetUsages(): Collection
{
return $this->assetUsages;
}
public function addassetUsages(AssetUsage $assetUsages): self
{
if (!$this->assetUsages->contains($assetUsages)) {
$this->assetUsages[] = $assetUsages;
$assetUsages->setOffice($this);
}
return $this;
}
public function removeassetUsages(AssetUsage $assetUsages): self
{
if ($this->assetUsages->removeElement($assetUsages)) {
// set the owning side to null (unless already changed)
if ($assetUsages->getOffice() === $this) {
$assetUsages->setOffice(null);
}
}
return $this;
}
/**
* @return Collection|Course[]
*/
public function getCourses(): Collection
{
return $this->courses;
}
public function addCourse(Course $course): self
{
if (!$this->courses->contains($course)) {
$this->courses[] = $course;
$course->addOffice($this);
}
return $this;
}
public function removeCourse(Course $course): self
{
if ($this->courses->removeElement($course)) {
$course->removeOffice($this);
}
return $this;
}
/**
* @return Collection|CourseAutoEnrollment[]
*/
public function getCourseAutoEnrollments(): Collection
{
return $this->courseAutoEnrollments;
}
public function addCourseAutoEnrollment(CourseAutoEnrollment $CourseAutoEnrollment): self
{
if (!$this->courseAutoEnrollments->contains($CourseAutoEnrollment)) {
$this->courseAutoEnrollments[] = $CourseAutoEnrollment;
$CourseAutoEnrollment->addOffice($this);
}
return $this;
}
public function removeCourseAutoEnrollment(CourseAutoEnrollment $CourseAutoEnrollment): self
{
if ($this->courseAutoEnrollments->removeElement($CourseAutoEnrollment)) {
$CourseAutoEnrollment->removeOffice($this);
}
return $this;
}
public function getCustomPersonalInfo(): ?string
{
return $this->customPersonalInfo;
}
public function getCustomPersonalInfoData()
{
// return $this->customPersonalInfo;
$customData = null;
if ($this->customPersonalInfo) {
$lines = explode(PHP_EOL, $this->customPersonalInfo);
$customData = array_map(function ($item) {
return trim($item, " \t\n\r\0\x0B");
}, $lines);
}
return $customData;
}
public function getCustomPersonalInfoLabel()
{
// return $this->customPersonalInfo;
$customDataLabel = null;
if ($this->customPersonalInfo) {
$lines = explode(PHP_EOL, $this->customPersonalInfo);
$customDataLabel = array_map(function ($item) {
$item = str_replace(" ", "", $item);
$item = str_replace("\r", "", $item);
return $item;
}, $lines);
}
return $customDataLabel;
}
public function getCustomPersonalInfoAssoc()
{
$result = null;
if (!empty($this->getCustomPersonalInfoLabel()) && !empty($this->getCustomPersonalInfoData())) {
$result = [];
foreach ($this->getCustomPersonalInfoLabel() as $key => $label) {
$result[$label] = $this->getCustomPersonalInfoData()[$key];
}
return $result;
}
return $result;
}
public function setCustomPersonalInfo(?string $customPersonalInfo): self
{
$this->customPersonalInfo = $customPersonalInfo;
return $this;
}
/**
* @return Collection<int, RecruitVacancyOffice>
*/
public function getRecruitVacancyOffices(): Collection
{
return $this->recruitVacancyOffices;
}
public function addRecruitVacancyOffice(RecruitVacancyOffice $recruitVacancyOffice): self
{
if (!$this->recruitVacancyOffices->contains($recruitVacancyOffice)) {
$this->recruitVacancyOffices->add($recruitVacancyOffice);
$recruitVacancyOffice->setOffice($this);
}
return $this;
}
public function removeRecruitVacancyOffice(RecruitVacancyOffice $recruitVacancyOffice): self
{
if ($this->recruitVacancyOffices->removeElement($recruitVacancyOffice)) {
// set the owning side to null (unless already changed)
if ($recruitVacancyOffice->getOffice() === $this) {
$recruitVacancyOffice->setOffice(null);
}
}
return $this;
}
/**
* @return Collection<int, RecruitQuestionOffice>
*/
public function getRecruitQuestionOffices(): Collection
{
return $this->recruitQuestionOffices;
}
public function addRecruitQuestionOffice(RecruitQuestionOffice $recruitQuestionOffice): self
{
if (!$this->recruitQuestionOffices->contains($recruitQuestionOffice)) {
$this->recruitQuestionOffices->add($recruitQuestionOffice);
$recruitQuestionOffice->setOffice($this);
}
return $this;
}
public function removeRecruitQuestionOffice(RecruitQuestionOffice $recruitQuestionOffice): self
{
if ($this->recruitQuestionOffices->removeElement($recruitQuestionOffice)) {
// set the owning side to null (unless already changed)
if ($recruitQuestionOffice->getOffice() === $this) {
$recruitQuestionOffice->setOffice(null);
}
}
return $this;
}
}