getPath() 공개 메소드

public getPath ( int id ) : List
id int
리턴 List
예제 #1
0
        string doVariante(int id, string modeloID, string grupo, string email, int width)
        {
            string           ret   = "";
            List <Propuesta> props = new List <Propuesta>();
            Grupo            g     = app.getGrupo(grupo);

            lock (g)
            {
                //preparo propuestas de nodos ancestros
                Arbol       a    = g.arbol;
                List <Nodo> path = a.getPath(id);
                Modelo      m    = g.organizacion.getModeloDocumento(modeloID);
                g.ts = DateTime.Now;
                foreach (Nodo n in path)
                {
                    Propuesta op = a.getPropuesta(n); //comparo textox con hermanos y resalto palarbas nuevas
                    if (n.nivel > 0 && op != null)
                    {
                        props.Add(op);
                    }
                }

                //marco la propuesta de id como prevista
                props[0]        = props[0].clone(); //nueva propuesta
                props[0].email  = email;
                props[0].nodoID = 0;                //nodoID=0 determina propuesta prevista, porque esta propuesta aun no tiene nodo

                //muestro documento
                ret = m.toHTML(props, g, email, width, Modelo.eModo.editar); //las propuesta debe ir en orden de nivel
            }
            return(ret);
        }
예제 #2
0
        public Usuario removeUsuario(string email)
        {
            Usuario u = getUsuario(email);

            if (u == null)
            {
                throw new appException("El usuario no existe");
            }
            else
            {
                //quito sus flores
                foreach (Flor f in u.flores)
                {
                    if (f.id != 0)
                    {
                        //quito la flor
                        List <Nodo> pathn = arbol.getPath(f.id);
                        Nodo        n     = pathn[0];
                        n.flores -= 1;
                        f.id      = 0;
                    }
                }

                //borro
                usuarios.Remove(u);
            }
            return(u);
        }
예제 #3
0
        private List <Propuesta> prepararDocumento(Grupo g, string email, string modeloID, int id, HttpRequest req)
        {
            //preparo propuestas de nodos ancestros
            List <Propuesta> props = new List <Propuesta>();
            Arbol            a     = g.arbol;
            List <Nodo>      path  = a.getPath(id);
            Modelo           m     = g.organizacion.getModeloDocumento(modeloID);

            g.ts = DateTime.Now;
            foreach (Nodo n in path)
            {
                Propuesta op = a.getPropuesta(n); //comparo textox con hermanos y resalto palarbas nuevas
                if (n.nivel > 0 && op != null)
                {
                    props.Add(op);
                }
            }

            //agrego las propuestas de prevista
            List <Propuesta> previstaProps = new List <Propuesta>();

            foreach (string reqID in req.Form.AllKeys)
            {
                if (reqID != null && m.isVariable(reqID) && req[reqID] != "")
                {
                    //este valor me lo guardo en la prpuesta para ese nivel
                    Variable v     = m.getVariable(reqID);
                    bool     found = false;
                    foreach (Propuesta p in previstaProps)
                    {
                        if (v.nivel == p.nivel)
                        {
                            p.bag.Add(reqID, m.parse(reqID, req[reqID]));
                            found = true;
                        }
                    }
                    if (!found)
                    {
                        Propuesta p = new Propuesta();
                        p.email    = email;
                        p.modeloID = m.id;
                        p.nivel    = v.nivel;
                        //p.niveles = m.niveles; los niveles se completan luego desde el modelo de documeto por si cambia con alguna condicion propia
                        //p.nodoID = id; nodoID=0 determina propuesta prevista, porque esta propuesta aun no tiene nodo
                        p.bag.Add(reqID, m.parse(reqID, Server.HtmlEncode(req[reqID])));

                        previstaProps.Add(p);
                        props.Add(p);
                    }
                }
            }

            return(props);
        }
