<?php

/**
 * 文件功能：前台每日签到请求校验
 *
 * 校验用户发起签到时携带的房间参数，避免脏 room_id 写入签到流水和聊天室通知。
 */

namespace App\Http\Requests;

use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;

/**
 * 类功能：校验每日签到领取接口的请求参数。
 */
class ClaimDailySignInRequest extends FormRequest
{
    /**
     * 方法功能：允许已登录聊天室用户发起签到请求。
     */
    public function authorize(): bool
    {
        return $this->user() !== null;
    }

    /**
     * 方法功能：返回每日签到领取参数校验规则。
     *
     * @return array<string, ValidationRule|array<mixed>|string>
     */
    public function rules(): array
    {
        return [
            'room_id' => ['nullable', 'integer', 'exists:rooms,id'],
        ];
    }

    /**
     * 方法功能：返回每日签到领取的中文错误提示。
     *
     * @return array<string, string>
     */
    public function messages(): array
    {
        return [
            'room_id.exists' => '当前聊天室不存在，请刷新页面后再签到。',
        ];
    }
}
