<?php

namespace App\Entities\Customer;

use App\Models\Customer\ServiceModel;

class ServiceEntity extends CustomerEntity
{
    const PK = ServiceModel::PK;
    const TITLE = ServiceModel::TITLE;
    protected array $nullableFields = [
        'serverinfo_uid',
        'end_at'
    ];
    protected $attributes = [
        'serverinfo_uid' => null,
        'code' => '',
        'title' => '',
        'site' => '',
        'location' => '',
        'rack' => 0,
        'coupon_balance' => 0,
        'line' => 0,
        'billing_at' => '',
        'sale' => 0,
        'amount' => 0,
        'start_at' => '',
        'end_at' => null,
        'status' => '',
        'history' => ''
    ];
    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 getServerInfoUid(): int|null
    {
        return $this->serverinfo_uid ?? null;
    }
    //기본기능용
    public function getCode(): string
    {
        return $this->code ?? '';
    }
    public function getSite(): string
    {
        return $this->site ?? '';
    }
    public function getLocation(): string
    {
        return $this->location ?? '';
    }
    public function getBillingAt(): string
    {
        return $this->billing_at ?? '';
    }
    //청구금액->기본:상면비+회선비+서버금액(price)+서버파트연결(월비용)-할인액
    //상면비
    public function getRack(): int
    {
        return $this->rack ?? 0;
    }
    //회선비
    public function getLine(): int
    {
        return $this->line ?? 0;
    }
    public function getSale(): int
    {
        return $this->sale ?? 0;
    }
    public function getAmount(): int
    {
        return $this->amount ?? 0;
    }
    public function getStartAt(): string
    {
        return $this->start_at ?? '';
    }
    public function getEndAt(): string|null
    {
        return $this->end_at ?? null;
    }
    public function getHistory(): string
    {
        return $this->history ?? '';
    }
}
