<?php

namespace App\Http\Requests\Admin;

use Illuminate\Foundation\Http\FormRequest;

class DomainCostStoreRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return $this->user()->can('create', \App\Models\DomainCost::class);
    }

    /**
     * Get the validation rules that apply to the request.
     */
    public function rules(): array
    {
        return [
            'tld_id' => 'required|integer|exists:tlds,id',
            'registrar' => 'nullable|string|max:100',
            'currency_id' => 'required|integer|exists:currencies,id',
            'prices' => 'required|array',
            'prices.*' => 'numeric|min:0|max:999999.99',
            'is_active' => 'boolean',
            'metadata' => 'nullable|array',
        ];
    }

    /**
     * Get custom messages for validator errors.
     */
    public function messages(): array
    {
        return [
            'tld_id.required' => 'TLD zorunludur.',
            'tld_id.exists' => 'Geçerli bir TLD seçiniz.',
            'registrar.max' => 'Registrar adı en fazla 100 karakter olabilir.',
            'currency_id.required' => 'Para birimi zorunludur.',
            'currency_id.exists' => 'Geçerli bir para birimi seçiniz.',
            'prices.required' => 'Yıl fiyatları zorunludur.',
            'prices.array' => 'Yıl fiyatları dizi formatında olmalıdır.',
            'prices.*.numeric' => 'Fiyatlar sayısal olmalıdır.',
            'prices.*.min' => 'Fiyat 0\'dan küçük olamaz.',
            'prices.*.max' => 'Fiyat çok büyük.',
            'metadata.array' => 'Meta veriler dizi formatında olmalıdır.',
        ];
    }

    /**
     * Get custom attribute names for validator errors.
     */
    public function attributes(): array
    {
        return [
            'tld_id' => 'TLD',
            'registrar' => 'registrar',
            'currency_id' => 'para birimi',
            'prices' => 'yıl fiyatları',
            'is_active' => 'aktiflik durumu',
            'metadata' => 'meta veriler',
        ];
    }
}
