<?php
namespace App\Features\Jobs;
use App\Entity\ActivitySector;
use App\Entity\Applicants;
use App\Entity\Embedded\DateAndTime;
use App\Entity\EmploymentContract;
use App\Entity\StudyLevel;
use Doctrine\Common\Collections\ArrayCollection;
class JobFilter
{
public ?bool $isEnabled;
public ?string $query;
public array|ArrayCollection|null $sectors;
private array|ArrayCollection|null $studyLevel;
private ?int $experienceYear;
private ?DateAndTime $startAt;
private ?DateAndTime $endAt;
private ?EmploymentContract $employmentContract;
private ?\DateTimeImmutable $createdDate;
private ?Applicants $applicantExist;
private ?Applicants $applicantNotExist;
/**
* @param string|null $query
* @param array|null $sectors
* @param array|null $studyLevel
* @param int|null $experienceYear
* @param DateAndTime|null $startAt
* @param DateAndTime|null $endAt
* @param EmploymentContract|null $employmentContract
* @param \DateTimeImmutable|null $createdDate
*/
public function __construct(?string $query= null,
?array $sectors= null,
?array $studyLevel= null,
?int $experienceYear= null,
?DateAndTime $startAt= null,
?DateAndTime $endAt= null,
?EmploymentContract $employmentContract= null,
?\DateTimeImmutable $createdDate= null,
?Applicants $applicantExist= null,
?Applicants $applicantNotExist= null,
?bool $isEnabled= null)
{
$this->query = $query;
$this->sectors = $sectors;
$this->studyLevel = $studyLevel;
$this->experienceYear = $experienceYear;
$this->startAt = $startAt;
$this->endAt = $endAt;
$this->employmentContract = $employmentContract;
$this->createdDate = $createdDate;
$this->applicantExist = $applicantExist;
$this->applicantNotExist = $applicantNotExist;
$this->isEnabled = $isEnabled;
}
/**
* @return string|null
*/
public function getQuery(): ?string
{
return $this->query;
}
/**
* @param string|null $query
* @return JobFilter
*/
public function setQuery(?string $query): JobFilter
{
$this->query = $query;
return $this;
}
/**
* @return array|ArrayCollection|null
*/
public function getSectors(): ArrayCollection|array|null
{
return $this->sectors;
}
/**
* @param array|ActivitySector|ArrayCollection|null $sectors
* @return JobFilter
*/
public function setSectors(array|ActivitySector|ArrayCollection|null $sectors): JobFilter
{
if($sectors instanceof ActivitySector) {
$sectors = [$sectors];
}
$this->sectors = $sectors;
return $this;
}
/**
* @return array|ArrayCollection|null
*/
public function getStudyLevel(): ArrayCollection|array|null
{
return $this->studyLevel;
}
/**
* @param array|ArrayCollection|StudyLevel|null $studyLevel
* @return JobFilter
*/
public function setStudyLevel(array|ArrayCollection|null|StudyLevel $studyLevel): JobFilter
{
if($studyLevel instanceof StudyLevel) {
$studyLevel = [$studyLevel];
}
$this->studyLevel = $studyLevel;
return $this;
}
/**
* @return int|null
*/
public function getExperienceYear(): ?int
{
return $this->experienceYear;
}
/**
* @param int|null $experienceYear
* @return JobFilter
*/
public function setExperienceYear(?int $experienceYear): JobFilter
{
$this->experienceYear = $experienceYear;
return $this;
}
/**
* @return DateAndTime|null
*/
public function getStartAt(): ?DateAndTime
{
return $this->startAt;
}
/**
* @param DateAndTime|null $startAt
* @return JobFilter
*/
public function setStartAt(?DateAndTime $startAt): JobFilter
{
$this->startAt = $startAt;
return $this;
}
/**
* @return DateAndTime|null
*/
public function getEndAt(): ?DateAndTime
{
return $this->endAt;
}
/**
* @param DateAndTime|null $endAt
* @return JobFilter
*/
public function setEndAt(?DateAndTime $endAt): JobFilter
{
$this->endAt = $endAt;
return $this;
}
/**
* @return EmploymentContract|null
*/
public function getEmploymentContract(): ?EmploymentContract
{
return $this->employmentContract;
}
/**
* @param EmploymentContract|null $employmentContract
* @return JobFilter
*/
public function setEmploymentContract(?EmploymentContract $employmentContract): JobFilter
{
$this->employmentContract = $employmentContract;
return $this;
}
/**
* @return \DateTimeImmutable|null
*/
public function getCreatedDate(): ?\DateTimeImmutable
{
return $this->createdDate;
}
/**
* @param \DateTimeImmutable|null $createdDate
* @return JobFilter
*/
public function setCreatedDate(?\DateTimeImmutable $createdDate): JobFilter
{
$this->createdDate = $createdDate;
return $this;
}
/**
* @return Applicants|null
*/
public function getApplicantExist(): ?Applicants
{
return $this->applicantExist;
}
/**
* @return Applicants|null
*/
public function getApplicantNotExist(): ?Applicants
{
return $this->applicantNotExist;
}
/**
* @param Applicants|null $applicantExist
* @return JobFilter
*/
public function setApplicantExist(?Applicants $applicantExist): JobFilter
{
$this->applicantExist = $applicantExist;
return $this;
}
/**
* @param Applicants|null $applicantNotExist
* @return JobFilter
*/
public function setApplicantNotExist(?Applicants $applicantNotExist): JobFilter
{
$this->applicantNotExist = $applicantNotExist;
return $this;
}
/**
* @return bool|null
*/
public function getIsEnabled(): ?bool
{
return $this->isEnabled;
}
/**
* @param bool|null $isEnabled
* @return JobFilter
*/
public function setIsEnabled(?bool $isEnabled): JobFilter
{
$this->isEnabled = $isEnabled;
return $this;
}
}