<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\Table as Table;
/**
* Job
*
* @Table(name="jobs")
* @Entity()
*/
class Job extends AbstractSignedEntity
{
public const TYPE_FULL_TIME = 1;
public const TYPE_PART_TIME = 2;
public const TYPE_BRIGADE = 3;
public const TYPE_TRAINEE = 4;
public const TYPE_SUBCONTRACTOR = 5;
public const ENTRY_TYPE_ASAP = 1;
public const ENTRY_TYPE_BY_AGREEMENT = 2;
public const ID_BASIC_JOB = 43;
public const ID_BASIC_BRIGAD = 44;
public const ID_BASIC_INTERNSHIP = 45;
public static function getBasicJobIds():array
{
return [
self::ID_BASIC_JOB,
self::ID_BASIC_BRIGAD,
self::ID_BASIC_INTERNSHIP,
];
}
public static function getTypeChoices(): array
{
return [
self::TYPE_FULL_TIME => 'Full time',
self::TYPE_PART_TIME => 'Part time',
self::TYPE_BRIGADE => 'Brigade',
self::TYPE_TRAINEE => 'Trainee',
self::TYPE_SUBCONTRACTOR => 'Sub contractor',
];
}
public static function getEntryTypeChoices(): array
{
return [
self::ENTRY_TYPE_ASAP => 'Immediate entry',
self::ENTRY_TYPE_BY_AGREEMENT => 'By agreement',
];
}
/**
* @var Language
*
* @ManyToOne(targetEntity="Language")
* @JoinColumn(name="language_id", referencedColumnName="id", nullable=true)
*/
private $language;
/**
* @var string
*
* @Column(name="title", type="string", length=256)
*/
private $title;
/**
* @var int
*
* @Column(name="type", type="integer")
*/
private $type = 0;
/**
* @var string
*
* @Column(name="short_description", type="text")
*/
private $shortDescription;
/**
* @var string
*
* @Column(name="requirements", type="text")
*/
private $requirements;
/**
* @var string
*
* @Column(name="offer", type="text")
*/
private $offer;
/**
* @var string
*
* @Column(name="signupLink", type="string", length=512)
*/
private $signupLink;
/**
* @var bool
*
* @Column(name="published", type="boolean")
*/
private $published = false;
/**
* @var bool
*
* @Column(name="available", type="boolean")
*/
private $available = false;
/**
* @var string
*
* @Column(name="cover_image_title", type="text", nullable=true)
*/
private $coverImageTitle;
/**
* @var string
*
* @Column(name="minimum_wage", type="string", length=24, nullable=true)
*/
private $minimumWage;
/**
* @var string
*
* @Column(name="maximum_wage", type="string", length=24, nullable=true)
*/
private $maximumWage;
/**
* @var string
*
* @Column(name="wage_description", type="text", nullable=true)
*/
private $wageDescription;
/**
* @var \DateTime
*
* @Column(name="available_until", type="datetime", nullable=true)
*/
private $availableUntil;
/**
* @var \DateTime
*
* @Column(name="work_start", type="datetime", nullable=true)
*/
private $workStart;
/**
* @var int
*
* @Column(name="entry_type", type="integer")
*/
private int $entryType = 1;
/**
* @var int
*
* @Column(name="sort_order", type="integer")
*/
private int $sortOrder = 0;
/**
* @return Language|null
*/
public function getLanguage(): ?Language
{
return $this->language;
}
/**
* @param Language|null $language
*/
public function setLanguage(?Language $language)
{
$this->language = $language;
}
/**
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* @param string $title
*/
public function setTitle($title)
{
$this->title = $title;
}
/**
* @return string
*/
public function getShortDescription()
{
return $this->shortDescription;
}
/**
* @param string $shortDescription
*/
public function setShortDescription($shortDescription)
{
$this->shortDescription = $shortDescription;
}
/**
* @return string
*/
public function getSignupLink()
{
return $this->signupLink;
}
/**
* @param string $signupLink
*/
public function setSignupLink($signupLink)
{
$this->signupLink = $signupLink;
}
/**
* @return bool
*/
public function isPublished()
{
return $this->published;
}
/**
* @param bool $published
*/
public function setPublished($published)
{
$this->published = $published;
}
/**
* @return bool
*/
public function isAvailable()
{
return $this->available;
}
/**
* @param bool $available
*/
public function setAvailable($available)
{
$this->available = $available;
}
/**
* @return int
*/
public function getType()
{
return $this->type;
}
/**
* @param int $type
*/
public function setType($type)
{
$this->type = $type;
}
/**
* @return string
*/
public function getRequirements()
{
return $this->requirements;
}
/**
* @param string $requirements
*/
public function setRequirements($requirements)
{
$this->requirements = $requirements;
}
/**
* @return string
*/
public function getOffer()
{
return $this->offer;
}
/**
* @param string $offer
*/
public function setOffer($offer)
{
$this->offer = $offer;
}
/**
* @return string
*/
public function getCoverImageTitle()
{
return $this->coverImageTitle;
}
/**
* @param string $coverImageTitle
*/
public function setCoverImageTitle($coverImageTitle)
{
$this->coverImageTitle = $coverImageTitle;
}
/**
* @return string
*/
public function getMinimumWage()
{
return $this->minimumWage;
}
/**
* @param string $minimumWage
*/
public function setMinimumWage($minimumWage)
{
$this->minimumWage = $minimumWage;
}
/**
* @return string
*/
public function getMaximumWage()
{
return $this->maximumWage;
}
/**
* @param string $maximumWage
*/
public function setMaximumWage($maximumWage)
{
$this->maximumWage = $maximumWage;
}
/**
* @return \DateTime
*/
public function getAvailableUntil()
{
return $this->availableUntil;
}
/**
* @param \DateTime $availableUntil
*/
public function setAvailableUntil($availableUntil)
{
$this->availableUntil = $availableUntil;
}
/**
* @return bool
*/
public function isActive()
{
return $this->isAvailable() && (is_null($this->getAvailableUntil()) || $this->getAvailableUntil() <= new \DateTime());
}
/**
* @return \DateTime
*/
public function getWorkStart()
{
return $this->workStart;
}
/**
* @param \DateTime $workStart
*/
public function setWorkStart($workStart)
{
$this->workStart = $workStart;
}
/**
* @return string|null
*/
public function getWageDescription(): ?string
{
return $this->wageDescription;
}
/**
* @param string|null $wageDescription
*/
public function setWageDescription(?string $wageDescription): void
{
$this->wageDescription = $wageDescription;
}
/**
* @return int
*/
public function getEntryType(): int
{
return $this->entryType;
}
/**
* @param int $entryType
*
* @return void
*/
public function setEntryType(int $entryType): void
{
$this->entryType = $entryType;
}
/**
* @return int
*/
public function getSortOrder(): int
{
return $this->sortOrder;
}
/**
* @param int $sortOrder
*
* @return void
*/
public function setSortOrder(int $sortOrder): void
{
$this->sortOrder = $sortOrder;
}
}