protected void Page_Load(object sender, EventArgs e)
        {
            var permisos = new PermisosSesion(this.Page);

            permisos.ValidarSesion();

            if (!Page.IsPostBack)
            {
                //permisos.ValidarPermisos(this.rtb1);

                List <CatCNac_Estructura> hijosPrimerNodo = null;
                RadTreeNode nodoOrigen    = null;
                int         id            = Int32.Parse(Request.QueryString["Id"]);
                int         id_ClienteMat = Int32.Parse(Request.QueryString["IdMatriz"]);
                string      NombreCliente = Request.QueryString["Nombre"];

                CN_CatCNac_Estructura cm_Estr = new CN_CatCNac_Estructura(model);

                listEstructura = cm_Estr.ConsultarTodos(id_ClienteMat);



                CN_CatCNac_Usuario cm_Usuario = new CN_CatCNac_Usuario(model);
                Session["cm_Usuario"] = cm_Usuario;

                cmbRol_Auditorias.DataSource = cm_Usuario.ComboAuditorias();
                cmbRol_Auditorias.DataBind();

                cmbRol_Ecommerce.DataSource = cm_Usuario.ComboECommerce();
                cmbRol_Ecommerce.DataBind();

                if (id > 0)
                {
                    var    usuario    = cm_Usuario.ConsultarItem(id);
                    object objusuario = usuario;
                    AsignacionCampos.AsignaCamposForma(ref objusuario, "", this);

                    //Permisos
                    listPermisos = cm_Usuario.ConsultarPermisos(id);
                }

                nodoOrigen           = new RadTreeNode(NombreCliente, "0");
                nodoOrigen.Font.Bold = true;
                nodoOrigen.Font.Size = 11;

                hijosPrimerNodo = listEstructura.Where(x => x.Nivel == 1).ToList();
                ConstruirEstructura(ref nodoOrigen, hijosPrimerNodo);
                treeEstructura.Nodes.Add(nodoOrigen);
                treeEstructura.ExpandAllNodes();
            }
        }
        protected void btnCargaExcel_Click(object sender, EventArgs e)
        {
            HttpPostedFile filePosted = Request.Files[0];

            string pathArchivo = "c:\\KeyWeb_Log\\excelTempCC.xlsx";

            filePosted.SaveAs(pathArchivo);

            var excelFile = new ExcelQueryFactory(pathArchivo);
            var miHoja    = excelFile.Worksheet(0).Select(x => x).ToList();
            CN_CatCNac_Estructura cm_Estr = new CN_CatCNac_Estructura(model);



            using (TransactionScope scope = new TransactionScope())
            {
                try
                {
                    cm_Estr.Borrar(Int32.Parse(Request.QueryString["Id"]));
                    listEstructura.Clear();


                    int padre1 = 0;
                    int padre2 = 0;
                    int padre3 = 0;
                    int padre4 = 0;



                    foreach (var item in miHoja)
                    {
                        CatCNac_Estructura est = new CatCNac_Estructura();
                        est.Id_Matriz = Int32.Parse(Request.QueryString["Id"]);

                        //Nivel 1


                        if (item["Nivel ACYS"] == null)
                        {
                            throw new Exception("Falta la columna Nivel ACYS");
                        }
                        if (item["ACYS"] == null)
                        {
                            throw new Exception("Falta la columna ACYS");
                        }
                        if (item["Sucursal"] == null)
                        {
                            throw new Exception("Falta la columna Sucursal");
                        }



                        if (nivelMax >= 1)
                        {
                            est.NombreNodo = item[0].Value.ToString();
                            if (!this.listEstructura.Exists(x => x.NombreNodo == est.NombreNodo && x.Id_Matriz == est.Id_Matriz && x.Nivel == 1))
                            {
                                est.Nivel     = 1;
                                est.NodoPadre = 0;

                                if (nivelMax == 1)
                                {
                                    est.Nivel_ACYS = item["Nivel ACYS"].Cast <int>();

                                    var acysC = listaACYS.Where(x => x.Nombre == item["ACYS"]).FirstOrDefault();

                                    if (acysC == null)
                                    {
                                        throw new Exception("El acys no existe: " + item["ACYS"]);
                                    }

                                    int idAcys = acysC.Id;
                                    est.id_Acys = idAcys;

                                    est.Sucursal = item["Sucursal"].Cast <int>();
                                    var suc = listaSucursales.Where(x => x.Id_Cd == est.Sucursal).FirstOrDefault();

                                    if (suc == null)
                                    {
                                        throw new Exception("La Sucursal no existe: " + item["Sucursal"]);
                                    }


                                    est.NombreSucursal = item["Sucursal"] + " - " + suc.Cd_Nombre;
                                }


                                int resId = cm_Estr.Alta(est);
                                est.Id = resId;
                                padre1 = resId;
                                listEstructura.Add(est);
                            }
                        }



                        if (nivelMax >= 2)
                        {
                            //Nivel 2
                            est            = new CatCNac_Estructura();
                            est.NombreNodo = item[1].Value.ToString();
                            est.Id_Matriz  = Int32.Parse(Request.QueryString["Id"]);
                            if (!this.listEstructura.Exists(x => x.NombreNodo == est.NombreNodo && x.Id_Matriz == est.Id_Matriz && x.Nivel == 2 && x.NodoPadre == padre1))
                            {
                                est.Id_Matriz = Int32.Parse(Request.QueryString["Id"]);
                                est.Nivel     = 2;
                                est.NodoPadre = padre1;

                                if (nivelMax == 2)
                                {
                                    est.Nivel_ACYS = item["Nivel ACYS"].Cast <int>();

                                    var acysC = listaACYS.Where(x => x.Nombre == item["ACYS"]).FirstOrDefault();

                                    if (acysC == null)
                                    {
                                        throw new Exception("El acys no existe: " + item["ACYS"]);
                                    }

                                    int idAcys = acysC.Id;
                                    est.id_Acys = idAcys;

                                    est.Sucursal = item["Sucursal"].Cast <int>();
                                    var suc = listaSucursales.Where(x => x.Id_Cd == est.Sucursal).FirstOrDefault();

                                    if (suc == null)
                                    {
                                        throw new Exception("La Sucursal no existe: " + item["Sucursal"]);
                                    }


                                    est.NombreSucursal = item["Sucursal"] + " - " + suc.Cd_Nombre;
                                }

                                int resId = cm_Estr.Alta(est);
                                est.Id = resId;
                                padre2 = resId;
                                listEstructura.Add(est);
                            }
                        }

                        if (nivelMax >= 3)
                        {
                            //Nivel 3
                            est            = new CatCNac_Estructura();
                            est.NombreNodo = item[2].Value.ToString();
                            est.Id_Matriz  = Int32.Parse(Request.QueryString["Id"]);
                            if (!this.listEstructura.Exists(x => x.NombreNodo == est.NombreNodo && x.Id_Matriz == est.Id_Matriz && x.Nivel == 3 && x.NodoPadre == padre2))
                            {
                                est.Id_Matriz = Int32.Parse(Request.QueryString["Id"]);
                                est.Nivel     = 3;
                                est.NodoPadre = padre2;


                                if (nivelMax == 3)
                                {
                                    est.Nivel_ACYS = item["Nivel ACYS"].Cast <int>();

                                    var acysC = listaACYS.Where(x => x.Nombre == item["ACYS"]).FirstOrDefault();

                                    if (acysC == null)
                                    {
                                        throw new Exception("El acys no existe: " + item["ACYS"]);
                                    }

                                    int idAcys = acysC.Id;
                                    est.id_Acys = idAcys;


                                    est.Sucursal = item["Sucursal"].Cast <int>();
                                    var suc = listaSucursales.Where(x => x.Id_Cd == est.Sucursal).FirstOrDefault();

                                    if (suc == null)
                                    {
                                        throw new Exception("La Sucursal no existe: " + item["Sucursal"]);
                                    }


                                    est.NombreSucursal = item["Sucursal"] + " - " + suc.Cd_Nombre;
                                }

                                int resId = cm_Estr.Alta(est);
                                est.Id = resId;
                                padre3 = resId;
                                listEstructura.Add(est);
                            }
                        }


                        if (nivelMax >= 4)
                        {
                            //Nivel 4
                            est            = new CatCNac_Estructura();
                            est.NombreNodo = item[3].Value.ToString();
                            est.Id_Matriz  = Int32.Parse(Request.QueryString["Id"]);
                            if (!this.listEstructura.Exists(x => x.NombreNodo == est.NombreNodo && x.Id_Matriz == est.Id_Matriz && x.Nivel == 4 && x.NodoPadre == padre3))
                            {
                                est.Id_Matriz = Int32.Parse(Request.QueryString["Id"]);
                                est.Nivel     = 4;
                                est.NodoPadre = padre3;

                                est.Nivel_ACYS = item["Nivel ACYS"].Cast <int>();

                                var acysC = listaACYS.Where(x => x.Nombre == item["ACYS"]).FirstOrDefault();

                                if (acysC == null)
                                {
                                    throw new Exception("El acys no existe: " + item["ACYS"]);
                                }

                                int idAcys = acysC.Id;
                                est.id_Acys = idAcys;

                                est.Sucursal = item["Sucursal"].Cast <int>();
                                var suc = listaSucursales.Where(x => x.Id_Cd == est.Sucursal).FirstOrDefault();

                                if (suc == null)
                                {
                                    throw new Exception("La Sucursal no existe: " + item["Sucursal"]);
                                }


                                est.NombreSucursal = item["Sucursal"] + " - " + suc.Cd_Nombre;

                                int resId = cm_Estr.Alta(est);
                                est.Id = resId;
                                padre4 = resId;
                                listEstructura.Add(est);
                            }
                        }
                    }

                    model.SaveChanges();
                    scope.Complete();
                }
                catch (Exception ex)
                {
                    scope.Dispose();

                    listEstructura.Clear();
                    listEstructura = cm_Estr.ConsultarTodos(Int32.Parse(Request.QueryString["Id"]));
                    RAM1.ResponseScripts.Add("CloseAlert('" + ex.Message + "')");
                }
                finally
                {
                    var nodoA           = treeEstructura.Nodes[0];
                    var hijosPrimerNodo = listEstructura.Where(x => x.Nivel == 1).ToList();
                    nodoA.Nodes.Clear();
                    ConstruirEstructura(ref nodoA, hijosPrimerNodo);
                    AgregarControles(ref nodoA, hijosPrimerNodo, null);
                    treeEstructura.ExpandAllNodes();
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            List <CatCNac_Estructura> hijosPrimerNodo = null;
            RadTreeNode nodoOrigen = null;

            int    id_ClienteMat = Int32.Parse(Request.QueryString["Id"]);
            string NombreCliente = Request.QueryString["Nombre"];

            nodoOrigen           = new RadTreeNode(NombreCliente, "0");
            nodoOrigen.Font.Bold = true;
            nodoOrigen.Font.Size = 11;


            var permisos = new PermisosSesion(this.Page);

            permisos.ValidarSesion();

            if (!Page.IsPostBack)
            {
                //permisos.ValidarPermisos(this.rtb1);


                CN_CatCNac_Estructura cm_Estr = new CN_CatCNac_Estructura(model);
                listEstructura = cm_Estr.ConsultarTodos(id_ClienteMat);

                CN_CatClienteMatriz cm_Matriz = new CN_CatClienteMatriz(model);
                matriz = cm_Matriz.ConsultarMatrizItem(id_ClienteMat);

                CN_CatCNac_ACYS cm_ACYS = new CN_CatCNac_ACYS(model);
                listaACYS = cm_ACYS.ConsultarACYS(id_ClienteMat);

                if (matriz.Nivel_1.Value)
                {
                    nivelMax = 1;
                }
                if (matriz.Nivel_2.Value)
                {
                    nivelMax = 2;
                }
                if (matriz.Nivel_3.Value)
                {
                    nivelMax = 3;
                }
                if (matriz.Nivel_4.Value)
                {
                    nivelMax = 4;
                }

                hijosPrimerNodo = listEstructura.Where(x => x.Nivel == 1).ToList();
                ConstruirEstructura(ref nodoOrigen, hijosPrimerNodo);
                treeEstructura.Nodes.Add(nodoOrigen);


                //Menus
                RadMenuItem menuNuevo = new RadMenuItem("Nuevo...");
                menuNuevo.Value = "Nuevo";
                RadMenuItem menuBorrar = new RadMenuItem("Borrar");
                menuBorrar.Value = "Borrar";
                RadMenuItem menuAsignar = new RadMenuItem("Asignar");
                menuAsignar.Value = "Asignar";
                //RadMenuItem menuAsignar1 = new RadMenuItem("Asignar1");


                RadMenuItem menuNuevo_A = new RadMenuItem("Nuevo...");
                menuNuevo_A.Value = "Nuevo";
                RadMenuItem menuBorrar_A = new RadMenuItem("Borrar");
                menuBorrar_A.Value = "Borrar";
                RadMenuItem menuAsignar_A = new RadMenuItem("Asignar");
                menuAsignar_A.Value = "Asignar";
                //RadMenuItem menuAsignar1_A = new RadMenuItem("Asignar1");
                //menuAsignar1_A.Value = "Asignar1";
                //RadMenuItem menuAsignar2_A = new RadMenuItem("Asignar2");
                //menuAsignar2_A.Value = "Asignar2";


                RadMenuItem menuNuevo_B = new RadMenuItem("Nuevo...");
                menuNuevo_B.Value = "Nuevo";
                RadMenuItem menuBorrar_B = new RadMenuItem("Borrar");
                menuBorrar_B.Value = "Borrar";
                RadMenuItem menuAsignar_B = new RadMenuItem("Asignar");
                menuAsignar_B.Value = "Asignar";
                //RadMenuItem menuAsignar1_B = new RadMenuItem("Asignar1");
                //menuAsignar1_B.Value = "Asignar1";
                //RadMenuItem menuAsignar2_B = new RadMenuItem("Asignar2");
                //menuAsignar2_B.Value = "Asignar2";
                //RadMenuItem menuAsignar3_B = new RadMenuItem("Asignar3");
                //menuAsignar3_B.Value = "Asignar3";

                RadMenuItem menuNuevo_C = new RadMenuItem("Nuevo...");
                menuNuevo_C.Value = "Nuevo";
                RadMenuItem menuBorrar_C = new RadMenuItem("Borrar");
                menuBorrar_C.Value = "Borrar";
                RadMenuItem menuAsignar_C = new RadMenuItem("Asignar");
                menuAsignar_C.Value = "Asignar";
                RadMenuItem menuAsignar1_C = new RadMenuItem("Asignar1");
                menuAsignar1_C.Value = "Asignar1";
                RadMenuItem menuAsignar2_C = new RadMenuItem("Asignar2");
                menuAsignar2_C.Value = "Asignar2";
                RadMenuItem menuAsignar3_C = new RadMenuItem("Asignar3");
                menuAsignar3_C.Value = "Asignar3";
                RadMenuItem menuAsignar4_C = new RadMenuItem("Asignar4");
                menuAsignar4_C.Value = "Asignar4";


                RadTreeViewContextMenu menuNodos1 = new RadTreeViewContextMenu();
                menuNodos1.ID = "menuNodos1";
                menuNodos1.Items.Add(menuNuevo);
                menuNodos1.Items.Add(menuBorrar);
                menuNodos1.Items.Add(menuAsignar);
                ;

                RadTreeViewContextMenu menuNodos2 = new RadTreeViewContextMenu();
                menuNodos2.ID = "menuNodos2";
                menuNodos2.Items.Add(menuNuevo_A);
                menuNodos2.Items.Add(menuBorrar_A);
                menuNodos2.Items.Add(menuAsignar_A);


                RadTreeViewContextMenu menuNodos3 = new RadTreeViewContextMenu();
                menuNodos3.ID = "menuNodos3";
                menuNodos3.Items.Add(menuNuevo_B);
                menuNodos3.Items.Add(menuBorrar_B);
                menuNodos3.Items.Add(menuAsignar_B);


                RadTreeViewContextMenu menuNodos4 = new RadTreeViewContextMenu();
                menuNodos4.ID = "menuNodos4";
                menuNodos4.Items.Add(menuNuevo_C);
                menuNodos4.Items.Add(menuBorrar_C);
                menuNodos4.Items.Add(menuAsignar_C);
                menuNodos4.Items.Add(menuAsignar1_C);
                menuNodos4.Items.Add(menuAsignar2_C);
                menuNodos4.Items.Add(menuAsignar3_C);
                menuNodos4.Items.Add(menuAsignar4_C);


                treeEstructura.ContextMenus.Add(menuNodos1);
                treeEstructura.ContextMenus.Add(menuNodos2);
                treeEstructura.ContextMenus.Add(menuNodos3);
                treeEstructura.ContextMenus.Add(menuNodos4);


                AgregarControles(ref nodoOrigen, hijosPrimerNodo, null);



                // ConsultaTipos()
                CN_CatClienteMatriz cnMat = new CN_CatClienteMatriz(model);
                var sucursales            = cnMat.ConsultaTipos();

                listaSucursales = sucursales;

                var menuSuc = new RadMenuItem("Sucursales");
                foreach (CatCDI suc in sucursales)
                {
                    RadMenuItem itemAgregar = new RadMenuItem(suc.Id_Cd.ToString() + "-" + suc.Cd_Nombre);
                    itemAgregar.Value = suc.Id_Cd.ToString();
                    menuSuc.Items.Add(itemAgregar);
                }


                var menuA = treeEstructura.ContextMenus[3];
                menuA.Items.Add(menuSuc);

                var menuAsig1 = menuA.Items[3];
                var acys1     = listaACYS.Where(x => x.NivelAcys == 1).ToList();
                foreach (CatCNac_ACYS ac in acys1)
                {
                    RadMenuItem itemAgregar = new RadMenuItem(ac.Nombre);
                    itemAgregar.Value = "[ACYS]" + ac.Id.ToString();
                    menuAsig1.Items.Add(itemAgregar);
                }

                var menuAsig2 = menuA.Items[4];
                var acys2     = listaACYS.Where(x => x.NivelAcys == 2).ToList();
                foreach (CatCNac_ACYS ac in acys2)
                {
                    RadMenuItem itemAgregar = new RadMenuItem(ac.Nombre);
                    itemAgregar.Value = "[ACYS]" + ac.Id.ToString();
                    menuAsig2.Items.Add(itemAgregar);
                }

                var menuAsig3 = menuA.Items[5];
                var acys3     = listaACYS.Where(x => x.NivelAcys == 3).ToList();
                foreach (CatCNac_ACYS ac in acys3)
                {
                    RadMenuItem itemAgregar = new RadMenuItem(ac.Nombre);
                    itemAgregar.Value = "[ACYS]" + ac.Id.ToString();
                    menuAsig3.Items.Add(itemAgregar);
                }

                var menuAsig4 = menuA.Items[6];
                var acys4     = listaACYS.Where(x => x.NivelAcys == 4).ToList();
                foreach (CatCNac_ACYS ac in acys4)
                {
                    RadMenuItem itemAgregar = new RadMenuItem(ac.Nombre);
                    itemAgregar.Value = "[ACYS]" + ac.Id.ToString();
                    menuAsig4.Items.Add(itemAgregar);
                }


                var menuB = treeEstructura.ContextMenus[0];

                foreach (CatCNac_ACYS ac in acys1)
                {
                    RadMenuItem itemAgregar = new RadMenuItem(ac.Nombre);
                    itemAgregar.Value = "[ACYS]" + ac.Id.ToString();
                    menuB.Items[2].Items.Add(itemAgregar);
                }

                var menuC = treeEstructura.ContextMenus[1];

                foreach (CatCNac_ACYS ac in acys2)
                {
                    RadMenuItem itemAgregar = new RadMenuItem(ac.Nombre);
                    itemAgregar.Value = "[ACYS]" + ac.Id.ToString();
                    menuC.Items[2].Items.Add(itemAgregar);
                }

                var menuD = treeEstructura.ContextMenus[2];

                foreach (CatCNac_ACYS ac in acys3)
                {
                    RadMenuItem itemAgregar = new RadMenuItem(ac.Nombre);
                    itemAgregar.Value = "[ACYS]" + ac.Id.ToString();
                    menuD.Items[2].Items.Add(itemAgregar);
                }
            }



            //hijosPrimerNodo = listEstructura.Where(x => x.Nivel == 1).ToList();

            // treeEstructura.ExpandAllNodes();
        }