List <SelectTreeItem> ObtenerItemsSelectTree(string id_padre, string tipo_padre, string spras_id, bool soloNodoSup = false) { List <SelectTreeItem> items = new List <SelectTreeItem>(); db.TSOL_GROUP .Where(x => x.ID_PADRE == id_padre && x.TIPO_PADRE == tipo_padre) .ToList().ForEach(x => { SelectTreeItem item = new SelectTreeItem { text = x.DESCRIPCION, expanded = false, items = ObtenerItemsSelectTree(x.ID, x.TIPO, spras_id, soloNodoSup) }; if (!item.items.Any() && !soloNodoSup) { item.items = ObtenerItemsTSOLT(x.ID, x.TIPO, spras_id); } else if (!item.items.Any() && soloNodoSup) { item.value = x.ID + "|" + x.TIPO; } items.Add(item); }); if (!items.Any() && !soloNodoSup) { items = ObtenerItemsTSOLT(id_padre, tipo_padre, spras_id); } return(items); }
public List <SelectTreeItem> TreeTiposSolicitudes(string sociedad_id, string spras_id, string tipo = null, bool?esReversa = false) { // tipo // SD = Solicitud directa // SR = Solicitud relacionada List <SelectTreeItem> tree = new List <SelectTreeItem>(); if (esReversa.Value) { tree.Add(new SelectTreeItem { text = "Reverso", expanded = false, items = ObtenerItemsTSOLT("", "", spras_id, esReversa) }); } else { List <TSOL_XG> tx = db.TSOL_XG.Where(x => x.SOCIEDAD_ID == sociedad_id && x.ACTIVO).ToList(); db.TSOL_GROUP .Where(x => x.ID_PADRE == null && x.TIPO_PADRE == null && (tipo == x.TIPO || tipo == null) ////&& (((sociedad_id == "KCMX" || sociedad_id == "KLCO") && x.ID != "1_5_OP" && x.ID != "2_5_OP") || (sociedad_id != "KCMX" && sociedad_id != "KLCO"))) )//.Join(db.TSOL_TREE.Where(x => x.TSOL_GROUP_TIPO == tipo), t => t.ID, g => g.TSOL_GROUP_ID, (t, g) => t) .Join(db.TSOL_GROUPT, tg => new { tg.ID, tg.TIPO }, tgt => new { ID = tgt.TSOL_GROUP_ID, TIPO = tgt.TSOL_GROUP_TIPO }, (tg, tgt) => new { tgt.SPRAS_ID, tgt.TSOL_GROUP_ID, tgt.TSOL_GROUP_TIPO, tgt.TXT50, tg.TIPOSOC }) .Where(x => x.SPRAS_ID == spras_id).OrderBy(x => x.TSOL_GROUP_ID) .ToList().ForEach(x => { SelectTreeItem item = new SelectTreeItem { text = x.TXT50, expanded = false, items = ObtenerItemsSelectTree(x.TSOL_GROUP_ID, x.TSOL_GROUP_TIPO, spras_id, tx) }; if (item.items.Any() && !tx.Any(a => a.TSOL_TIPO == x.TIPOSOC)) { tree.Add(item); } }); } return(tree); }