<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use App\Http\Controllers\MetodologiaController;
use App\Metodologia;

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

    
    public function rules(){
        if(isset($this->id)){ // Actualizacion
            return [
                "id_area" => [
                    "min:1",
                    "max:40",
                    Rule::unique('metodologia','area_id_area')->where(function ($query) {
                        $metodologia = MetodologiaController::listItem($this->id);
                        return $query->where("nom_metodologia",$metodologia->nom_metodologia);
                    })  
                ],
                'nombre' => [
                    "min:2",
                    "max:50",
                    Rule::unique('metodologia','nom_metodologia')->where(function ($query) {
                        $metodologia = MetodologiaController::listItem($this->id);
                        return $query->where("area_id_area",$metodologia->id_area);
                    })
                ]
            ];
        } else { // Cuando es un registro
            return [
                "id_area" => [
                    "required",
                    "min:1",
                    "max:40",
                    "numeric"
                ],
                'nombre' => [
                    "required",
                    "min:2",
                    "max:50",
                    Rule::unique('metodologia','nom_metodologia')->where(function ($query) {
                        return $query->where("area_id_area",$this->id_area);
                    })
                ]
            ];
        }   
    }
    
    
    public function attributes(){
        return [
            'id_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 de la metodologia ya existe para el área especificada',
            
            'nombre.min' => 'El nombre de la metodologia debe tener mínimo 2 carácteres',
            'nombre.max' => 'El nombre de la metodologia debe tener máximo 50 carácteres'
        ];
    }
}