public void recursion(TJerarquia nodo)
            {
                JerarquiaNodeVM jerarquiaPadre = new JerarquiaNodeVM();

                jerarquiaPadre.data      = nodo.CodPosicion;
                jerarquiaPadre.label     = nodo.Descripcion;
                jerarquiaPadre.Tipo      = nodo.Tipo;
                jerarquiaPadre.CodElipse = nodo.CodElipse;
                TJerarquia padre = _context.TJerarquia.Where(i => i.CodPosicion == nodo.CodPosicionPadre).Include(i => i.Padre).First();

                if (nodo.Tipo != "G")
                {
                    if (nodo.Tipo == "S" && estadoS)
                    {
                        estadoS = false;
                        nodos.data.Add(jerarquiaPadre);
                    }
                }
                else
                {
                    if (nodo.Tipo == "G" && estadoG)
                    {
                        estadoG = false;
                        nodos.data.Add(jerarquiaPadre);
                        return;
                    }
                }
                recursion(padre);
            }
            private async Task <List <TJerarquia> > GetJeraquiaSG(string codPersona)
            {
                var jerarquiaPersona = await _context.TJerarquiaPersona.FirstOrDefaultAsync(i => i.CodPersona == codPersona);

                bool estadoG = true, estadoS = true;

                if (jerarquiaPersona == null)
                {
                    return(null);
                }
                List <TJerarquia> list = new List <TJerarquia>();

                TJerarquia iter = _context.TJerarquia.Where(i => i.CodPosicion == jerarquiaPersona.CodPosicion).FirstOrDefault();

                while (iter != null && (estadoG || estadoS))
                {
                    if (iter.Tipo == "S" && estadoS)
                    {
                        estadoS = false;
                        list.Add(iter);
                    }
                    if (iter.Tipo == "G" && estadoG)
                    {
                        estadoG = false;
                        list.Add(iter);
                    }
                    iter = _context.TJerarquia.Where(i => i.CodPosicion == iter.CodPosicionPadre).FirstOrDefault();
                }

                return(list);
            }
Esempio n. 3
0
            public JerarquiaNodeVM recursion(TJerarquia it)
            {
                var jerarquiaPadre = new JerarquiaNodeVM();

                jerarquiaPadre.data      = it.CodPosicion;
                jerarquiaPadre.label     = it.Descripcion;
                jerarquiaPadre.Tipo      = it.Tipo;
                jerarquiaPadre.CodElipse = it.CodElipse;
                if (it.Hijos.Count == 0)
                {
                    return(jerarquiaPadre);
                }


                if (it.Hijos.Count > 0)
                {
                    foreach (var hijo in it.Hijos)
                    {
                        if (hijo.Tipo != "O" && hijo.Estado && hijo.Visible)
                        {
                            jerarquiaPadre.children.Add(recursion(hijo));
                        }
                    }
                }

                return(jerarquiaPadre);
            }
            public async Task <Unit> Handle(CreateJerarquiaNodeCommand request, CancellationToken cancellationToken)
            {
                if (request.Tipo == "G" || request.Tipo == "S" || request.Tipo == "O")
                {
                    var entity         = new TJerarquia();
                    var JerarquiaPadre = await _context.TJerarquia.FirstOrDefaultAsync(u => u.CodPosicion == request.NodeParent).ConfigureAwait(true);

                    if (JerarquiaPadre != null)
                    {
                        entity.CodPosicion      = nextCod();
                        entity.CodPosicionPadre = JerarquiaPadre.CodPosicion;
                        entity.Descripcion      = request.Description;
                        entity.CodElipse        = request.CodElipse;
                        entity.PathJerarquia    = JerarquiaPadre.PathJerarquia + entity.CodPosicion.ToString() + "/";
                        entity.NivelJerarquia   = (short)(JerarquiaPadre.PathJerarquia.Split('/').Length - 1);
                        entity.Tipo             = request.Tipo;
                        entity.Estado           = true;

                        _context.TJerarquia.Add(entity);
                        await _context.SaveChangesAsync(cancellationToken);
                    }
                    else
                    {
                        new GeneralFailureException("Nodo padre no fue encontrado");
                    }
                }

                else
                {
                    new TipoJerarquiaException();
                }
                return(Unit.Value);
            }