<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

/**
 * 設定マスタモデル - settingテーブル
 * 
 * システム全体の設定情報を管理するモデル
 */
class Setting extends Model
{
    /**
     * テーブル名
     *
     * @var string
     */
    protected $table = 'setting';

    /**
     * プライマリキー
     *
     * @var string
     */
    protected $primaryKey = 'setting_id';

    /**
     * タイムスタンプ使用
     *
     * @var bool
     */
    public $timestamps = true;

    const CREATED_AT = 'created_at';
    const UPDATED_AT = 'updated_at';

    /**
     * 一括代入可能な属性
     *
     * @var array
     */
    protected $fillable = [
        'edit_master',
        'web_master',
        'auto_change_date',
        'auto_chage_master',
        're-issue_alert_number',
        'image_base_url1',
        'image_base_url2',
        'printable_alert_flag',
        'printable_number',
        'printable_alert_number',
        'printer_keep_alive',
        'operator_id'
    ];

    /**
     * キャストする属性
     *
     * @var array
     */
    protected $casts = [
        'setting_id' => 'integer',
        'printable_alert_flag' => 'boolean',
        'printable_number' => 'integer',
        'printable_alert_number' => 'integer',
        'printer_keep_alive' => 'integer',
        'operator_id' => 'integer',
        'auto_change_date' => 'datetime',
        'created_at' => 'datetime',
        'updated_at' => 'datetime'
    ];

    /**
     * 設定情報を取得（通常はID=1の単一レコード）
     * 
     * @return Setting|null
     */
    public static function getSettings(): ?Setting
    {
        return self::first();
    }
}

