<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

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

    public function rules(): array
    {
        return [
            'full_name'    => ['required', 'string', 'max:255'],
            'email'        => ['required', 'email', 'max:255'],
            'phone'        => ['required', 'string', 'max:20', 'regex:/^[0-9\s\+\-\(\)]{7,20}$/'],
            'cover_letter' => ['nullable', 'string', 'max:5000'],
            'linkedin_url' => ['nullable', 'url', 'max:255'],
            'source'       => ['nullable', 'string', 'in:LinkedIn,Instagram,Kariyer.net,Indeed,Arkadaş Tavsiyesi,Diğer'],
            'kvkk_consent' => ['required', 'accepted'],
            'cv'           => ['required', 'file', 'max:5120', 'mimes:pdf,doc,docx'],
            // Honeypot alanı — dolu olmamalı
            'website'      => ['nullable', 'max:0'],
        ];
    }

    public function messages(): array
    {
        return [
            'full_name.required'    => 'Ad Soyad alanı zorunludur.',
            'email.required'        => 'E-posta alanı zorunludur.',
            'email.email'           => 'Geçerli bir e-posta adresi giriniz.',
            'phone.required'        => 'Telefon alanı zorunludur.',
            'phone.regex'           => 'Geçerli bir telefon numarası giriniz.',
            'kvkk_consent.required' => 'KVKK Aydınlatma Metni\'ni onaylamanız zorunludur.',
            'kvkk_consent.accepted' => 'KVKK Aydınlatma Metni\'ni onaylamanız zorunludur.',
            'cv.required'           => 'CV dosyası zorunludur.',
            'cv.file'               => 'Geçerli bir dosya yükleyiniz.',
            'cv.max'                => 'CV dosyası en fazla 5MB olabilir.',
            'cv.mimes'              => 'CV dosyası yalnızca PDF, DOC veya DOCX formatında olabilir.',
            'website.max'           => 'Geçersiz istek.',
        ];
    }
}