<?php
declare(strict_types=1);

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

final class UsertypeRequest extends FormRequest
{
    public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [
            // ソートオーダー：数値 / 必須
            'sort_order' => [
                'required',
                'integer',
            ],

            // 分類名1：文字列 / 必須 / 最大10文字
            'usertype_subject1' => [
                'required',
                'string',
                'min:1',
                'max:10',
            ],

            // 分類名2：文字列 / 必須 / 最大10文字
            'usertype_subject2' => [
                'required',
                'string',
                'min:1',
                'max:10',
            ],

            // 分類名3：文字列 / 任意 / 最大10文字
            'usertype_subject3' => [
                'nullable',
                'string',
                'max:10',
            ],

            // 印字名：文字列 / 任意 / 最大20文字
            'print_name' => [
                'nullable',
                'string',
                'max:20',
            ],

            // 適用料率：文字列 / 任意 / 最大10文字
            'usertype_money' => [
                'nullable',
                'string',
                'max:10',
            ],

            // 備考：文字列 / 任意 / 最大85文字
            'usertype_remarks' => [
                'nullable',
                'string',
                'max:85',
            ],
        ];
    }

    public function messages(): array
    {
        return [
            'sort_order.required'        => 'ソートオーダーは必須です。',
            'sort_order.integer'         => 'ソートオーダーは数値で入力してください。',

            'usertype_subject1.required' => '分類名1は必須です。',
            'usertype_subject1.max'      => '分類名1は10文字以内で入力してください。',

            'usertype_subject2.required' => '分類名2は必須です。',
            'usertype_subject2.max'      => '分類名2は10文字以内で入力してください。',

            'usertype_subject3.max'      => '分類名3は10文字以内で入力してください。',

            'print_name.max'             => '印字名は20文字以内で入力してください。',

            'usertype_money.max'         => '適用料率は10文字以内で入力してください。',

            'usertype_remarks.max'       => '備考は85文字以内で入力してください。',
        ];
    }
}
