<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreOffreRequest extends FormRequest
{
    public function authorize()
    {
        return true;  
    }

    public function rules()
    {
        return [
            'reference' => 'nullable|string|max:255|unique:offers,reference',
            'title' => 'required|string|max:255',
            'description' => 'required|string',
            'status' => 'nullable|in:pending,published,stopped',
            'keywords' => 'nullable|string',
            'url' => 'required|url',
            'company_name' => 'nullable|string|max:255',
            'start_date' => 'required|date',
            'end_date' => 'required|date|after_or_equal:start_date',
            'offer_type_id' => 'required|exists:offer_types,id',
            'domain_id' => 'required|exists:domains,id',
            'filier_id' => 'required|exists:filiers,id',
        ];
    }

    public function messages()
    {
        return [
            'title.required' => 'Le titre de l\'offre est obligatoire.',
            'title.string' => 'Le titre de l\'offre doit être une chaîne de caractères.',
            'title.max' => 'Le titre de l\'offre ne peut pas dépasser 255 caractères.',
            'description.required' => 'La description est obligatoire.',
            'description.string' => 'La description doit être une chaîne de caractères.',
            'url.required' => 'L\'URL de l\'offre est obligatoire.',
            'url.url' => 'L\'URL de l\'offre doit être une URL valide.',
            'start_date.required' => 'La date de début est obligatoire.',
            'start_date.date' => 'La date de début doit être une date valide.',
            'end_date.required' => 'La date limite est obligatoire.',
            'end_date.date' => 'La date limite doit être une date valide.',
            'end_date.after_or_equal' => 'La date limite doit être égale ou après la date de début.',
            'offer_type_id.required' => 'Le type d\'offre est obligatoire.',
            'offer_type_id.exists' => 'Le type d\'offre sélectionné n\'existe pas.',
            'keywords.string' => 'Les mots-clés doivent être une chaîne de caractères.',
            'company_name.string' => 'Le nom de l\'entreprise doit être une chaîne de caractères.',
            'company_name.max' => 'Le nom de l\'entreprise ne peut pas dépasser 255 caractères.',
            'reference.unique' => 'Cette référence d\'offre existe déjà.',
            'domain_id.exists' => 'Le domaine d\'offre 선택nez n\'existe pas.',
            'domain_id.required' => 'Le domaine d\'offre est obligatoire.',
        ];
    }
}
