<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use App\Http\Controllers\AnalizadorController;
use App\Analizador;

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

    
    public function rules(){
        if(isset($this->id)){ // Actualizacion
            return [
                "id_area" => [
                    "min:1",
                    "max:40",
                    Rule::unique('analizador','area_id_area')->where(function ($query) {
                        $analizador = AnalizadorController::listItem($this->id);
                        return $query->where("nom_analizador",$analizador->nom_analizador);
                    })
                ],
                'nombre' => [
                    "min:1",
                    "max:50",
                    Rule::unique('analizador','nom_analizador')->where(function ($query) {
                        $analizador = AnalizadorController::listItem($this->id);
                        return $query->where("area_id_area",$analizador->id_area);
                    })
                ]
            ];
        } else { // Cuando es un registro
            return [
                "id_area" => [
                    "min:1",
                    "max:40",
                    "numeric"
                ],
                'nombre' => [
                    "required",
                    "min:1",
                    "max:50",
                    Rule::unique('analizador','nom_analizador')->where(function ($query) {
                        return $query->where("area_id_area",$this->id_area);
                    })
                ]
            ];
        }   
    }
    
    
    public function attributes(){
        return [
            'area' => 'área',
            'nombre' => 'nombre'
        ];
    }
    

    public function messages(){
        return [
            'area.required' => 'El campo es obligatorio',
            'nombre.required' => 'El campo es obligatorio',
            
            'area.numeric' => 'El campo debe ser un identificador válido',
            
            'nombre.unique' => 'El nombre del analizador ya existe para el área especificada',
            
            'nombre.min' => 'El nombre del analizador debe tener mínimo 1 carácter',
            'nombre.max' => 'El nombre del analizador debe tener máximo 50 carácteres'
        ];
    }
}