dbmsv4/app/Entities/PaymentEntity.php
2026-02-05 17:06:32 +09:00

97 lines
2.5 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 array $nullableFields = [
'serviceinfo_uid',
'serverpartinfo_uid',
];
protected $attributes = [
'serviceinfo_uid' => null,
'serverpartinfo_uid' => null,
'title' => '',
'amount' => 0,
'billing' => "",
'billing_at' => "",
'billing_month' => 0,
'pay' => "",
'status' => '',
'content' => ''
];
public function __construct(array|null $data = null)
{
parent::__construct($data);
}
public function getUserUid(): int|null
{
return $this->user_uid ?? null;
}
public function getClientInfoUid(): int|null
{
return $this->clientinfo_uid ?? null;
}
public function getServiceInfoUid(): int|null
{
return $this->serviceinfo_uid ?? null;
}
public function getServerPartInfoUid(): int|null
{
return $this->serverpartinfo_uid ?? null;
}
//기본기능
public function getCustomTitle(): string
{
return sprintf("%s %s [%s]", $this->getTitle(), $this->getAmount(), $this->getBillingAt());
}
public function getBilling(): string
{
return $this->billing ?? "";
}
public function getAmount(): int
{
return $this->amount ?? 0;
}
public function getBillingAt(): string
{
return $this->billing_at ?? "";
}
public function getBillingMonth(): int
{
return $this->billing_month ?? 0;
}
public function getPay(): string|null
{
return $this->pay ?? null;
}
public function getContent(): string
{
return $this->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;
}
}