<?php

/**
 * Descripción del Controlador Log
 *
 * ControlConsecutivo
 *
 * Licenciado bajo la Licencia Apache, Versión 2.0;
 * Usted no puede usar este archivo excepto en conformidad con la Licencia.
 * Usted puede obtener una copia de la Licencia en:
 *      http://www.php.net/license/3_01.txt. 
 * A menos que sea requerido por la ley aplicable o acordado por escrito, el software
 * Distribuido bajo la licencia se distribuye en una "AS IS" o  "COMO ESTA" BASE,
 * SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, expresas o implícitas.
 * Consulte la Licencia para los permisos y Limitaciones bajo la Licencia.
 *
 * @package    Administracion\Controladores
 * @author     JUAN PABLO LLINAS RAMIREZ <jpllinas@ccsm.org.co>
 * @author     SICAM 20171025 <sicam32@ccsm.org.co>
 * @copyright  2017 Cámara de Comercio de Santa Marta para el Magdalena
 * @license    http://www.php.net/license/3_01.txt  PHP License 3.01
 * @version    201711301215
 * @link       http://sicam.ccsm.org.co/docs/administrador/Log
 */
 
class LogControlador extends Controladores { 
    
    /**
     * Vista que se encarga de organizar la forma de presentar 
     * los registros de Log al usuario.
     * @return HTML Listado de Log.
     */
    function mostrarTodos() {
        Vistas::mostrar('administrador', 'log/lst-todos');
    }
    /**
     * Permite mostrar en forma de tabla los registros de Log.  
     * @return HTML Formulario solo con datos inciales o necesarios.
     */
    function tablaListado() {
        $Log = Log::todos();
        Vistas::mostrar('administrador', 'log/tbl-todos', 
             array( 'Logs' => $Log)
         );
    }
    /**
     * Permite mostrar en forma de tabla los registros de Log.  
     * @return HTML Formulario solo con datos inciales o necesarios.
     */
    function tablaListadoPorUsuario() {
        $Log = Log::porUsuario($this->usuarioNOMBRE);
        Vistas::mostrar('administrador', 'log/tbl-todos', 
             array( 'Logs' => $Log)
         );
    }
    /**
     * Permite mostrar en forma de tabla los registros de Log.  
     * @return HTML Formulario solo con datos inciales o necesarios.
     */
    function tablaListadoErrores() {
        $Log = Log::errores();
        Vistas::mostrar('administrador', 'log/tbl-todos', 
            array( 'Logs' => $Log)
        );
    }
    /**
     * Responde con el formulario de Log vacio, solo datos necesarios.
     * LLama a la función que devuleve el formulario pero 
     * sin enviarle los datos de Log.  
     * Esta función se crea para poder gestionar el permiso de NUEVO Log
     * @return HTML Formulario solo con datos inciales o necesarios.
     */
    function mostrarFormularioNuevo() {
        $this->mostrarFormulario();
    }
    /**
     * Función que toma los datos enviados y crea un nuevo registro
     * @return RespuestasSistema 
     */
    private function guardarNuevo() {
        $creadoID = Log::guardar($this->consecutivoCODIGO, 
                $this->consecutivoTITULO, $this->consecutivoPREFIJO, 
                $this->consecutivoRELLENO, 
                $this->consecutivoACTUAL);
        if ($creadoID) {
            return RespuestasSistema::exito("Nuevo Registro CREADO con EXITO", Log::datos($creadoID));
        } else {
            return RespuestasSistema::fallo("No se pudo CREAR el nuevo Log. Si vuelve a suceder, contacte con el Centro TICS.");
        }
    }
    /**
     * Recibe el ID del Log y obtiene sus datos para ser enviados 
     * al formulario, y asi cargar los datos en los inputs.
     * Esta función se crea para poder gestionar el permiso de EDITAR Log
     * @return HTML Formulario con los datos del Log a editar.
     */
    function mostrarFormularioEditar() {
        $Log = Log::datos($this->consecutivoID);
        $this->mostrarFormulario($Log);
    }
    /**
     * Función que toma los datos enviados y actualiza el registro
     * @return RespuestasSistema 
     */
    private function guardarCambios() {
        $Log = Log::datos($this->consecutivoID);
        $actualizado = Log::actualizar(
                $this->consecutivoID, $this->consecutivoCODIGO, 
                $this->consecutivoTITULO, $this->consecutivoPREFIJO, 
                $this->consecutivoRELLENO, 
                $this->consecutivoACTUAL
        );
        if ($actualizado) {
            return RespuestasSistema::exito("Registro ACTUALIZADO con EXITO.", Log::datos($this->consecutivoID));
        } else {
            return RespuestasSistema::fallo("No se actualizó el Log. Verifique los datos, o contacte al Centro TICS.");
        }
    }
    /**
     * Muestra el Formulario procesado para ser mostrado al usuario.
     * Se le envian unos datos inciales para la carga de la vista, y
     * se envia los datos del Log cuando se esta editando.
     * @return HTML Vista del Formulario de Log
     */
    private function mostrarFormulario($Log = null) {
        Vistas::mostrar('administrador', 'log/frm-completo', array(
          'versionSICAM' => Parametros::valor('VERSIONSICAM'),
          'Vigencia'     => Vigencias::actual(),
          'Categorias'   => Categorias::todas(),
          'ControlConsecutivo' => $Log
        ));
    }
    /**
     * Guardar Datos Recibidos, bien sea como un registro nuevo, o como una actualización.
     * Despues imprime las Respuesta del Sistema a la ejecución de la operacion
     */
    function guardarDatos() {
        if (empty($this->consecutivoID)) {
            echo $this->guardarNuevo();
        } else {
            echo $this->guardarCambios();
        }
    }
    
    /**
     * Permite mostrar en forma de tabla los registros de Log.  
     * @return HTML Formulario solo con datos inciales o necesarios.
     */
    function lineaTiempoUsuario() {
        $Logs = Log::fechas($this->usuarioNOMBRE);
        foreach($Logs as $Log):
            $Log->datos = Log::datosPorFecha($Log->FECHA, $this->usuarioNOMBRE);
            foreach($Log->datos as $datos):
                $datos->operacion = Operaciones::datosPorCombinacion(
                        $datos->logCOMPONENTE, $datos->logCONTROLADOR, $datos->LogOPERACION
                    );
            endforeach;
        endforeach;
        Vistas::mostrar('administrador', 'log/linea-tiempo', 
             array( 'Logs' => $Logs)
         );
    }
}
// Generado el 2017-11-30 12:15:22:000000

