public async Task <List <AreasFunTreeDTO> > FlujoHojaRutaList(int hrDetalleId, int hrdSelected, List <AreasFunTreeDTO> flow = null) { var hrDetalle = await DB.CorrespondenciaHRDetalle .Include(a => a.FunOrg) .Include(a => a.FunDst) .Include(a => a.FunOrg.Puesto) .Include(a => a.FunDst.Puesto) .FirstOrDefaultAsync(a => a.Id == hrDetalleId); if (flow == null) { flow = new List <AreasFunTreeDTO>(); } if (hrDetalle != null) { AreasFunTreeDTO itemTree = new AreasFunTreeDTO(); itemTree.id = $"hrd_{hrDetalle.Id}"; itemTree.parent = (hrDetalle.Padre == 0) ? "#" : $"hrd_{hrDetalle.Padre}"; itemTree.state = new { opened = true, disabled = false, selected = false }; string NameFunOrg = hrDetalle.FunOrg.Name(); string NameFunDst = hrDetalle.FunDst.Name(); string title = $"De: {NameFunOrg} para: {NameFunDst}"; if (hrDetalle.Padre == 0) { title = "Inicio"; } if (hrDetalle.IdEstadoRegistro == Constantes.Anulado) { title = $"{title} (ANULADO)"; } else if (hrDetalle.IdEstadoRegistro == Constantes.Archivado) { title = $"{title} (ARCHIVADO)"; } if (hrdSelected == hrDetalle.Id) { itemTree.state = new { opened = true, disabled = false, selected = true }; } if (hrDetalle.Padre == 0) { itemTree.text = $@"<span class='small text-capitalize jstree-text' title='{title}'>{title}</span>"; } else { itemTree.text = $@"<span class='small text-capitalize jstree-text' title='{title}'> <div class='row float-right' style='margin: 5px 0;line-height: 12px;'> <div class='col-6 text-left pl-0 text-truncate'><b>De:</b> {NameFunOrg.ToLower()} <div class='text-center'><b>({hrDetalle.FunOrg.Puesto.Descripcion})</b></div> </div> <div class='col-6 text-left p-0 text-truncate'><b> Para:</b> {NameFunDst.ToLower()} <div class='text-center'><b>({hrDetalle.FunDst.Puesto.Descripcion})</b></div> </div> </div></span>"; } flow.Add(itemTree); var children = DB.CorrespondenciaHRDetalle .Where(a => a.Padre == hrDetalle.Id) .OrderBy(a => a.FechaRegistro) .ToList(); foreach (var child in children) { flow = await FlujoHojaRutaList(child.Id, hrdSelected, flow); } } return(flow); }
public async Task <List <AreasFunTreeDTO> > GetAreasList(string uSigla, int currentFunId, List <AreasFunTreeDTO> areas = null) { var unidadEjecutora = await DB.RRHH_UnidadEjecutora.FirstOrDefaultAsync(a => a.Sigla == uSigla); if (areas == null) { areas = new List <AreasFunTreeDTO>(); } if (unidadEjecutora != null) { var nodeRaiz = await DB.RRHH_UnidadEjecutora.FirstOrDefaultAsync(a => a.Sigla == "GG"); AreasFunTreeDTO area = new AreasFunTreeDTO(); area.areaId = unidadEjecutora.IdUnidadEjecutora; area.id = $"area_{unidadEjecutora.IdUnidadEjecutora}"; area.text = unidadEjecutora.Descripcion; area.orden = unidadEjecutora.OrdenMostrar == 0 ? 100 : unidadEjecutora.OrdenMostrar; area.parent = (unidadEjecutora.IdUnidadEjecutoraPadre == 0) ? "#" : $"area_{unidadEjecutora.IdUnidadEjecutoraPadre}"; // area.icon = "ti-folder"; if (unidadEjecutora.IdUnidadEjecutoraPadre == nodeRaiz.IdUnidadEjecutora || unidadEjecutora.IdUnidadEjecutora == nodeRaiz.IdUnidadEjecutora) { area.state = new { opened = true, disabled = false, selected = false }; } areas.Add(area); var funcionarios = DB.RRHH_Beneficiario .Include(b => b.Puesto) .Where(b => b.PuestoId > 1 && b.IdBeneficiario != currentFunId) .Where(b => (b.IdEstadoRegistro != Constantes.Anulado || b.IdEstadoRegistro == null)) .Where(b => b.Puesto.IdUnidadEjecutora == unidadEjecutora.IdUnidadEjecutora) .OrderBy(b => b.Denominacion) .Select(c => new { Id = c.IdBeneficiario, Nombre = c.Denominacion, cargo = c.Puesto.Descripcion }).ToList(); foreach (var f in funcionarios) { AreasFunTreeDTO fun = new AreasFunTreeDTO(); fun.areaId = unidadEjecutora.IdUnidadEjecutora; fun.funId = f.Id; fun.id = $"fun_{f.Id}"; fun.text = $"<span class='small jstree-text text-uppercase'>{f.Nombre}<div class='ml-5'><b>({f.cargo})</b></div></span>"; fun.parent = area.id; fun.icon = "/lib/theme-elegant/img/users/user-male-iconx24.png"; areas.Add(fun); } var children = DB.RRHH_UnidadEjecutora .Where(a => a.IdUnidadEjecutoraPadre == unidadEjecutora.IdUnidadEjecutora) .Where(a => a.IdEstadoRegistro != Constantes.Anulado) .OrderBy(a => a.Descripcion) .ToList(); foreach (var child in children) { areas = await GetAreasList(child.Sigla, currentFunId, areas); } } return(areas); }