<?php
namespace App\Entity;
use App\Entity\Building;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\Validator\Constraints as Assert;
/**
* BuildingDictionary
*
* @ORM\Table(name="building_dictionary")
* @ORM\Entity(repositoryClass="App\Repository\BuildingDictionaryRepository")
*/
class BuildingDictionary
{
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private int $id;
/**
* @ORM\Column(name="name", type="string", length=255)
*/
private string $name;
/**
* @ORM\Column(name="createdAt", type="datetime")
*/
private DateTime|null $createdAt;
/**
* @ORM\Column(name="updatedAt", type="datetime", nullable=true)
*/
private DateTime|null $updatedAt;
/**
* @ORM\Column(type="string", nullable=true)
* @Assert\File(mimeTypes={ "application/pdf" })
*/
private File|string|null $contract;
/**
* @ORM\ManyToOne(targetEntity="Building", inversedBy="buildingDictionaries", cascade={"persist"})
* @ORM\JoinColumn(name="building_id", referencedColumnName="id", onDelete="CASCADE")
*/
private Building $building;
/**
* @ORM\Column(name="createdBy", type="string", nullable=true)
*/
private string|null $createdBy;
/**
* @ORM\Column(name="selectedDate", type="datetime", nullable=true)
*/
private DateTime|null $selectedDate;
/**
* @ORM\Column(name="enteredUser", type="string", length=100, nullable=true)
*/
private string|null $enteredUser;
/**
* @var string
*
* @ORM\Column(name="type", type="string", length=255)
*/
private string $type;
/**
* @var string
*
* @Assert\Length(
* max = 1024,
* maxMessage = "Opis treba da ima maksimalno {{ limit }} karaktera."
* )
*
* @ORM\Column(name="notes", type="string", length=1024)
*/
private string $notes;
/**
* @return string
*/
public function getCreatedBy(): string
{
return $this->createdBy;
}
/**
* @return Building
*/
public function getBuilding(): Building
{
return $this->building;
}
/**
* @param Building $building
*/
public function setBuilding(Building $building): void
{
$this->building = $building;
if (empty($this->createdBy)) {
$user = $building->getUser();
$this->createdBy = $user->getCreatedByValue();
}
}
/**
* @return string
*/
public function getType(): string
{
return $this->type;
}
/**
* @param string $type
*/
public function setType(string $type): void
{
$this->type = $type;
}
/**
* @return string
*/
public function getNotes(): string
{
return $this->notes;
}
/**
* @param string $notes
*/
public function setNotes(string $notes): void
{
$this->notes = $notes;
}
public function __construct()
{
$this->setCreatedAt(new DateTime());
$this->setUpdatedAt(new DateTime());
$this->enteredUser = null;
$this->contract = null;
}
/**
* @ORM\PreUpdate
*/
public function setUpdateAtValue(): void
{
$this->updatedAt = new \DateTime();
}
/**
* Get id
*
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param string $name
*
* @return $this
*/
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
/**
* Get name
*
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
* Set createdAt
*
* @param DateTime|null $createdAt
*
* @return BuildingDictionary
*/
public function setCreatedAt(?DateTime $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return DateTime|null
*/
public function getCreatedAt(): ?DateTime
{
return $this->createdAt;
}
/**
* @param DateTime|null $updatedAt
* @return BuildingDictionary
*/
public function setUpdatedAt(?DateTime $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
/**
* @return DateTime|null
*/
public function getUpdatedAt(): ?DateTime
{
return $this->updatedAt;
}
/**
* @param File|string|null $contract
* @return BuildingDictionary
*/
public function setContract(File|string|null $contract): BuildingDictionary
{
$this->contract = $contract;
return $this;
}
/**
* @return File|string|null
*/
public function getContract(): File|string|null
{
return $this->contract;
}
/**
* @return DateTime|null
*/
public function getSelectedDate(): ?DateTime
{
return $this->selectedDate;
}
/**
* @param DateTime|null $selectedDate
*/
public function setSelectedDate(?DateTime $selectedDate): void
{
$this->selectedDate = $selectedDate;
}
/**
* @return string|null
*/
public function getEnteredUser(): ?string
{
return $this->enteredUser;
}
/**
* @param string|null $enteredUser
*/
public function setEnteredUser(?string $enteredUser): void
{
$this->enteredUser = $enteredUser;
}
public function __toString()
{
return (string) $this->getName();
}
}