<?php

namespace App\Http\Historico;

// Controladores
use App\Http\Controllers\RolController;
use App\Http\Controllers\LaboratorioController;
use App\Http\Controllers\UsuarioController;

// Historico
use App\Http\Historico\Historico;

class UsuarioHistorico extends Historico {

    public function store($accion, $obj){

        $this->SetInformacionLog($accion, $obj);

        switch($this->accion){
            case "store":
                $usuario = $this->req->nom_usuario;
                $rol = RolController::listItem($this->req->id_rol)->nom_rol;
                $nombres = $this->req->nombres;
                $apellidos = $this->req->apellidos;
                $coreo = $this->req->correo;
                $this->tableLog->titulo = "Registro";
                $this->tableLog->descripcion = "usuario: $usuario, rol: $rol, nombres: $nombres, apellidos: $apellidos, correo: $coreo";
                break;

            case "storePass":
                $nom_usuario = UsuarioController::listItem($this->req->id)->nom_usuario;
                $this->tableLog->titulo = "Actualización de contraseña";
                $this->tableLog->descripcion = "usuario: $nom_usuario";
                break;

            case "update":
                $nom_usuario = UsuarioController::listItem($this->req->id)->nom_usuario;
                switch($this->req->campo){
                    case "rol":
                        $this->tableLog->titulo = "Modificación de rol";
                        $rol = RolController::listItem($this->req->id_rol)->nom_rol;
                        $this->tableLog->descripcion = "Para el usuario $nom_usuario se actualiza el rol a: $rol";
                    break;
                    case "nombres":
                        $this->tableLog->titulo = "Modificación de nombres";
                        $nombres = $this->req->nombres;
                        $this->tableLog->descripcion = "Para el usuario $nom_usuario se actualiza el nombre a: $nombres";
                    break;
                    case "apellidos":
                        $this->tableLog->titulo = "Modificación de apellidos";
                        $apellidos = $this->req->apellidos;
                        $this->tableLog->descripcion = "Para el usuario $nom_usuario se actualiza el apellido a: $apellidos";
                    break;
                    case "correo":
                        $this->tableLog->titulo = "Modificación de correo";
                        $correo = $this->req->correo;
                        $this->tableLog->descripcion = "Para el usuario $nom_usuario se actualiza el correo a: $correo";
                    break;
                    case "nit":
                        $this->tableLog->titulo = "Modificación de nit";
                        $nit = $this->req->nit;
                        $this->tableLog->descripcion = "Para el usuario $nom_usuario se actualiza el nit a: $nit";
                        break;
                    case "nom_usuario":
                        $this->tableLog->titulo = "Modificación de nombre de usuario";
                        $new_nom_usuario = $this->req->nom_usuario;
                        $this->tableLog->descripcion = "Para el usuario $nom_usuario se actualiza el usuario a: $new_nom_usuario";
                        break;
                }
                break;

            case "destroy":
                $nom_usuario = UsuarioController::listItem($this->req->id)->nom_usuario;
                $this->tableLog->titulo = "Eliminación";
                $this->tableLog->descripcion = "usuario: $nom_usuario";
                break;

            case "status":
                $nom_usuario = UsuarioController::listItem($this->req->id)->nom_usuario;
                $statusNow = UsuarioController::listItem($this->req->id)->estado;
                if($statusNow == 1){
                    $this->tableLog->titulo = "Inactivación";
                    $this->tableLog->descripcion = "usuario: $nom_usuario";
                } else {
                    $this->tableLog->titulo = "Reactivación";
                    $this->tableLog->descripcion = "usuario: $nom_usuario";
                }

                break;

            case "destroyAsignationLab":
                $no_laboratorio = LaboratorioController::listByAsignacionUsuario($this->req->id)->no_laboratorio;
                $nom_laboratorio = LaboratorioController::listByAsignacionUsuario($this->req->id)->nom_laboratorio;
                $nom_usuario = UsuarioController::listByAsignacionUsuario($this->req->id)->nom_usuario;
                $this->tableLog->titulo = "Desvinculación de laboratorio";
                $this->tableLog->descripcion = "Para usuario: $nom_usuario se desvincula el laboratorio: $no_laboratorio - $nom_laboratorio";
                break;

            case "storeAsignationLab":
                $nom_usuario = UsuarioController::listItem($this->req->id_usuario)->nom_usuario;
                $cadenaLabs = "";

                for($i=0; $i<sizeof($this->req->id_laboratorio); $i++){
                    $no_laboratorio = LaboratorioController::listItem($this->req->id_laboratorio[$i])->no_laboratorio;
                    $nom_laboratorio = LaboratorioController::listItem($this->req->id_laboratorio[$i])->nom_laboratorio;
                    if($i == 0){ // Si es la primera vuelta
                        $cadenaLabs = $no_laboratorio . " - " . $nom_laboratorio;
                    } else {
                        $cadenaLabs = $cadenaLabs . ",  " . $no_laboratorio . " - " . $nom_laboratorio;
                    }
                }
                $this->tableLog->titulo = "Vinculación de laboratorio";
                $this->tableLog->descripcion = "Para usuario: $nom_usuario se vincula: $cadenaLabs";
                break;
        }


        $this->tableLog->tabla = 'Usuario';
        $this->tableLog->save();
    }
}
