<?php
namespace App\Entity;
use App\Repository\PaymentLogRepository;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=PaymentLogRepository::class)
*/
class PaymentLog
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=Guardian::class, inversedBy="paymentLogs")
*/
private $guardian;
/**
* @ORM\ManyToOne(targetEntity=Lesson::class, inversedBy="paymentLogs")
* @ORM\JoinColumn(name="lesson_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
private $lesson;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $amount;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateAdd;
/**
* @ORM\ManyToOne(targetEntity=Child::class, inversedBy="paymentLogs")
*/
private $child;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $dateFor;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $info;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $duration;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $startTime;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $endTime;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $status;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $discipline;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $discountType;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $discountPercent;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $amountWithoutDiscounts;
public function __construct()
{
$this->dateAdd = new \DateTime();
}
public function getId(): ?int
{
return $this->id;
}
public function getGuardian(): ?Guardian
{
return $this->guardian;
}
public function setGuardian(?Guardian $guardian): self
{
$this->guardian = $guardian;
return $this;
}
public function getLesson(): ?Lesson
{
return $this->lesson;
}
public function setLesson(?Lesson $lesson): self
{
$this->lesson = $lesson;
return $this;
}
public function getAmount(): ?float
{
return $this->amount;
}
public function setAmount(?float $amount): self
{
$this->amount = $amount;
return $this;
}
public function getDateAdd(): ?\DateTimeInterface
{
return $this->dateAdd;
}
public function setDateAdd(?\DateTimeInterface $dateAdd): self
{
$this->dateAdd = $dateAdd;
return $this;
}
public function getChild(): ?Child
{
return $this->child;
}
public function setChild(?Child $child): self
{
$this->child = $child;
return $this;
}
public function getDateFor(): ?\DateTimeInterface
{
return $this->dateFor;
}
public function setDateFor(?\DateTimeInterface $dateFor): self
{
$this->dateFor = $dateFor;
return $this;
}
public function getInfo(): ?string
{
return $this->info;
}
public function setInfo(?string $info): self
{
$this->info = $info;
return $this;
}
public function getDuration(): ?int
{
return $this->duration;
}
public function setDuration(?int $duration): self
{
$this->duration = $duration;
return $this;
}
public function getStartTime(): ?\DateTimeInterface
{
return $this->startTime;
}
public function setStartTime(?\DateTimeInterface $startTime): self
{
$this->startTime = $startTime;
return $this;
}
public function getEndTime(): ?\DateTimeInterface
{
return $this->endTime;
}
public function setEndTime(?\DateTimeInterface $endTime): self
{
$this->endTime = $endTime;
return $this;
}
public function getStatus(): ?string
{
$text = $this->status;
foreach (Lesson::STATUSES as $STATUS)
{
if($STATUS['value'] == $this->status)
{
$text = $STATUS['text'];
}
}
if(!$this->lesson && $this->amount > 0)
{
return 'Sumokėta už anuliuotą pamoką';
}
if(!$this->lesson && $this->amount < 0)
{
return 'Pamokos anuliavimas';
}
return $text;
}
public function setStatus(?string $status): self
{
foreach (Lesson::STATUSES as $STATUS)
{
if($STATUS['text'] == $status)
{
$status = $STATUS['value'];
}
}
$this->status = $status;
return $this;
}
public function getDisciplineFull(): ?string
{
$disciplines = ['MAT' => 'Matematika',
'LT' => 'Lietuvių k.',
'ANG' => 'Anglu k.',
'FIZ' => 'Fizika',
'CHE' => 'Chemija',
'BIO' => 'Biologija',
'IST' => 'Istorija',
'IT' => 'Informatika',
'VOK' => 'Vokiečių k.',
'FRA' => 'Prancūzų k.',
'RU' => 'Rusų k.',
'GEO' => 'Geografija',
'ISP' => 'Ispanų k.',
];
if (isset($disciplines[$this->discipline])) {
return $disciplines[$this->discipline];
}
return $this->discipline;
}
public function getDiscipline(): ?string
{
return $this->discipline;
}
public function setDiscipline(?string $discipline): self
{
$this->discipline = $discipline;
return $this;
}
public function getStatusColor(): ?string
{
$color = "";
foreach (Lesson::ALL_STATUSES as $STATUS)
{
if($STATUS['value'] == $this->status)
{
$color = $STATUS['color'];
}
}
if(!$this->lesson)
{
return '#AAB7B8';
}
return $color;
}
public function getDiscountType(): ?string
{
return $this->discountType;
}
public function setDiscountType(?string $discountType): self
{
$this->discountType = $discountType;
return $this;
}
public function getDiscountPercent(): ?float
{
return $this->discountPercent;
}
public function setDiscountPercent(?float $discountPercent): self
{
$this->discountPercent = $discountPercent;
return $this;
}
public function getAmountWithoutDiscounts(): ?float
{
return $this->amountWithoutDiscounts;
}
public function setAmountWithoutDiscounts(?float $amountWithoutDiscounts): self
{
$this->amountWithoutDiscounts = $amountWithoutDiscounts;
return $this;
}
}