<?php
namespace App\Entity;
use App\Entity\Base\AbstractTimestampableEntity;
use App\Repository\AnualLeaveRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Mapping\ClassMetadata;
use Symfony\Component\Validator\Constraints\GreaterThanOrEqual;
/**
* @ORM\Entity(repositoryClass=AnualLeaveRepository::class)
* @ORM\HasLifecycleCallbacks
*/
class AnualLeave extends AbstractTimestampableEntity
{
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $description;
/**
* @ORM\Column(type="date")
*/
private $startDate;
/**
* @ORM\Column(type="date")
*/
private $endDate;
/**
* @ORM\ManyToOne(targetEntity=AnualLeaveType::class, inversedBy="anualLeaves")
* @ORM\JoinColumn(nullable=false)
*/
private $anualLeaveType;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="userAnualLeavs")
*/
private $userOnHoliday;
/**
* @ORM\Column(type="boolean",options={"default":false})
*/
private bool $deleted = false;
/**
* @ORM\Column(type="boolean",options={"default":false})
*/
private bool $accepted = false;
/**
* Nem mozgatható nap (pl. hétvégi hivatalos szabadnap)
* @ORM\Column(type="boolean", options={"default":false})
*/
private bool $fixed = false;
/**
* Kapcsolat a hivatalos szabadnappal (ha generálásból jött)
* @ORM\ManyToOne(targetEntity=OfficialHoliday::class)
* @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
*/
private ?OfficialHoliday $officialHoliday = null;
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getDescription(): ?string
{
return $this->description;
}
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
public function getStartDate(): ?\DateTimeInterface
{
return $this->startDate;
}
public function setStartDate(\DateTimeInterface $startDate): self
{
$this->startDate = $startDate;
return $this;
}
public function getEndDate(): ?\DateTimeInterface
{
return $this->endDate;
}
public function setEndDate(\DateTimeInterface $endDate): self
{
$this->endDate = $endDate;
return $this;
}
public function getAnualLeaveType(): ?AnualLeaveType
{
return $this->anualLeaveType;
}
public function setAnualLeaveType(?AnualLeaveType $anualLeaveType): self
{
$this->anualLeaveType = $anualLeaveType;
return $this;
}
public function getUserOnHoliday()
{
return $this->userOnHoliday;
}
public function setUserOnHoliday($userOnHoliday): self
{
$this->userOnHoliday = $userOnHoliday;
return $this;
}
public static function loadValidatorMetadata(ClassMetadata $metadata): void
{
$metadata->addPropertyConstraint('endDate',
new Assert\GreaterThanOrEqual([
'propertyPath' => 'startDate',
'message' => 'A végdátumnak nagyobbnak vagy egyenlőnek kell lennie a kezdeti dátummal.']));
}
public function __toString(): string
{
return $this->getName();
}
public function isDeleted(): bool
{
return $this->deleted;
}
public function setDeleted(bool $deleted): self
{
$this->deleted = $deleted;
return $this;
}
public function isAccepted(): bool
{
return $this->accepted;
}
public function setAccepted(bool $accepted): self
{
$this->accepted = $accepted;
return $this;
}
public function isFixed(): bool
{
return $this->fixed;
}
public function setFixed(bool $fixed): self
{
$this->fixed = $fixed;
return $this;
}
public function getOfficialHoliday(): ?OfficialHoliday
{
return $this->officialHoliday;
}
public function setOfficialHoliday(?OfficialHoliday $officialHoliday): self
{
$this->officialHoliday = $officialHoliday;
return $this;
}
}