<?php

declare(strict_types=1);

namespace Kylin\Parking\Models;

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

/**
 * 停车记录模型
 *
 * 依据《个人信息保护法》第六条、第四十二条：
 * 车牌号属于个人信息，需加密存储，支持删除。
 *
 * @property int    $id
 * @property int    $lot_id         停车场 ID
 * @property string $plate_no       车牌号（加密存储）
 * @property string $entry_at       入场时间
 * @property string $exit_at        出场时间
 * @property int    $duration_minutes 停车时长（分钟）
 * @property int    $fee            费用（分）
 * @property string $pay_method     支付方式
 * @property string $status         状态
 */
class ParkingRecord extends BaseModel
{
    protected $table = 'kylin_parking_records';

    protected $fillable = [
        'lot_id', 'plate_no', 'entry_at', 'exit_at',
        'duration_minutes', 'fee', 'pay_method', 'status',
    ];

    protected $casts = [
        'entry_at' => 'datetime',
        'exit_at' => 'datetime',
        'duration_minutes' => 'integer',
        'fee' => 'integer',
        'plate_no' => 'encrypted',
    ];

    public function parkingLot(): BelongsTo
    {
        return $this->belongsTo(ParkingLot::class, 'lot_id');
    }
}