<?php 

class Operaciones {

    public static function todos(){
        $sqlQuery = 'SELECT ControlComponentes.*, ControlControladores.*, ControlOperaciones.* '
            .'FROM ControlOperaciones '
            .'LEFT JOIN ControlControladores ON (ControlOperaciones.controladorID = ControlControladores.controladorID)  '
            .'LEFT JOIN ControlComponentes ON (ControlControladores.componenteID = ControlComponentes.componenteID) '
            .'ORDER BY ControlOperaciones.operacionORDEN ';
        return SicamDB::selectVariasFilas($sqlQuery, array());
    }
    
    public static function todosDelComponente($componenteID){
        $sqlQuery = ControlAccesoSQL::OPERACIONES_POR_COMPONENTES . ' WHERE ControlComponentes.componenteID = ? '
            .'ORDER BY ControlOperaciones.operacionORDEN ';
        return SicamDB::selectVariasFilas($sqlQuery, array($componenteID));
    }
    
    public static function delControlador($controladorID){
        $sqlQuery = ControlAccesoSQL::OPERACIONES_POR_COMPONENTES 
            . ' WHERE ControlControladores.controladorID = ? '
            .'';
        return SicamDB::selectVariasFilas($sqlQuery, array($controladorID));
    }
    
    public static function delMenuControlador($controladorID){
        $sqlQuery = ControlAccesoSQL::OPERACIONES_POR_COMPONENTES 
            .' WHERE ControlControladores.controladorID = ? AND ControlOperaciones.operacionMENU = "SI" '
            .' ORDER BY ControlOperaciones.operacionORDEN ' ;
        return SicamDB::selectVariasFilas($sqlQuery, array($controladorID));
    }
    
    public static function delUsuario($idUsuario){
        $sqlQuery = ControlAccesoSQL::OPERACIONES_POR_USUARIO_Y_COMPONENTES 
        . ' WHERE (Usuarios.usuarioID = ? OR UsuariosRol.usuarioID = ?) '
            .'ORDER BY ControlOperaciones.operacionORDEN';
        return SicamDB::selectVariasFilas($sqlQuery, array($idUsuario, $idUsuario));
    }
    
    public static function delMenuPorUsuario($idUsuario, $controladorID){
        $sqlQuery = ControlAccesoSQL::OPERACIONES_POR_USUARIO_Y_COMPONENTES . ' WHERE (Usuarios.usuarioID = ? OR UsuariosRol.usuarioID = ? )'
            . 'AND ControlOperaciones.operacionMENU = "SI" AND ControlOperaciones.controladorID = ? '
            .'GROUP BY ControlOperaciones.operacionID '
            .'ORDER BY ControlOperaciones.operacionORDEN ' ;
        return SicamDB::selectVariasFilas($sqlQuery, array($idUsuario, $idUsuario, $controladorID));
    }
    
    public static function datosPorCodigo($codigoOperacion){
        $sqlQuery = ControlAccesoSQL::DATOS_COMPLETOS . 'WHERE ControlOperaciones.operacionCODIGO = ? ';
        return SicamDB::selectUnaFila($sqlQuery, array($codigoOperacion));
    }
    
    public static function datosPorCombinacion($componenteCARPETA, $controladorCLASE, $operacionFUNCION ){
        $sqlQuery = ControlAccesoSQL::DATOS_COMPLETOS . 
            'WHERE ControlComponentes.componenteCARPETA = ? AND  ControlControladores.controladorCLASE = ? AND  ControlOperaciones.operacionFUNCION = ? ';
        return SicamDB::selectUnaFila($sqlQuery, array($componenteCARPETA, $controladorCLASE, $operacionFUNCION));
    }
    
    //
    //
    ///
    ///
    /////
    /////
    /////////
    /////////
    
    
    
    public static function guardar( $controladorID , $operacionCODIGO , $operacionTITULO , 
        $operacionFUNCION , $operacionNOMBRETAB , $operacionMENU , $operacionMENUICONO , $operacionMENUTITULO 
    ) {
        $sqlQuery = "INSERT INTO ControlOperaciones ( "
        ."controladorID , operacionCODIGO , operacionTITULO , operacionFUNCION ,  "
        ."operacionNOMBRETAB , operacionMENU , operacionMENUICONO , operacionMENUTITULO , operacionUSRCREO  "
        .") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ";
        return SicamDB::insertFila(
            $sqlQuery, array(  
                $controladorID , $operacionCODIGO , $operacionTITULO , $operacionFUNCION , $operacionNOMBRETAB , 
                $operacionMENU , $operacionMENUICONO , $operacionMENUTITULO, Cliente::usuarioID() 
            )
        );
    } 
    
    
}
