<?php

declare(strict_types=1);

namespace Kylin\Pet\Models;

use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Kylin\Core\Models\BaseModel;

/**
 * 宠物寄养记录
 *
 * 依据 GB/T 45204-2024《宠物寄养服务规范》：
 * - 第 6.1 条：消毒记录保留 ≥ 2 年
 * - 第 6.2 条：寄养前需进行健康检查
 * - 第 7 条：三级分区管理（健康区/观察区/隔离区）
 *
 * @property int    $id
 * @property int    $pet_id         宠物 ID
 * @property string $check_in_at    入住时间
 * @property string $check_out_at   退房时间
 * @property string $zone           分区（healthy/observation/isolation）
 * @property string $health_check   健康检查记录
 * @property string $daily_log      每日照护日志
 * @property string $status         状态
 */
class PetBoarding extends BaseModel
{
    protected $table = 'kylin_pet_boarding';

    protected $fillable = [
        'pet_id', 'check_in_at', 'check_out_at',
        'zone', 'health_check', 'daily_log', 'status',
    ];

    protected $casts = [
        'check_in_at' => 'datetime',
        'check_out_at' => 'datetime',
        'daily_log' => 'encrypted',
    ];

    public function pet(): BelongsTo
    {
        return $this->belongsTo(Pet::class, 'pet_id');
    }

    /**
     * 消毒记录
     */
    public function disinfectionLogs(): HasMany
    {
        return $this->hasMany(PetDisinfectionLog::class, 'boarding_id');
    }
}