87 lines
2.3 KiB
PHP
87 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Entities;
|
|
|
|
use App\Models\PaymentModel;
|
|
use DateTime;
|
|
|
|
class PaymentEntity extends CommonEntity
|
|
{
|
|
const PK = PaymentModel::PK;
|
|
const TITLE = PaymentModel::TITLE;
|
|
protected $attributes = [
|
|
'title' => '',
|
|
'amount' => 0,
|
|
'billing' => "",
|
|
'billing_at' => "",
|
|
'billing_month' => 0,
|
|
'pay' => "",
|
|
'status' => STATUS['AVAILABLE'],
|
|
'content' => ''
|
|
];
|
|
public function __construct(array|null $data = null)
|
|
{
|
|
parent::__construct($data);
|
|
}
|
|
final public function getUserUid(): int|null
|
|
{
|
|
return $this->attributes['user_uid'] ?? null;
|
|
}
|
|
final public function getClientInfoUid(): int|null
|
|
{
|
|
return $this->attributes['clientinfo_uid'] ?? null;
|
|
}
|
|
final public function getServiceInfoUid(): int|null
|
|
{
|
|
return $this->attributes['serviceinfo_uid'] ?? null;
|
|
}
|
|
//기본기능
|
|
public function getCustomTitle(): string
|
|
{
|
|
return sprintf("%s %s [%s]", $this->getTitle(), $this->getAmount(), $this->getBillingAt());
|
|
}
|
|
public function getBilling(): string
|
|
{
|
|
return $this->attributes['billing'] ?? "";
|
|
}
|
|
public function getAmount(): int
|
|
{
|
|
return $this->attributes['amount'] ?? 0;
|
|
}
|
|
public function getBillingAt(): string
|
|
{
|
|
return $this->attributes['billing_at'] ?? "";
|
|
}
|
|
public function getBillingMonth(): int
|
|
{
|
|
return $this->attributes['billing_month'] ?? 0;
|
|
}
|
|
public function getPay(): string
|
|
{
|
|
return $this->attributes['pay'] ?? "";
|
|
}
|
|
public function getContent(): string
|
|
{
|
|
return $this->attributes['content'] ?? "";
|
|
}
|
|
public function getCountDueAt(): string
|
|
{
|
|
$result = "";
|
|
if ($this->getStatus() === STATUS['UNPAID']) {
|
|
$now = new DateTime(); // 오늘 날짜
|
|
$due = new DateTime($this->getBillingAt());
|
|
if ($due < $now) {
|
|
$interval = $due->diff($now);
|
|
$result = "{$interval->days}일지남";
|
|
} else if ($due > $now) {
|
|
$interval = $now->diff($due);
|
|
$day = $interval->days + 1;
|
|
$result = "{$day}일전";
|
|
} else {
|
|
$result = "당일";
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
}
|