Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }