<?php

namespace App\Http\Requests;

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

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

    public function rules(): array
    {
        return [
            'name_bn'   => ['required', 'string', 'max:150'],
            'name_en'   => ['nullable', 'string', 'max:150'],

            'seat_code' => [
                'nullable',
                'string',
                'max:60',
                Rule::unique('seats', 'seat_code'),
            ],

            'seat_type' => [
                'required',
                'string',
                Rule::in(['parliament', 'local', 'city_corp', 'pouroshova', 'union']),
            ],

            // location (form has these)
            'district_id' => ['required', 'integer', 'exists:districts,id'],
            'upazila_id'  => ['nullable', 'integer', 'exists:upazilas,id'],
            'city_id'     => ['nullable', 'integer', 'exists:cities,id'],

            // voters
            'male_voters'   => ['nullable', 'integer', 'min:0'],
            'female_voters' => ['nullable', 'integer', 'min:0'],
            'other_voters'  => ['nullable', 'integer', 'min:0'],
            'total_voters'  => ['nullable', 'integer', 'min:0'],

            'description' => ['nullable', 'string'],

            'status' => ['nullable', Rule::in(['active', 'inactive'])],
        ];
    }

    public function messages(): array
    {
        return [
            'name_bn.required' => 'সীটের বাংলা নাম দিন',

            'seat_type.required' => 'সীটের ধরন নির্বাচন করুন',
            'seat_type.in'       => 'সীটের ধরন সঠিক নয়',

            'district_id.required' => 'জেলা নির্বাচন করুন',
            'district_id.exists'   => 'নির্বাচিত জেলা সঠিক নয়',

            'upazila_id.exists' => 'নির্বাচিত উপজেলা সঠিক নয়',
            'city_id.exists'    => 'নির্বাচিত সিটি সঠিক নয়',

            'seat_code.unique' => 'এই সীট কোড ইতিমধ্যে ব্যবহৃত হয়েছে',

            'status.in' => 'স্ট্যাটাস সঠিক নয়',
        ];
    }
}
