<?php
namespace App\Entity;
use App\Entity\Flat;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
/**
* FlatWarning
*
* @ORM\Table(name="flat_warning")
* @ORM\Entity(repositoryClass="App\Repository\FlatWarningRepository")
* @ORM\HasLifecycleCallbacks()
*/
class FlatWarning
{
public const GENERIC = 0;
public const CUSTOM = 1;
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private int $id;
/**
* @ORM\Column(name="sumDebit", type="float")
*/
private float $sumDebit;
/**
* @ORM\Column(name="lastBill", type="float", nullable = true)
*/
private float|null $lastBill;
/**
* @ORM\Column(name="log", type="text", nullable = true)
*/
private string|null $log;
/**
* @ORM\Column(name="created_at", type="datetime")
*/
private DateTime|null $createdAt = null;
/**
* @ORM\Column(name="updated_at", type="datetime")
*/
private DateTime|null $updatedAt;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Flat", inversedBy="flatWarnings")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="flat_id", referencedColumnName="id", nullable=false, onDelete="CASCADE")
* })
*/
private Flat $flat;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
* })
*/
private User $user;
/**
* @ORM\Column(name="createdBy", type="string", nullable=true)
*/
private string|null $createdBy;
/**
* @ORM\Column(name="custom_warning", type="integer", nullable=true, options={"default" : 0})
*/
private int|null $customWarning;
/**
* @ORM\Column(name="comment", length=512, type="string", nullable=true)
*/
private string|null $comment = null;
/**
* @ORM\Column(name="start_date", type="datetime", nullable=true)
*/
private DateTime|null $startDate = null;
/**
* @ORM\Column(name="end_date", type="datetime", nullable=true)
*/
private DateTime|null $endDate = null;
/**
* @ORM\Column(name="days_number", type="integer" , nullable=true)
*/
private int|null $daysNumber = null;
/**
* @ORM\Column(name="include_old_debit", type="boolean")
*/
private bool $includeOldDebit = false;
/**
* FlatWarning constructor.
*/
public function __construct()
{
$this->incrementCreatedAt();
}
/**
* @return DateTime|null
*/
public function getCreatedAt(): ?DateTime
{
return $this->createdAt;
}
/**
* @return DateTime|null
*/
public function getUpdatedAt(): ?DateTime
{
return $this->updatedAt;
}
/**
* @ORM\PrePersist
*/
public function incrementCreatedAt(): void
{
if (null === $this->createdAt) {
$this->createdAt = new DateTime();
}
$this->updatedAt = new DateTime();
}
/**
* @ORM\PreUpdate
*/
public function incrementUpdatedAt(): void
{
$this->updatedAt = new DateTime();
}
/**
* Set createdAt
*
* @param DateTime $createdAt
*/
public function setCreatedAt(DateTime $createdAt): void
{
$this->createdAt = $createdAt;
}
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue(): void
{
$this->createdAt = new DateTime();
}
/**
* Set updatedAt
*
* @param DateTime $updatedAt
*/
public function setUpdatedAt(DateTime $updatedAt): void
{
$this->updatedAt = $updatedAt;
}
/**
* Get id
*
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* Set sumDebit
*
* @param float $sumDebit
*
* @return FlatWarning
*/
public function setSumDebit(float $sumDebit): FlatWarning
{
$this->sumDebit = $sumDebit;
return $this;
}
/**
* Get sumDebit
*
* @return float
*/
public function getSumDebit(): float
{
return $this->sumDebit;
}
/**
* Set lastBill
*
* @param float|null $lastBill
*
* @return FlatWarning
*/
public function setLastBill(?float $lastBill): FlatWarning
{
$this->lastBill = $lastBill;
return $this;
}
/**
* Get lastBill
*
* @return float|null
*/
public function getLastBill(): ?float
{
return $this->lastBill;
}
/**
* Set log
*
* @param string|null $log
*
* @return FlatWarning
*/
public function setLog(?string $log): FlatWarning
{
$this->log = $log;
return $this;
}
/**
* Get log
*
* @return string|null
*/
public function getLog(): ?string
{
return $this->log;
}
/**
* @return Flat
*/
public function getFlat(): Flat
{
return $this->flat;
}
/**
* @param Flat $flat
*/
public function setFlat(Flat $flat): void
{
$this->flat = $flat;
}
/**
* @return User
*/
public function getUser(): User
{
return $this->user;
}
/**
* @param User $user
*/
public function setUser(User $user): void
{
$this->user = $user;
if (empty($this->createdBy)) {
$this->createdBy = $user->getCreatedByValue();
}
}
/**
* @return string|null
*/
public function getCreatedBy(): ?string
{
return $this->createdBy;
}
/**
* @param string|null $createdBy
*/
public function setCreatedBy(?string $createdBy): void
{
$this->createdBy = $createdBy;
}
/**
* @return int|null
*/
public function getCustomWarning(): ?int
{
return $this->customWarning;
}
/**
* @param int|null $customWarning
*/
public function setCustomWarning(?int $customWarning): void
{
$this->customWarning = $customWarning;
}
/**
* @return string|null
*/
public function getComment(): ?string
{
return $this->comment;
}
/**
* @param string|null $comment
*/
public function setComment(?string $comment): void
{
$this->comment = $comment;
}
/**
* @return DateTime|null
*/
public function getStartDate(): ?DateTime
{
return $this->startDate;
}
/**
* @param DateTime|null $startDate
*/
public function setStartDate(?DateTime $startDate): void
{
$this->startDate = $startDate;
}
/**
* @return DateTime|null
*/
public function getEndDate(): ?DateTime
{
return $this->endDate;
}
/**
* @param DateTime|null $endDate
*/
public function setEndDate(?DateTime $endDate): void
{
$this->endDate = $endDate;
}
/**
* @return int|null
*/
public function getDaysNumber(): ?int
{
return $this->daysNumber;
}
/**
* @param int|null $daysNumber
*/
public function setDaysNumber(?int $daysNumber): void
{
$this->daysNumber = $daysNumber;
}
public function __toString()
{
return (string) $this->getComment();
}
/**
* @return bool
*/
public function getIncludeOldDebit(): bool
{
return $this->includeOldDebit;
}
/**
* @param bool $includeOldDebit
*/
public function setIncludeOldDebit(bool $includeOldDebit): void
{
$this->includeOldDebit = $includeOldDebit;
}
}