<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class OperatorQue extends Model
{
    protected $table = 'operator_que';
    protected $primaryKey = 'que_id';
    public $timestamps = true;

    protected $fillable = [
        'que_class',
        'user_id',
        'contract_id',
        'park_id',
        'que_comment',
        'que_status',
        'que_status_comment',
        'work_instructions',
        'operator_id',
    ];

    // 定数
     /** キュー種別 */
    public const QueClass = [
        1   => '本人確認（社会人）',
        2   => '本人確認（学生）',
        3   => 'タグ発送',
        4   => '予約告知通知',
        5   => '定期更新通知',
        6   => '返金処理',
        7   => '再発行リミット超過',
        8   => '支払い催促',
        9   => 'シール発行催促',
        10  => 'シール再発行',
        11  => '名寄せフリガナ照合エラー',
        12  => '本人確認（減免更新）',
        13  => '本人確認（学生更新）',
        101 => 'サーバーエラー',
        102 => 'プリンタエラー',
        103 => 'スキャナーエラー',
        104 => 'プリンタ用紙残少警告',
    ];

    /** キューステータス */
    public const QueStatus = [
        1 => 'キュー発生',
        2 => 'キュー作業中',
        3 => 'キュー作業済',
        4 => '返金済',
    ];

    public function getQueClassLabel(): string
    {
        return self::QueClass[$this->que_class] ?? 'キュー種別未設定';
    }

    public function getQueStatusLabel(): string
    {
        return self::QueStatus[$this->que_status] ?? (string)$this->que_status;
    }

    public function user()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function park()
    {
        return $this->belongsTo(Park::class, 'park_id');
    }

    public function contract()
    {
        return $this->belongsTo(Contract::class, 'contract_id');
    }

    public function operator()
    {
        return $this->belongsTo(User::class, 'operator_id');
    }

    public function getUser()  { return $this->user; }
    public function getPark()  { return $this->park; }
}
