<?php 


class ComponentesControlador extends controladores {
        
    function mostrarTodos() {
       Vistas::mostrar('desarrollosoftware', 'componentes/listado');
    }
    function tablaListado() {
        $Componentes = Componentes::todos();
        Vistas::mostrar(
            'desarrollosoftware','componentes/tbl-componentes',array('Componentes' => $Componentes)
        );
    }

    function mostrarFormularioNuevo() {
        $this->mostrarFormulario();
    }
    function mostrarFormularioEditar() {
        $Componente = Componentes::datos($this->componenteID);
        $this->mostrarFormulario($Componente);
    }
    private function mostrarFormulario($Componente = null) {
        $Categorias =  Categorias::componentes();
        Vistas::mostrar('desarrollosoftware','componentes/form-componentes', array(
            'CategoriaComponentes'=> $Categorias,
            'Componente'=> $Componente
            ) );
    }
    
    function guardarDatos() {
        $urlMin = $urlMax = null;
        $carpetaComponentes = 'desarrollosoftware/componentes/';
        if( !empty($this->componenteMin) ){
            $nombreArchivoMin = uniqid('componente-min-').".".Archivos::extension($this->componenteMin);
            $archivoMovido = Archivos::moverArchivoRecibido(
                $this->componenteMin, DIR_ARCHIVOS.$carpetaComponentes, $nombreArchivoMin 
            );
            $urlMin = URL_ARCHIVOS.$carpetaComponentes.$nombreArchivoMin;
        }
        if( !empty($this->componenteMax) ){
            $carpetaComponentes = 'desarrollosoftware/componentes/';
            $nombreArchivoMax = uniqid('componente-').".".Archivos::extension($this->componenteMax);
            $archivoMovido = Archivos::moverArchivoRecibido(
                $this->componenteMax, DIR_ARCHIVOS.$carpetaComponentes, $nombreArchivoMax
            );
            $urlMax = URL_ARCHIVOS.$carpetaComponentes.$nombreArchivoMax;
        }
        
        if( empty($this->componenteID) ){
            $creado = Componentes::guardar(
                $this->componenteCATEGORIA ,
                $this->componenteNOMBRE, 
                $this->componenteDESCRIPCION, 
                $this->componenteCONTENIDO, 
                $urlMin, $urlMax,
                $this->componenteLINK, 
                $this->componenteEstado
            );
            if($creado){
                echo Respuestassistema::exito( "", Componentes::datos($creado) );
            }else{
                echo Respuestassistema::fallo("No se pudo guardar el nuevo Componente");
            }
            
        }else{
            $Componente = Componentes::datos($this->componenteID);
            if(is_null($urlMin)) $urlMin = $Componente->componenteIMGMIN;
            if(is_null($urlMax)) $urlMax = $Componente->componenteIMGMAX;
            $actualizado = Componentes::actualizar(
                $this->componenteCATEGORIA ,
                $this->componenteID,
                $this->componenteNOMBRE, 
                $this->componenteDESCRIPCION, 
                $this->componenteCONTENIDO, 
                $urlMin, $urlMax,
                $this->componenteLINK, 
                $this->componenteEstado
            );
            if($actualizado){
                echo Respuestassistema::exito("", Componentes::datos($this->componenteID));
            }else{
                echo Respuestassistema::fallo("No se actualizó el Componente. Verifique los datos, o contacte al Centro TICS.");
            }
        }
    }
    
    function eliminar() {
        $Componentes = $this->check_desarrollosoftware_componentes;
        if (count($Componentes)) {
            $cont = 0;
            foreach ($Componentes as $Componente):
                $nCambio = Componentes::eliminar($Componente);
                if ($nCambio > 0) {
                    $cont++;
                }
            endforeach;
            if (count($Componentes)) {
                echo RespuestasSistema::exito('Eliminación exitosa!');
            } else {
                echo RespuestasSistema::error('Hubo un error al eliminar uno de los registros!');
            }
        } else {
            echo RespuestasSistema::error('No llegarón los datos para eliminar.');
        }
    }
    function reactivar() {
        $Componentes = $this->check_desarrollosoftware_componentes;
        if (count($Componentes)) {
            $cont = 0;
            foreach ($Componentes as $Componente):
                $nCambio = Componentes::reactivar($Componente);
                if ($nCambio > 0) {
                    $cont++;
                }
            endforeach;
            if (count($Componentes)) {
                echo RespuestasSistema::exito('Re-activación exitosa!');
            } else {
                echo RespuestasSistema::error('Hubo un error al re-activar uno de los registros!');
            }
        } else {
            echo RespuestasSistema::error('No llegarón los datos para re-activar.');
        }
    }
    function desactivar() {
        $Componentes = $this->check_desarrollosoftware_componentes;
        if (count($Componentes)) {
            $cont = 0;
            foreach ($Componentes as $Componente):
                $nCambio = Componentes::desactivar($Componente);
                if ($nCambio > 0) {
                    $cont++;
                }
            endforeach;
            if (count($Componentes)) {
                echo RespuestasSistema::exito('Desactivación exitosa!');
            } else {
                echo RespuestasSistema::error('Hubo un error al desactivar uno de los registros!');
            }
        } else {
            echo RespuestasSistema::error('No llegarón los datos para desactivar.');
        }
    }
    
    function verDetalles(){
        $Componente = Componentes::datos($this->componenteID);
        Vistas::mostrar('desarrollosoftware', 'componentes/ver-componente', array('Componente'=> $Componente));
    }

    
}
