<?php
// +----------------------------------------------------------------------
// | saiadmin [ saiadmin快速开发框架 ]
// +----------------------------------------------------------------------
// | Author: your name
// +----------------------------------------------------------------------
namespace app\dice\model\player_ticket_record;

use app\dice\model\player\DicePlayer;
use app\dice\model\DiceModel;
use think\model\relation\BelongsTo;

/**
 * 抽奖券获取记录模型
 *
 * dice_player_ticket_record 抽奖券获取记录
 *
 * @property  $id ID
 * @property  $player_id 玩家id
 * @property  $admin_id 关联玩家所属管理员ID（DicePlayer.admin_id）
 * @property  $use_coins 消耗硬币
 * @property  $ante 底注/注数（历史购买记录默认为1；T5再来一次写入本次注数）
 * @property  $total_ticket_count 总抽奖次数
 * @property  $paid_ticket_count 购买抽奖次数
 * @property  $free_ticket_count 赠送抽奖次数
 * @property  $remark 备注
 * @property  $create_time 创建时间
 * @property  $update_time 修改时间
 */
class DicePlayerTicketRecord extends DiceModel
{
    /**
     * 数据表主键
     * @var string
     */
    protected $pk = 'id';

    /**
     * 数据库表名称
     * @var string
     */
    protected $table = 'dice_player_ticket_record';

    /**
     * 关联模型 dicePlayer
     */
    public function dicePlayer(): BelongsTo
    {
        return $this->belongsTo(DicePlayer::class, 'player_id', 'id');
    }

    /**
     * 按关联玩家用户名搜索（dicePlayer.username）
     */
    public function searchUsernameAttr($query, $value)
    {
        if ($value === '' || $value === null) {
            return;
        }
        $playerIds = DicePlayer::where('username', 'like', '%' . $value . '%')->column('id');
        if (!empty($playerIds)) {
            $query->whereIn('player_id', $playerIds);
        } else {
            $query->whereRaw('1=0');
        }
    }

    /** 消耗硬币下限 */
    public function searchUseCoinsMinAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('use_coins', '>=', $value);
        }
    }

    /** 消耗硬币上限 */
    public function searchUseCoinsMaxAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('use_coins', '<=', $value);
        }
    }

    /** 总抽奖次数(total_ticket_count)下限 */
    public function searchTotalTicketCountMinAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('total_ticket_count', '>=', $value);
        }
    }

    /** 总抽奖次数(total_ticket_count)上限 */
    public function searchTotalTicketCountMaxAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('total_ticket_count', '<=', $value);
        }
    }

    /** 购买抽奖次数(paid_ticket_count)下限 */
    public function searchPaidTicketCountMinAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('paid_ticket_count', '>=', $value);
        }
    }

    /** 购买抽奖次数(paid_ticket_count)上限 */
    public function searchPaidTicketCountMaxAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('paid_ticket_count', '<=', $value);
        }
    }

    /** 赠送抽奖次数(free_ticket_count)下限 */
    public function searchFreeTicketCountMinAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('free_ticket_count', '>=', $value);
        }
    }

    /** 赠送抽奖次数(free_ticket_count)上限 */
    public function searchFreeTicketCountMaxAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('free_ticket_count', '<=', $value);
        }
    }

    /** 创建时间起始 */
    public function searchCreateTimeMinAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('create_time', '>=', $value);
        }
    }

    /** 创建时间结束 */
    public function searchCreateTimeMaxAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('create_time', '<=', $value);
        }
    }

    /** 底注/注数（ante） */
    public function searchAnteAttr($query, $value)
    {
        if ($value !== '' && $value !== null) {
            $query->where('ante', '=', $value);
        }
    }
}
