<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

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

    public function rules(): array
    {
        return [
            'slug' => ['required', 'string', 'max:255', 'unique:candidates,slug'],

            'user_id' => ['required', 'exists:users,id'],
            'seat_id' => ['required', 'exists:seats,id'],

            'party_name' => ['required', 'string', 'max:255'],
            'symbol_name' => ['required', 'string', 'max:255'],

            'photo' => ['nullable', 'image', 'max:4096'],
            'symbol_photo' => ['nullable', 'image', 'max:4096'],

            // User inputs one nid_number, controller will convert and store:
            // nid_number_en + nid_number_bn
            'nid_number' => ['required', 'string', 'max:30'],

            'education' => ['required', 'string'],

            'bio' => ['nullable', 'string'],
            'election_manifesto' => ['nullable', 'string'],

            'status' => ['required', 'in:active,inactive,disqualified'],
        ];
    }

    public function messages(): array
    {
        return [
            'slug.required' => 'Slug প্রয়োজন',
            'slug.unique'   => 'এই Slug আগে থেকেই আছে',

            'user_id.required' => 'ব্যবহারকারী নির্বাচন করুন',
            'user_id.exists'   => 'বৈধ ব্যবহারকারী নির্বাচন করুন',

            'seat_id.required' => 'সীট নির্বাচন করুন',
            'seat_id.exists'   => 'বৈধ সীট নির্বাচন করুন',

            'symbol_name.required' => 'প্রতীক নাম প্রয়োজন',
            'party_name.required'  => 'দলীয় নাম প্রয়োজন',

            'nid_number.required' => 'এনআইডি নম্বর প্রয়োজন',

            'education.required' => 'শিক্ষাগত যোগ্যতা প্রয়োজন',

            'status.required' => 'স্ট্যাটাস প্রয়োজন',
            'status.in'       => 'বৈধ স্ট্যাটাস নির্বাচন করুন',
        ];
    }
}
