<?php

namespace App\Http\Requests;

use App\CorridaAnalito;
use App\CorridaArea;
use App\ProyectoEP15;
use App\Rules\AnalitoEP15NumProjectRule;
use App\SuperUsuario;
use App\Usuario;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
use App\Http\Controllers\AnalitoEP15Controller;
use App\AnalitoEP15;

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


    public function rules(){
        if(isset($this->id)){ // Actualizacion
            return [
                "analito" => [
                    "min:1",
                    "max:40",
                    // Rule::unique('analito_ep15','analito_id_analito')->where(function ($query) {
                    //     $analitoEP15 = AnalitoEP15Controller::listItem($this->id);
                    //     return $query->where([
                    //         ["proyecto_ep15_id_proyecto_ep15","=",$analitoEP15->proyecto_ep15_id_proyecto_ep15],
                    //         ["analizador_id_analizador","=",$analitoEP15->analizador_id_analizador],
                    //         ["unidad_id_unidad","=",$analitoEP15->unidad_id_unidad],
                    //         ["lote_reactivo","=",$analitoEP15->lote_reactivo],
                    //         ["lote_calibrador","=",$analitoEP15->lote_calibrador]
                    //     ]);
                    // })
                ],
                "unidad" => [
                    "min:1",
                    "max:40",
                    // Rule::unique('analito_ep15','unidad_id_unidad')->where(function ($query) {
                    //     $analitoEP15 = AnalitoEP15Controller::listItem($this->id);
                    //     return $query->where([
                    //         ["proyecto_ep15_id_proyecto_ep15","=",$analitoEP15->proyecto_ep15_id_proyecto_ep15],
                    //         ["analizador_id_analizador","=",$analitoEP15->analizador_id_analizador],
                    //         ["analito_id_analito","=",$analitoEP15->analito_id_analito],
                    //         ["lote_reactivo","=",$analitoEP15->lote_reactivo],
                    //         ["lote_calibrador","=",$analitoEP15->lote_calibrador]
                    //     ]);
                    // })
                ],
                "analizador" => [
                    "min:1",
                    "max:40",
                    // Rule::unique('analito_ep15','analizador_id_analizador')->where(function ($query) {
                    //     $analitoEP15 = AnalitoEP15Controller::listItem($this->id);
                    //     return $query->where([
                    //         ["proyecto_ep15_id_proyecto_ep15","=",$analitoEP15->proyecto_ep15_id_proyecto_ep15],
                    //         ["unidad_id_unidad","=",$analitoEP15->unidad_id_unidad],
                    //         ["analito_id_analito","=",$analitoEP15->analito_id_analito],
                    //         ["lote_reactivo","=",$analitoEP15->lote_reactivo],
                    //         ["lote_calibrador","=",$analitoEP15->lote_calibrador]
                    //     ]);
                    // })
                ],
                "etmp" => [
                    "numeric",
                    // Rule::unique('analito_ep15','etmp')->where(function ($query) {
                    //     $analitoEP15 = AnalitoEP15Controller::listItem($this->id);
                    //     return $query->where([
                    //         ["proyecto_ep15_id_proyecto_ep15","=",$analitoEP15->proyecto_ep15_id_proyecto_ep15],
                    //         ["analizador_id_analizador","=",$analitoEP15->analizador_id_analizador],
                    //         ["analito_id_analito","=",$analitoEP15->analito_id_analito],
                    //         ["unidad_id_unidad","=",$analitoEP15->unidad_id_unidad],
                    //         ["lote_reactivo","=",$analitoEP15->lote_reactivo],
                    //         ["lote_calibrador","=",$analitoEP15->lote_calibrador]
                    //     ]);
                    // })
                ],
                "lote_reactivo" => [
                    "min:1",
                    "max:40",
                    // Rule::unique('analito_ep15','lote_reactivo')->where(function ($query) {
                    //     $analitoEP15 = AnalitoEP15Controller::listItem($this->id);
                    //     return $query->where([
                    //         ["proyecto_ep15_id_proyecto_ep15","=",$analitoEP15->proyecto_ep15_id_proyecto_ep15],
                    //         ["analizador_id_analizador","=",$analitoEP15->analizador_id_analizador],
                    //         ["analito_id_analito","=",$analitoEP15->analito_id_analito],
                    //         ["lote_calibrador","=",$analitoEP15->lote_calibrador],
                    //         ["unidad_id_unidad","=",$analitoEP15->unidad_id_unidad]
                    //     ]);
                    // })
                ],
                "lote_calibrador" => [
                    "min:1",
                    "max:40",
                    // Rule::unique('analito_ep15','lote_calibrador')->where(function ($query) {
                    //     $analitoEP15 = AnalitoEP15Controller::listItem($this->id);
                    //     return $query->where([
                    //         ["proyecto_ep15_id_proyecto_ep15","=",$analitoEP15->proyecto_ep15_id_proyecto_ep15],
                    //         ["analizador_id_analizador","=",$analitoEP15->analizador_id_analizador],
                    //         ["analito_id_analito","=",$analitoEP15->analito_id_analito],
                    //         ["lote_reactivo","=",$analitoEP15->lote_reactivo],
                    //         ["unidad_id_unidad","=",$analitoEP15->unidad_id_unidad]
                    //     ]);
                    // })
                ],
            ];
        } else { // Cuando es un registro
            return [
                "id_proyecto_ep15" => [
                    "required",
                    "min:1",
                    "max:40",
                ],
                "id_analito" => [
                    "required",
                    "min:1",
                    "max:40",
                    new AnalitoEP15NumProjectRule(),
                    // Rule::unique('analito_ep15','analito_id_analito')->where(function ($query) {
                    //     return $query->where([
                    //         ["analizador_id_analizador", "=", $this->id_analizador],
                    //         ["unidad_id_unidad", "=", $this->id_unidad],
                    //         ["lote_reactivo", "=", $this->lote_reactivo],
                    //         ["lote_calibrador", "=", $this->lote_calibrador]
                    //     ]);
                    // })
                ],
                "id_analizador" => [
                    "required",
                    "min:1",
                    "max:40"
                ],
                "id_unidad" => [
                    "required",
                    "min:1",
                    "max:40"
                ],
                "etmp" => [
                    "numeric",
                    "required",
                ],
                "lote_reactivo" => [
                    "String",
                    "required",
                    "min:1",
                    "max:40"
                ],
                "lote_calibrador" => [
                    "String",
                    "required",
                    "min:1",
                    "max:40"
                ]
            ];
        }
    }


    public function attributes(){
        return [
            "id_proyecto_ep15" => "proyecto EP15",
            "id_analito" => "analito",
            "id_analizador" => "analizador",
            "id_unidad" => "unidad",
            "etmp" => "error total máximo permicible",
            "lote_reactivo" => "lote de reactivo",
            "lote_calibrador" => "lote de calibrador"
        ];
    }


    public function messages(){
        return [
            'id_proyecto_ep15.required' => 'El campo es obligatorio',
            'id_analito.required' => 'El campo es obligatorio',
            'id_analizador.required' => 'El campo es obligatorio',
            'id_unidad.required' => 'El campo es obligatorio',
            'etmp.required' => 'El campo es obligatorio',
            'lote_reactivo.required' => 'El campo es obligatorio',
            'lote_calibrador.required' => 'El campo es obligatorio',
            'id_analito.unique' => 'El analito de EP15 ya se encuentra registrado',
        ];
    }
}
