Exemple #1
0
 public void obtenerDataSource(string idMenu)
 {
     Conexion conexion = new Conexion();
     DataRow[] config = conexion.SelectDataTable("select bd.Id_Base_Datos, bd.str_Ruta_Base_Datos, ma.ID_Menu from tbl_M_Menú_Aplicaciones ma "
         + "inner join tbl_M_Bases_Datos bd on bd.Id_Base_Datos = ma.Id_Base_Datos where ma.ID_Menu = " + idMenu, null).Select();
     if (config.Count() > 0)
     {
         DataRow dr = config[0];
         System.Web.HttpContext.Current.Session["dataSource"] = dr.Field<string>("str_Ruta_Base_Datos");
     }
 }
 public void ValidateRangoRespuestas(string idRegistro)
 {
     int r = 0;
     Conexion conexion = new Conexion();
     string datasource = System.Web.HttpContext.Current.Session["dataSource"].ToString();
     string[] aux = null;
     DataRow infoTabla = (conexion.SelectDataTable("SELECT MAX(resp.Valor) FROM tbl_M_Preguntas preg "
         +"INNER JOIN tbl_M_Cantidad_Respuestas resp ON preg.Cantidad_Prosibles_Respuestas = resp.Cantidad_Id "
         +"and preg.Encuesta = "+idRegistro, datasource).Select())[0];
     //IEnumerable<DataRow> infoTabla = rango.AsEnumerable().Where(x => x["Encuesta"].ToString() == idRegistro);
     try
     {
         r = Int32.Parse(infoTabla[0].ToString());
         DataRow cantidadCaras = (conexion.SelectDataTable("SELECT Cantidad_Caras FROM tbl_M_Cantidad_Respuestas WHERE Valor = " + r, datasource).Select())[0];
         aux = (cantidadCaras[0].ToString()).Split(',');
     }
     catch (Exception e){}
     //System.Web.HttpContext.Current.Session["rango"] = r;
     System.Web.HttpContext.Current.Session["permisos"] = aux;
 }
 public ActionResult validarInicio(Usuario u, string recordarme)
 {
     Conexion conexion = new Conexion();
     DataRow[] rows = conexion.SelectDataTable("SELECT Id_Usuario, Nombre_Usuario, Clave_Usuario, str_Organización FROM tbl_M_Usuarios WHERE Id_Usuario = '" + u.idUsuario + "' AND Clave_Usuario = '" + u.clave + "'", null).Select();
     if (rows.Count() > 0)
     {
         DataRow dr = rows[0];
         u.nomUsuario = dr.Field<string>("Nombre_Usuario");
         u.nomOrganizacion = dr.Field<string>("str_Organización");
         ViewBag.Error = null;
         System.Web.HttpContext.Current.Session["usuario"] = u;
         System.Web.HttpContext.Current.Session["recordarUsuario"] = 1;
         return RedirectToAction("Menu", "Menu");
     }
     else
     {
         ViewBag.Error = "Usuario y/o clave incorrectos";
         u.clave = "";
         return View("Index", u);
     }
 }
 // Generación de menú de sistemas
 public string GenerateMenuSistemas()
 {
     string menu = "";
     //menu += "<ul class='nav-sub'>";
     Conexion conexion = new Conexion();
     DataRow[] sistemas = conexion.SelectDataTable("select ubd.Id_Usuario, bd.Id_Base_Datos, bd.str_Descripción_Base_Datos from tbl_M_Bases_Datos bd "
         + "inner join tbl_M_Usuarios_X_Base_Datos ubd on ubd.Id_Base_Datos = bd.Id_Base_Datos "
         + "inner join tbl_M_Usuarios u on u.Id_Usuario = ubd.Id_Usuario where ubd.Id_Usuario = '" + usuario.idUsuario + "'", null).Select();
     //IEnumerable<DataRow> sistemas = sist.AsEnumerable().Where(x => x["Id_Usuario"].ToString() == idUsuario);
     if (sistemas.Count() > 0)
     {
         foreach (DataRow dr in sistemas)
         {
             string MenuName = dr["str_Descripción_Base_Datos"].ToString();
             int MenuID = Int32.Parse(dr["Id_Base_Datos"].ToString());
             DataTable menus = conexion.SelectDataTable("SELECT u.Id_Usuario, ma.ID_Menu, ma.Descripcion, ma.Id_Papa, ma.Icono_Bootstrap, ma.Id_Base_Datos, ma.Url, ma.Tipo, ma.Id_Registro FROM   tbl_M_Bases_Datos bd "
                 +"INNER JOIN tbl_M_Menú_Aplicaciones ma ON bd.Id_Base_Datos = ma.Id_Base_Datos INNER JOIN tbl_M_Roles r ON bd.Id_Base_Datos = r.Id_Base_Datos "
                 +"INNER JOIN tbl_M_Roles_X_Autorizacion ra ON ma.ID_Menu = ra.Id_Menu AND r.Id_Rol = ra.ID_Rol INNER JOIN tbl_M_Usuarios_X_Base_Datos ubd ON bd.Id_Base_Datos = ubd.Id_Base_Datos "
                 +"INNER JOIN tbl_M_Usuarios u ON ubd.Id_Usuario = u.Id_Usuario INNER JOIN tbl_M_Usuarios_X_Roles ur ON r.Id_Rol = ur.Id_Rol AND u.Id_Usuario = ur.Id_Usuario where u.Id_Usuario = '" + usuario.idUsuario + "' AND ma.Id_Base_Datos = " + MenuID, null);
             IEnumerable<DataRow> rows = menus.AsEnumerable().Where(x => Int32.Parse(x["Id_Papa"].ToString()) == 0);
             if (rows.Count() > 0)
             {
                 //String submenu = "#submenu" + MenuID;
                 menu += "<li class='nav-dropdown'><a href='' id='sistema' title='" + MenuName + "'><i class='fa  fa-fw fa-moon-o'></i>" + MenuName+"</a>";
                 string subMenu = "";
                 menu += GenerateMenuTotal(rows, subMenu, MenuID, menus);
             }
             /*else
             {
                 menu += "<li><a href='' id='"+MenuID+"' title='sistema'><i class='fa  fa-fw fa-moon-o'></i>" + MenuName + "</a>";
             }*/
             menu += "</li>";
         }
     }
     //menu += "</ul>";
     return menu;
 }
        //public List<DataRow> ValidateForeignKey(string tablaCarga)
        //{
        //    Conexion conexion = new Conexion();
        //    DataRow[] empr = conexion.SelectDataTable("SELECT CTU.TABLE_NAME, KCU.COLUMN_NAME[COLUMN], CTU2.TABLE_NAME[REFERENCED_TABLE], KCU2.COLUMN_NAME[REFERENCED_COLUMN], "
        //        +"CTU.CONSTRAINT_NAME FROM INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE CTU "
        //        +"JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU ON KCU.CONSTRAINT_NAME = CTU.CONSTRAINT_NAME AND KCU.CONSTRAINT_SCHEMA = CTU.CONSTRAINT_SCHEMA "
        //        +"JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS RC ON RC.CONSTRAINT_NAME = CTU.CONSTRAINT_NAME AND RC.CONSTRAINT_SCHEMA = CTU.CONSTRAINT_SCHEMA "
        //        +"JOIN INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE CTU2 ON CTU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME AND CTU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA "
        //        +"JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE KCU2 ON KCU2.CONSTRAINT_NAME = RC.UNIQUE_CONSTRAINT_NAME AND KCU2.CONSTRAINT_SCHEMA = RC.UNIQUE_CONSTRAINT_SCHEMA", Session["dataSource"].ToString()).Select();
        //    List<DataRow> infoTabla = empr.AsEnumerable().Where(x => x["TABLE_NAME"].ToString() == tablaCarga && x["CONSTRAINT_NAME"].ToString().StartsWith("FK_")).ToList();

        //    return infoTabla;
        //}

        public string ValidateKey(string tablaCarga, string datasource)
        {
            string pk = "";
            Conexion conexion = new Conexion();
            DataRow[] infoTabla = conexion.SelectDataTable("select t.table_name, c.column_name, t.constraint_type from information_schema.table_constraints t "
            + "inner join information_schema.key_column_usage c on t.constraint_name = c.constraint_name where t.table_name = '" + tablaCarga + "' and t.constraint_type = 'PRIMARY KEY'", datasource).Select();
            //List<DataRow> infoTabla = empr.AsEnumerable().Where(x => x["TABLE_NAME"].ToString() == tablaCarga && x["CONSTRAINT_TYPE"].ToString() == "PRIMARY KEY").ToList();
            //foreach (DataRow dr in infoTabla)
            //{
                DataRow dr = infoTabla[0];
                pk = dr["COLUMN_NAME"].ToString();
            //}
            return pk;
        }
        public string LoadParameters(string parametros, string tablaCarga, string tipoControl, string nombreCampo, string Query, List<Dimension> dim, string dimension, int idParam)
        {
            //string parametros = "";
            Conexion conexion = new Conexion();
            IEnumerable<DataRow> datos;
            string datasource = System.Web.HttpContext.Current.Session["dataSource"].ToString();

            //DataRow[] datos = conexion.SelectDataTable("select * from "+tablaCarga, Session["dataSource"].ToString()).Select();
            if (!Query.Equals(""))
            {
                datos = conexion.SelectDataTable(Query, datasource).Select();
                //IEnumerable<DataRow> row = datos.AsEnumerable().Where(x => condicion);
            }
            else
            {
                datos = conexion.SelectDataTable("select * from " + tablaCarga, datasource).Select();
            }
            //IEnumerable<DataRow> row = param.AsEnumerable().Where(x => x["Id_Menu"].ToString() == idMenu);
            if (datos.Count() > 0)
            {
                string nomPK = ValidateKey(tablaCarga, datasource);

                if (tipoControl.Contains("check"))
                {
                    if (datos.Count() > 1)
                    {
                        parametros += "<input type='checkbox' class='param"+idParam+"' name='" + nombreCampo + "' value='0' checked> Todas<br>";
                        List<string> aux = new List<string>();
                        aux.Add("Todas");
                        dim.Add(new Dimension { nombreDimension = dimension, idControl = idParam, nombrePK = nomPK, valores = aux, tipoControl = "checkbox" });
                    }
                    foreach (DataRow dr in datos)
                    {
                        var id = dr[nomPK];
                        string nombre = dr[nombreCampo].ToString();

                        if (datos.Count() == 1)
                        {
                            parametros += "<input type='checkbox' class='param"+idParam+"' name='" + nombreCampo + "' value='" + id + "' checked> " + nombre + "<br>";
                            List<string> aux = new List<string>();
                            aux.Add(id.ToString());
                            dim.Add(new Dimension { nombreDimension = dimension, idControl = idParam, nombrePK = nomPK, valores = aux, tipoControl = "checkbox" });
                        }
                        else
                        {
                            parametros += "<input type='checkbox' class='param"+idParam+"' name='" + nombreCampo + "' value='" + id + "'> " + nombre + "<br>";
                        }
                        //parametros += "<input type='checkbox' id='" + id + "'  value='" + id + "'>" + nombre;
                        //parametros += "<option value='" + id + "'>" + nombre + "</option>";
                        //dimensiones.Add(new Dimension { nombreTabla = tablaCarga, nombreColumna = nomPK, valorColumna = id.ToString(), tipoControl = tipoControl });
                    }
                }
                else if (tipoControl.Contains("drop"))
                {
                    parametros += "<select name='" + nombreCampo + "' class='form-control' id='param"+idParam+"'>";
                    selects.Add(idParam);
                    if (datos.Count() > 1)
                    {
                        parametros += "<option value='0' selected>Todas</option>";
                        List<string> aux = new List<string>();
                        aux.Add("Todas");
                        dim.Add(new Dimension { nombreDimension = dimension, idControl = idParam, nombrePK = nomPK, valores = aux, tipoControl = "select" });
                    }
                    foreach (DataRow dr in datos)
                    {
                        //string pk = ValidateKey(tablaCarga);
                        var id = dr[nomPK];
                        string nombre = dr[nombreCampo].ToString();

                        if (datos.Count() == 1)
                        {
                            parametros += "<option value='" + id + "' selected>" + nombre + "</option>";
                            List<string> aux = new List<string>();
                            aux.Add(id.ToString());
                            dim.Add(new Dimension { nombreDimension = dimension, idControl = idParam, nombrePK = nomPK, valores = aux, tipoControl = "select" });
                        }
                        else
                        {
                            parametros += "<option value='" + id + "'>" + nombre + "</option>";
                        }
                        //parametros += "<input type='checkbox' id='" + id + "'  value='" + id + "'>" + nombre; 
                        //dimensiones.Add(new Dimension { nombreTabla = tablaCarga, nombreColumna = nomPK, valorColumna = id.ToString(), tipoControl = tipoControl });
                    }
                    parametros += "</select>";
                }else if (tipoControl.Contains("radio"))
                {
                    //parametros += "<select name='" + nombreCampo + "' class='form-control' id='select2'>";
                    parametros += "<div class='radio'>";

                    if (datos.Count() > 1)
                    {
                        parametros += "<label><input type='radio' id='param"+idParam+"' name='"+nombreCampo+"' value='0' checked> Todas</label><br/>";
                        List<string> aux = new List<string>();
                        aux.Add("Todas");
                        dim.Add(new Dimension { nombreDimension = dimension, idControl = idParam, nombrePK = nomPK, valores = aux, tipoControl = "radiobutton" });
                    }

                    foreach (DataRow dr in datos)
                    {
                        //string pk = ValidateKey(tablaCarga);
                        var id = dr[nomPK];
                        string nombre = dr[nombreCampo].ToString();

                        if (datos.Count() == 1)
                        {
                            //parametros += "<option value='" + id + "'selected>" + nombre + "</option>";
                            parametros += "<label><input type='radio' id='param"+idParam+"' name='" + nombreCampo + "' value='" + id + "' checked> "+nombre+"</label>";
                            List<string> aux = new List<string>();
                            aux.Add(id.ToString());
                            dim.Add(new Dimension { nombreDimension = dimension, idControl = idParam, nombrePK = nomPK, valores = aux, tipoControl = "radiobutton" });
                        }
                        else
                        {
                            parametros += "<label><input type='radio' id='param"+idParam+"' name='" + nombreCampo + "' value='" + id + "'> " + nombre + "</label><br/>";
                        }
                    }
                    parametros += "</div>";
                }
            }
            return parametros;
        }
        // Generación de parametros para reportes

        public string GenerateParameters(string idMenu, string idRegistro, List<Dimension>dim)
        {
            string parametros = "";
            Conexion conexion = new Conexion();
            //string condicion = "";
            //Boolean b = false;
            conexion.obtenerDataSource(idMenu);
            DataRow[] param = conexion.SelectDataTable("select Id_Parametro, Dimension, Tabla_Carga, Tipo_Control, Nombre_Campo, Query_Dinamico from tbl_M_Parametros_Consulta_Tablero_Control where Id_Menu = " + idMenu, null).Select();
            //IEnumerable<DataRow> row = param.AsEnumerable().Where(x => x["Id_Menu"].ToString() == idMenu);

            //parametros += "<li class='list-group-item'><div class='name'>Empresa</div><input type='checkbox' id='" + u.nitOrganizacion + "' name='cEmpresa' value='" + u.nitOrganizacion + "' checked> " + u.nomOrganizacion;

            if (param.Count() > 0)
            {
                foreach (DataRow dr in param)
                {
                    int Id = Int32.Parse(dr["Id_Parametro"].ToString());
                    string Dimension = dr["Dimension"].ToString();
                    string NomMenu = Dimension.Replace(" ", "");
                    string TablaCarga = dr["Tabla_Carga"].ToString();
                    string TipoControl = dr["Tipo_Control"].ToString().ToLower();
                    string NombreCampo = dr["Nombre_Campo"].ToString();
                    string Query = dr["Query_Dinamico"].ToString();

                    parametros += "<li class='list-group-item'><a href='#menu" + NomMenu + "' class='name' data-toggle='collapse' aria-expanded='true'>" + Dimension
                        + " <i class='fa fa-caret-down'></i></a><div class='collapse in' id='menu" + NomMenu + "' aria-expanded='true'>";
                    string tmp = "";

                    if (!Query.Equals(""))
                    {
                        Query = Query.Replace("_User_", usuario.idUsuario);
                        Query = Query.Replace("_Encuesta_", idRegistro);
                    }

                    if (TipoControl.Equals("textbox"))
                    {
                        parametros += "<input type='text' id='param"+Id+"' name='" + NombreCampo + "' value=''></div>";
                        List<string> aux = new List<string>();
                        dim.Add(new Dimension { nombreDimension = Dimension, idControl = Id, valores = aux, tipoControl = "textbox"});
                    }
                    else if (TipoControl.Equals("date"))
                    {
                        parametros += "<input type='text' value='' class='form-control' id='param" + Id + "' name='" + NombreCampo + "'></div>";
                        dates.Add(Id);
                        List<string> aux = new List<string>();
                        dim.Add(new Dimension { nombreDimension = Dimension, idControl = Id, valores = aux, tipoControl = "date" });
                    }
                    else if (TipoControl.Equals("textarea"))
                    {
                        parametros += "<textarea class='form-control' id='param"+Id+"' name='" + NombreCampo + "' rows='3'></textarea></div>";
                        List<string> aux = new List<string>();
                        dim.Add(new Dimension { nombreDimension = Dimension, idControl = Id, valores = aux, tipoControl = "textarea" });
                    }
                    else {
                        parametros += LoadParameters(tmp, TablaCarga, TipoControl, NombreCampo, Query, dim, Dimension, Id);
                        parametros += "</div>";
                    }
                    parametros += "</li>";
                }
            }
            System.Web.HttpContext.Current.Session["paramDates"] = dates;
            System.Web.HttpContext.Current.Session["paramSelects"] = selects;
            return parametros;
        }