private List <csSubModulo> AccesoMayor(List <Generales_Accesos> generales_accesos, int posAccesos, List <csSubModulo> SubsModulos, out int posGeneralesAccesos) { csSubModuloHandler SubModuloHandler = new csSubModuloHandler(); List <csSubModulo> SubModulos = SubsModulos; posGeneralesAccesos = 0; for (int x = posAccesos; x < generales_accesos.Count; x++) { int pos = x + 1 >= generales_accesos.Count ? x : x + 1; if (generales_accesos[pos].orden.Trim().Length > generales_accesos[x].orden.Trim().Length) { SubModulos.Add(SubModuloHandler.AddSubModulos(generales_accesos[x])); int ultimoSubModulo = SubModulos.Count - 1; SubModulos[ultimoSubModulo].SubModulos = (this.AccesoMayor(generales_accesos, pos, SubModulos[ultimoSubModulo].SubModulos, out posGeneralesAccesos)); x = posGeneralesAccesos; break; } else if (generales_accesos[pos].orden.Trim().Length < generales_accesos[x].orden.Trim().Length) { SubModulos.Add(SubModuloHandler.AddSubModulos(generales_accesos[x])); posGeneralesAccesos = x; break; } else { SubModulos.Add(SubModuloHandler.AddSubModulos(generales_accesos[x])); posGeneralesAccesos = x; } } return(SubModulos); }
public List <csModulo> CreateAccesos() { db_sporting_gymContainer contexto = new db_sporting_gymContainer(); List <Generales_Accesos> generales_accesos = contexto.Generales_Accesos.Select(a => a).OrderBy(a => a.orden).ToList(); csSubModuloHandler SubModuloHandler = new csSubModuloHandler(); csModulo tempModulo = new csModulo(); List <csModulo> Modulos = new List <csModulo>(); int posGeneralesAccesos = 0; int LengthSistema = 0; int countGeneralesAccesos = generales_accesos.Count; for (int x = 0; x < countGeneralesAccesos; x++) { int strNodoLength = generales_accesos[x].orden.Trim().Length; if (generales_accesos[x].padre == 1) { if (tempModulo.subModulos.Count > 0) { Modulos.Add(tempModulo); tempModulo = new csModulo(); } tempModulo.id_General_Acceso = generales_accesos[x].id_acceso; tempModulo.nombre_Acceso = generales_accesos[x].nombre_acceso.Trim(); tempModulo.nombre_Form = generales_accesos[x].nombre_form.Trim(); LengthSistema = strNodoLength; } else if (strNodoLength > LengthSistema) { tempModulo.subModulos = this.AccesoMayor(generales_accesos, x, tempModulo.subModulos, out posGeneralesAccesos); x = posGeneralesAccesos; LengthSistema = strNodoLength; } else if (strNodoLength == LengthSistema) { tempModulo.subModulos = this.AccesoMayor(generales_accesos, x, tempModulo.subModulos, out posGeneralesAccesos); x = posGeneralesAccesos; LengthSistema = strNodoLength; } //else if (strNodoLength < LengthSistema) //{ // if (generales_accesos[x].padre == 1) // x--; // else // tempModulo.subModulos.Add(SubModuloHandler.AddSubModulos(generales_accesos[x])); // LengthSistema = strNodoLength; //} } if (tempModulo.subModulos.Count > 0) { Modulos.Add(tempModulo); } return(Modulos); }