<?php

namespace App\Models;

use Auth;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;

/**
 * 工单
 *
 * @property int                        $id
 * @property int                        $user_id    用户ID
 * @property int                        $admin_id   管理员ID
 * @property string                     $title      标题
 * @property string                     $content    内容
 * @property int                        $status     状态:0-待处理、1-已处理未关闭、2-已关闭
 * @property \Illuminate\Support\Carbon $created_at 创建时间
 * @property \Illuminate\Support\Carbon $updated_at 最后更新时间
 * @property-read \App\Models\User|null $admin
 * @property-read string                $status_label
 * @property-read \App\Models\User|null $user
 * @method static Builder|Ticket newModelQuery()
 * @method static Builder|Ticket newQuery()
 * @method static Builder|Ticket query()
 * @method static Builder|Ticket uid()
 * @method static Builder|Ticket whereAdminId($value)
 * @method static Builder|Ticket whereContent($value)
 * @method static Builder|Ticket whereCreatedAt($value)
 * @method static Builder|Ticket whereId($value)
 * @method static Builder|Ticket whereStatus($value)
 * @method static Builder|Ticket whereTitle($value)
 * @method static Builder|Ticket whereUpdatedAt($value)
 * @method static Builder|Ticket whereUserId($value)
 * @mixin \Eloquent
 */
class Ticket extends Model {
	protected $table = 'ticket';

	public function scopeUid($query) {
		return $query->whereUserId(Auth::id());
	}

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

	public function admin(): HasOne {
		return $this->hasOne(User::class, 'id', 'admin_id');
	}

	public function getStatusLabelAttribute(): string {
		switch($this->attributes['status']){
			case 0:
				$status_label = '<span class="badge badge-lg badge-success">'.trans('home.ticket_table_status_wait').'</span>';
				break;
			case 1:
				$status_label = '<span class="badge badge-lg badge-danger">'.trans('home.ticket_table_status_reply').'</span>';
				break;
			case 2:
				$status_label = '<span class="badge badge-lg badge-default">'.trans('home.ticket_table_status_close').'</span>';
				break;
			default:
				$status_label = '<span class="badge badge-lg badge-default"> 未知 </span>';
		}

		return $status_label;
	}
}