<?php

declare(strict_types=1);

namespace Kylin\Property\Models;

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

/**
 * 访客记录模型
 *
 * 依据《个人信息保护法》第四十二条：
 * 访客记录保留 90 天，到期自动清理。
 * 访客手机号需脱敏展示。
 *
 * @property int    $id
 * @property string $resident_id    住户 ID
 * @property string $visitor_name   访客姓名
 * @property string $visitor_phone  访客手机号（加密）
 * @property string $visitor_type   访客类型
 * @property string $visit_at       访问时间
 * @property string $leave_at       离开时间
 * @property string $purpose        访问目的
 */
class VisitorRecord extends BaseModel
{
    protected $table = 'kylin_property_visitor_records';

    protected $fillable = [
        'resident_id', 'visitor_name', 'visitor_phone',
        'visitor_type', 'visit_at', 'leave_at', 'purpose',
    ];

    protected $casts = [
        'visitor_phone' => 'encrypted',
        'visit_at' => 'datetime',
        'leave_at' => 'datetime',
    ];

    public function resident(): BelongsTo
    {
        return $this->belongsTo(Resident::class, 'resident_id');
    }
}