<?php

/**
 * 文件功能：百家乐下注记录模型
 *
 * 记录用户在某局中的押注信息、结算状态以及关联的买单活动。
 *
 * @author  ChatRoom Laravel
 *
 * @version 1.0.0
 */

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class BaccaratBet extends Model
{
    protected $fillable = [
        'round_id',
        'user_id',
        'loss_cover_event_id',
        'bet_type',
        'amount',
        'payout',
        'status',
    ];

    /**
     * 属性类型转换。
     */
    protected function casts(): array
    {
        return [
            'loss_cover_event_id' => 'integer',
            'amount' => 'integer',
            'payout' => 'integer',
        ];
    }

    /**
     * 关联局次。
     */
    public function round(): BelongsTo
    {
        return $this->belongsTo(BaccaratRound::class, 'round_id');
    }

    /**
     * 关联用户。
     */
    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }

    /**
     * 关联参与的百家乐买单活动。
     */
    public function lossCoverEvent(): BelongsTo
    {
        return $this->belongsTo(BaccaratLossCoverEvent::class, 'loss_cover_event_id');
    }

    /**
     * 获取押注类型中文名。
     */
    public function betTypeLabel(): string
    {
        return match ($this->bet_type) {
            'big' => '大',
            'small' => '小',
            'triple' => '豹子',
            default => '未知',
        };
    }
}
