<?php

namespace App\Entities\Customer;

use App\Models\Customer\ServiceModel;

class ServiceEntity extends CustomerEntity
{
    const PK = ServiceModel::PK;
    const TITLE = ServiceModel::TITLE;
    const DEFAULT_STATUS    = STATUS['AVAILABLE'];

    final public function  getClientInfoUID(): int|null
    {
        return $this->attributes['clientinfo_uid'] ?? null;
    }
    final public function  getServerInfoUID(): int|null
    {
        return $this->attributes['serverinfo_uid'] ?? null;
    }
    final public function  getPaymentUID(): string|null
    {
        return $this->attributes['payment_uid'] ?? null;
    }
    //기본기능용
    public function getCustomTitle(mixed $title = null): string
    {
        return sprintf("[%s]%s", $this->getCode(), $this->getTitle());
    }
    final public function getCode(): string
    {
        return $this->attributes['code'];
    }
    final public function getSite(): string
    {
        return $this->attributes['site'];
    }
    final public function getLocation(): string
    {
        return $this->attributes['location'];
    }
    final public function getBillingAt(): string
    {
        return $this->attributes['billing_at'];
    }
    //청구금액->기본:상면비+회선비+서버금액(price)+서버파트연결(월비용)-할인액
    final public function getSale(): int
    {
        return $this->attributes['sale'] ?? 0;
    }
    final public function getAmount(): int
    {
        return $this->attributes['amount'];
    }
    //상면비
    final public function getRack(): int
    {
        return $this->attributes['rack'];
    }
    //회선비
    final public function getLine(): int
    {
        return $this->attributes['line'];
    }
    final public function getStartAt(): string
    {
        return $this->attributes['start_at'];
    }
    public function getHistory(): string|null
    {
        return $this->attributes['history'] ?? null;
    }
}