예제 #4
0
        string doProponer(int id, string modeloID, string grupo, string email)
        {
            string ret = "";
            Grupo  g   = app.getGrupo(grupo);

            lock (g)
            {
                Arbol a = g.arbol;
                //obtengo cabeza del debate
                Nodo        nodo = a.getNodo(id);
                Nodo        debate;
                List <Nodo> path = a.getPath(id);
                if (path.Count >= 2)
                {
                    debate = path[path.Count - 2];
                }
                else
                {
                    debate = nodo;
                }

                if (nodo.consensoAlcanzado)
                {
                    throw new appException(Tools.tr("Este debate ya ha alcanzado el acuerdo", g.idioma));
                }
                else
                {
                    //agrego propuestas de la prevista guardada
                    Usuario u = g.getUsuario(email);
                    foreach (Propuesta p in u.prevista.propuestas)
                    {
                        if (nodo.nivel == 0)
                        {
                            p.etiqueta = u.prevista.etiqueta;
                        }
                        else
                        {
                            p.etiqueta = a.getEtiqueta(u.prevista.etiqueta, debate);
                        }

                        p.titulo = u.prevista.titulo;

                        nodo = a.addNodo(nodo, p);
                    }
                }
                //devuelvo el arbolPersonal
                ret = Tools.toJson(a.getArbolPersonal(email, nodo.id));
            }

            app.saveGrupos();

            return(ret);
        }
예제 #5
0
        string doToggleFlor(string email, int id, float x, string grupo)
        {
            string ret = "";
            Grupo  g   = app.getGrupo(grupo);

            lock (g)
            {
                //verifico que el usuario tiene una flor en ese nodo
                Arbol a = g.arbol;
                g.ts = DateTime.Now;
                Usuario     u     = g.getUsuarioHabilitado(email);
                Flor        f     = u.getFlor(id);
                List <Nodo> pathn = a.getPath(id);
                if (pathn == null)
                {
                    throw new appException(Tools.tr("Seleccione un nodo", g.idioma));
                }
                else
                {
                    Nodo n = pathn[0];

                    if (f == null)
                    {
                        n.x = x;

                        //no tiene flor en el nodo, la agrego
                        a.asignarflor(u, n);

                        //devuelvo el arbolPersonal
                        ret = Tools.toJson(a.getArbolPersonal(email));
                    }
                    else
                    {
                        //tiene flor, la quito
                        a.quitarFlor(n, u);

                        //devuelvo el arbolPersonal
                        ret = Tools.toJson(a.getArbolPersonal(email));
                    }
                }
            }
            return(ret);
        }
예제 #6
0
        string HTMLDocumento(int id, string modeloID, string grupo, string email, int width)
        {
            string           ret = "";
            List <Propuesta> l   = new List <Propuesta>();
            Grupo            g   = app.getGrupo(grupo);

            lock (g)
            {
                Arbol a = g.arbol;
                g.ts = DateTime.Now;
                foreach (Nodo n in a.getPath(id))
                {
                    Propuesta op = a.getPropuesta(n); //comparo textox con hermanos y resalto palarbas nuevas
                    if (op != null)
                    {
                        l.Add(op);
                    }
                }
                Modelo m = g.organizacion.getModeloDocumento(modeloID);
                ret = m.toHTML(l, g, email, width, Modelo.eModo.editar); //las propuesta debe ir en orden de nivel
            }
            return(ret);
        }
예제 #7
0
        string doRevisar(int id, string modeloID, string grupo, string email, int width)
        {
            string           ret   = "";
            List <Propuesta> props = new List <Propuesta>();
            Grupo            g     = app.getGrupo(grupo);
            Modelo           m     = g.organizacion.getModeloDocumento(modeloID);

            lock (g)
            {
                //preparo propuestas de nodos ancestros
                Arbol       a    = g.arbol;
                List <Nodo> path = a.getPath(id);
                g.ts = DateTime.Now;
                foreach (Nodo n in path)
                {
                    Propuesta op = a.getPropuesta(n); //comparo textox con hermanos y resalto palarbas nuevas
                    if (n.nivel > 0 && op != null)
                    {
                        props.Add(op);
                    }
                }

                //agrego las propuestas de prevista
                Usuario u = g.getUsuario(email);
                if (u.prevista != null)
                {
                    foreach (Propuesta p in u.prevista.propuestas)
                    {
                        props.Add(p);
                    }
                }

                //genro revision
                ret = m.toHTML(props, g, email, width, Modelo.eModo.revisar); //las propuesta debe ir en orden de nivel
            }
            return(ret);
        }