<?php

namespace App\Http\Historico;

// Controladores
use App\Http\Historico\Historico;
use App\Http\Controllers\ModoController;
use App\Http\Controllers\UnidadController;
use App\Http\Controllers\AnalitoController;
use App\Http\Controllers\AnalizadorController;
use App\Http\Controllers\CorridaAreaController;

// Historico
use App\Http\Controllers\MetodologiaController;
use App\Http\Controllers\CorridaAnalitoController;

class CorridaAnalitoHistorico extends Historico {

    public function store($accion, $obj){

        $this->SetInformacionLog($accion, $obj);
        
        switch($this->accion){
            case "store":
                $nom_metodologia_prueba = MetodologiaController::ListItem($this->req->id_metodologia_prueba)->nom_metodologia;
                $nom_metodologia_comparacion = MetodologiaController::ListItem($this->req->id_metodologia_comparacion)->nom_metodologia;
                $nom_modo_metodologia_prueba = ModoController::ListItem($this->req->id_modo_metodologia_prueba)->nom_modo;
                $nom_modo_metodologia_comparacion = ModoController::ListItem($this->req->id_modo_metodologia_comparacion)->nom_modo;
                $nom_unidad_prueba = UnidadController::ListItem($this->req->id_unidad_prueba)->nom_unidad;
                $nom_unidad_comparacion = UnidadController::ListItem($this->req->id_unidad_comparacion)->nom_unidad;
                $nom_analizador_prueba = AnalizadorController::ListItem($this->req->id_analizador_prueba)->nom_analizador;
                $nom_analizador_comparacion = AnalizadorController::ListItem($this->req->id_analizador_prueba)->nom_analizador;
                $nom_analito = AnalitoController::listItem($this->req->id_analito)->nom_analito;
                $no_laboratorio = CorridaAreaController::listItem($this->req->id_corrida_area)->no_laboratorio;
                $nom_laboratorio = CorridaAreaController::listItem($this->req->id_corrida_area)->nom_laboratorio;
                $area = CorridaAreaController::listItem($this->req->id_corrida_area)->nom_area;
                $fecha_inicio = CorridaAreaController::listItem($this->req->id_corrida_area)->fecha_inicio;
                $nom_proyecto = "lab: $no_laboratorio - $nom_laboratorio, área: $area, fecha: $fecha_inicio";
                $diferencia_maxima_permisible = $this->req->diferencia_maxima_permisible;
                $limite_aps = $this->req->limite_aps;
                $this->tableLog->titulo = "Registro";
                $this->tableLog->descripcion = "analito: $nom_analito, proyecto: $nom_proyecto, analizador de prueba: $nom_analizador_prueba, analizador de comparación: $nom_analizador_comparacion, metodología de prueba: $nom_metodologia_prueba, metodología de comparación: $nom_metodologia_comparacion, modo de prueba: $nom_modo_metodologia_prueba, modo de comparación: $nom_modo_metodologia_comparacion, unidad de prueba: $nom_unidad_prueba, unidad de comparación: $nom_unidad_comparacion, diferencia máxima permisible: $diferencia_maxima_permisible, límite APS: $limite_aps";
            break;

            case "update":

                $nom_analito = CorridaAnalitoController::listItem($this->req->id)->nom_analito;
                $no_laboratorio = CorridaAnalitoController::listItem($this->req->id)->no_laboratorio;
                $nom_laboratorio = CorridaAnalitoController::listItem($this->req->id)->nom_laboratorio;
                $area = CorridaAnalitoController::listItem($this->req->id)->nom_area;
                $fecha_inicio = CorridaAnalitoController::listItem($this->req->id)->fecha_inicio;
                $nom_proyecto = "lab: $no_laboratorio - $nom_laboratorio, área: $area, fecha: $fecha_inicio";
                echo $this->req->campo;
                switch($this->req->campo){
                    case "id_analito":
                        $new_nom_analito = AnalitoController::ListItem($this->req->id_analito)->nom_analito;
                        $this->tableLog->titulo = "Modificación de analito";
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza el analito a: $new_nom_analito";
                    break;
                    case "id_analizador_prueba":
                        $new_nom_analizador_prueba = AnalizadorController::ListItem($this->req->id_analizador_prueba)->nom_analizador;
                        $this->tableLog->titulo = "Modificación de analizador de prueba";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza el analizador de prueba a: $new_nom_analizador_prueba";
                    break;
                    case "id_metodologia_prueba":
                        $new_nom_metodologia_prueba = MetodologiaController::ListItem($this->req->id_metodologia_prueba)->nom_metodologia;
                        $this->tableLog->titulo = "Modificación de metodología de prueba";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza la metodología de prueba a: $new_nom_metodologia_prueba";
                    break;
                    case "id_modo_metodologia_prueba":
                        $new_nom_modo_prueba = ModoController::ListItem($this->req->id_modo_metodologia_prueba)->nom_modo;
                        $this->tableLog->titulo = "Modificación de modo de prueba";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza el modo de prueba a: $new_nom_modo_prueba";
                    break;
                    case "id_unidad_prueba":
                        $new_nom_prueba = UnidadController::ListItem($this->req->id_unidad_prueba)->nom_unidad;
                        $this->tableLog->titulo = "Modificación de unidad de prueba";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza la unidad de prueba a: $new_nom_prueba";
                    break;
                    case "id_metodologia_comparacion":
                        $new_nom_metodologia_comparacion = MetodologiaController::ListItem($this->req->id_metodologia_comparacion)->nom_metodologia;
                        $this->tableLog->titulo = "Modificación de metodología de comparación";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza la metodología de comparación a: $new_nom_metodologia_comparacion";
                        break;

                    case "id_analizador_comparacion":
                        $new_nom_analizador_comparacion = AnalizadorController::ListItem($this->req->id_analizador_comparacion)->nom_analizador;
                        $this->tableLog->titulo = "Modificación de metodología de comparación";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza la analizador de comparación a: $new_nom_analizador_comparacion";
                        break;
                    case "id_modo_metodologia_comparacion":
                        $new_nom_modo_comparacion = ModoController::ListItem($this->req->id_modo_metodologia_comparacion)->nom_modo;
                        $this->tableLog->titulo = "Modificación de modo de comparación";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza el modo de comparación a: $new_nom_modo_comparacion";
                        break;
                    case "id_unidad_comparacion":
                        $new_nom_comparacion = UnidadController::ListItem($this->req->id_unidad_comparacion)->nom_unidad;
                        $this->tableLog->titulo = "Modificación de unidad de comparación";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza la unidad de comparación a: $new_nom_comparacion";
                        break;
                    case "diferencia_maxima_permisible":
                        $diferencia_maxima_permisible = $this->req->diferencia_maxima_permisible;
                        $this->tableLog->titulo = "Modificación de diferencia máxima permisible";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza la diferencia máxima permisible a: $diferencia_maxima_permisible";
                        break;
                    case "limite_aps":
                        $limite_aps = $this->req->limite_aps;
                        $this->tableLog->titulo = "Modificación de límite APS";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el analito: $nom_analito del proyecto: $nom_proyecto se actualiza el límite APS a: $limite_aps";
                        break;
                }
                break;

            case "destroy":
                
                $nom_analito = CorridaAnalitoController::listItem($this->req->id)->nom_analito;
                $no_laboratorio = CorridaAnalitoController::listItem($this->req->id)->no_laboratorio;
                $nom_laboratorio = CorridaAnalitoController::listItem($this->req->id)->nom_laboratorio;
                $area = CorridaAnalitoController::listItem($this->req->id)->nom_area;
                $fecha_inicio = CorridaAnalitoController::listItem($this->req->id)->fecha_inicio;
                $nom_proyecto = "lab: $no_laboratorio - $nom_laboratorio, área: $area, fecha: $fecha_inicio";

                $this->tableLog->titulo = "Eliminación";
                $this->tableLog->descripcion = "analito: $nom_analito del proyecto $nom_proyecto";
                break;

            case "status":
                $nom_analito = CorridaAnalitoController::listItem($this->req->id)->nom_analito;
                $no_laboratorio = CorridaAnalitoController::listItem($this->req->id)->no_laboratorio;
                $nom_laboratorio = CorridaAnalitoController::listItem($this->req->id)->nom_laboratorio;
                $area = CorridaAnalitoController::listItem($this->req->id)->nom_area;
                $fecha_inicio = CorridaAnalitoController::listItem($this->req->id)->fecha_inicio;
                $nom_proyecto = "lab: $no_laboratorio - $nom_laboratorio, área: $area, fecha: $fecha_inicio";
                $statusNow = CorridaAnalitoController::listItem($this->req->id)->estado_corrida_analito;
                if($statusNow == 1){
                    $this->tableLog->titulo = "Inactivación";
                    $this->tableLog->descripcion = "analito: $nom_analito del proyecto $nom_proyecto";
                } else {
                    $this->tableLog->titulo = "Reactivación";
                    $this->tableLog->descripcion = "analito: $nom_analito del proyecto $nom_proyecto";
                }
                break;
        }


        $this->tableLog->tabla = 'Analito de proyecto';
        $this->tableLog->save();
    }
}