<?php

/**
 * 文件功能：百家乐买单活动创建请求
 *
 * 负责校验聊天室管理员在前台创建买单活动时提交的时间与文案字段。
 */

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreBaccaratLossCoverEventRequest extends FormRequest
{
    /**
     * 判断当前用户是否允许提交创建请求。
     */
    public function authorize(): bool
    {
        return $this->user() !== null;
    }

    /**
     * 获取字段校验规则。
     *
     * @return array<string, array<int, string>>
     */
    public function rules(): array
    {
        return [
            'title' => ['required', 'string', 'max:100'],
            'description' => ['nullable', 'string', 'max:500'],
            'starts_at' => ['required', 'date'],
            'ends_at' => ['required', 'date', 'after:starts_at'],
            'claim_deadline_at' => ['required', 'date', 'after_or_equal:ends_at'],
        ];
    }

    /**
     * 获取中文错误提示。
     *
     * @return array<string, string>
     */
    public function messages(): array
    {
        return [
            'title.required' => '请输入活动标题',
            'starts_at.required' => '请选择活动开始时间',
            'ends_at.required' => '请选择活动结束时间',
            'ends_at.after' => '活动结束时间必须晚于开始时间',
            'claim_deadline_at.required' => '请选择领取截止时间',
            'claim_deadline_at.after_or_equal' => '领取截止时间不能早于活动结束时间',
        ];
    }
}
