<?php

/**
 * 文件功能：用户信息付费查看请求验证器
 * 校验用户点击查看别人经验、金币、存款、魅力时提交的目标与信息类型。
 */

namespace App\Http\Requests;

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

/**
 * 类功能：验证付费查看用户隐藏信息的请求参数。
 */
class RevealProfileInfoRequest extends FormRequest
{
    /**
     * 授权所有已登录用户提交查看请求，具体可见性和扣费由控制器统一处理。
     */
    public function authorize(): bool
    {
        return true;
    }

    /**
     * 获取付费查看信息请求的验证规则。
     *
     * @return array<string, ValidationRule|array<mixed>|string>
     */
    public function rules(): array
    {
        return [
            'user_id' => ['required', 'integer', 'exists:users,id'],
            'asset' => ['required', 'string', Rule::in(['exp_num', 'jjb', 'bank_jjb', 'meili'])],
        ];
    }

    /**
     * 获取付费查看信息请求的中文验证提示。
     *
     * @return array<string, string>
     */
    public function messages(): array
    {
        return [
            'user_id.required' => '缺少要查看的用户。',
            'user_id.integer' => '要查看的用户无效。',
            'user_id.exists' => '要查看的用户不存在。',
            'asset.required' => '缺少要查看的信息类型。',
            'asset.in' => '要查看的信息类型无效。',
        ];
    }
}
