<?php
namespace App\Entity;
use App\Entity\Building;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use App\Entity\User;
/**
* @ORM\Entity(repositoryClass="App\Repository\ObligationRepository")
*/
class Obligation
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private int $id;
/**
* @ORM\Column(name="title", type="string", length=255, nullable=true)
*
*/
private string|null $title;
/**
* @Assert\Length(
* max = 255,
* maxMessage = "Tekst treba da ima maksimalno {{ limit }} karaktera."
* )
*
* @ORM\Column(name="text", type="string", length=255, nullable=true)
*
*/
private string|null $text;
/**
* @ORM\Column(name="date", type="datetime")
*/
private DateTime $date;
/**
* @ORM\Column(name="end", type="datetime", nullable=true)
*/
private DateTime|null $end;
/**
* @ORM\Column(name="done", type="boolean", nullable=true, options={"default" : false})
*/
private bool|null $done;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Building", cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="building_id", referencedColumnName="id", nullable=true, onDelete="CASCADE")
* })
*/
private Building|null $building;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="obligations")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
* })
*/
private User $user;
/**
* @ORM\Column(name="createdAt", type="datetime")
*/
private DateTime|null $createdAt;
/**
* @ORM\Column(name="createdBy", type="string", nullable=true)
*/
private string|null $createdBy;
/**
* @return string|null
*/
public function getCreatedBy(): ?string
{
return $this->createdBy;
}
public function __construct()
{
$this->setCreatedAt(new DateTime());
}
/**
* Get id
*
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @return string|null
*/
public function getTitle(): ?string
{
return $this->title;
}
/**
* @param string|null $title
*/
public function setTitle(?string $title): void
{
$this->title = $title;
}
/**
* @return string|null
*/
public function getText(): ?string
{
return $this->text;
}
/**
* @param string|null $text
*/
public function setText(?string $text): void
{
$this->text = $text;
}
/**
* @return DateTime
*/
public function getDate(): DateTime
{
return $this->date;
}
/**
* @param DateTime $date
*/
public function setDate(DateTime $date): void
{
$this->date = $date;
}
/**
* @return DateTime|null
*/
public function getEnd(): ?DateTime
{
return $this->end;
}
/**
* @param DateTime|null $end
*/
public function setEnd(?DateTime $end): void
{
$this->end = $end;
}
/**
* @return bool|null
*/
public function isDone(): ?bool
{
return $this->done;
}
/**
* @param bool|null $done
*/
public function setDone(?bool $done): void
{
$this->done = $done;
}
/**
* @return DateTime|null
*/
public function getCreatedAt(): ?DateTime
{
return $this->createdAt;
}
/**
* @param DateTime $createdAt
*/
public function setCreatedAt(DateTime $createdAt): void
{
$this->createdAt = $createdAt;
}
/**
* @return User
*/
public function getUser(): User
{
return $this->user;
}
/**
* @param User|null $user
*/
public function setUser(?User $user): void
{
$this->user = $user;
if (empty($this->createdBy)) {
if ($user) {
$this->createdBy = $user->getCreatedByValue();
}
}
}
public function __toString()
{
return (string) $this->getTitle();
}
/**
* @return Building|null
*/
public function getBuilding(): ?Building
{
return $this->building;
}
/**
* @param Building|null $building
*/
public function setBuilding(?Building $building): void
{
$this->building = $building;
}
}