getArbolPersonal() public method

public getArbolPersonal ( string email ) : ArbolPersonal
email string
return ArbolPersonal
Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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);
        }
Ejemplo n.º 3
0
        string doLogin(string email, string clave, string grupo)
        {
            string ret = "";
            Grupo  g   = app.getGrupo(grupo);

            lock (g)
            {
                Arbol a = g.arbol;
                g.ts = DateTime.Now;
                Usuario u = g.getUsuario(email, clave);
                if (u != null && u.habilitado)
                {
                    //login correcto
                    //devuelvo el arbol personal con las flores de este usuario y sus modelos
                    a.actualizarModelosEnUso();
                    //knowtypes para modelos
                    List <Type> tipos = new List <Type>();
                    tipos.Add((new Alerta()).GetType());
                    foreach (Modelo m in g.organizacion.getModelosDocumento())
                    {
                        tipos.Add(m.GetType());
                    }
                    foreach (ModeloEvaluacion m in g.organizacion.getModelosEvaluacion())
                    {
                        tipos.Add(m.GetType());
                    }
                    ret         = "{\"msg\":\"\", \"grupo\":" + g.toJson() + ", ";
                    ret        += "\"modelos\":" + Tools.toJson(g.organizacion.getModelosDocumento(), tipos) + ", ";
                    ret        += "\"modelosEvaluacion\":" + Tools.toJson(g.organizacion.getModelosEvaluacion(), tipos) + ", ";
                    ret        += "\"arbolPersonal\":" + Tools.toJson(a.getArbolPersonal(u.email)) + "}";
                    u.lastLogin = DateTime.Now;
                }
                else if (u != null && !u.habilitado)
                {
                    app.addLog("login", Request.UserHostAddress, grupo, email, "fail!");
                    throw new appException(Tools.tr("Usuario no habilitado", grupo, g.idioma));
                }
                else
                {
                    app.addLog("login", Request.UserHostAddress, grupo, email, "fail!");
                    throw new appException(Tools.tr("Usuario o clave incorrectos", grupo, g.idioma));
                }

                //envio mails a usuarios inactivos
                verifyInactivos(g);
                return(ret);
            }
        }
Ejemplo n.º 4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string actn = Request["actn"];

            //verifico lista global de arboles
            if (Application["aplicacion"] == null)
            {
                Application.Lock();
                Application["aplicacion"] = new Aplicacion(Server, Request);
                Application.UnLock();
            }
            app = (Aplicacion)Application["aplicacion"];

            Tools.startupPath = Server.MapPath("");

            try
            {
                //limpio flores caducadas periodicamente
                verifyFloresCaducadas();

                //proceso peticiones
                Grupo grupo;
                Arbol a;
                string ret = "";
                string msg;

                if (actn != null)
                {
                    switch (actn.ToLower())
                    {
                        case "docomentar":
                            //devuelvo las propuestas de toda la rama
                            Response.Write(doComentar(int.Parse(Request["id"]), Request["grupo"], Request["email"], Request["comentario"]));
                            app.addLog("doComentar", Request.UserHostAddress, Request["grupo"], "", Request["comentario"]);
                            break;

                        //case "getpropuestasresaltadas":
                        //    //devuelvo las propuestas de toda la rama
                        //    Response.Write(getPropuestasResaltadas(int.Parse(Request["id"]), Request["grupo"]));
                        //    break;

                        //case "getpropuestas":
                        //    //devuelvo las propuestas de toda la rama
                        //    Response.Write(getPropuestas(int.Parse(Request["id"]), Request["grupo"]));
                        //    break;

                        case "htmldocumento":
                            //devuelvo las propuestas de toda la rama
                            Response.Write(HTMLDocumento(int.Parse(Request["id"]), Request["modelo"], Request["grupo"], Request["email"], int.Parse(Request["width"])));
                            break;

                        case "htmlpropuesta":
                            //devuelvo las propuestas de toda la rama
                            Response.Write(HTMLPropuesta(int.Parse(Request["id"]), Request["grupo"], Request["email"], int.Parse(Request["width"])));
                            break;

                        case "getarbolpersonal":
                            grupo = app.getGrupo(Request["grupo"]);
                            lock (grupo)
                            {
                                //devuelvo el arbolPersonal
                                grupo.ts = DateTime.Now;
                                ret = Tools.toJson(grupo.arbol.getArbolPersonal(Request["email"]));
                            }
                            Response.Write(ret);
                            break;

                        case "variante":
                            Response.Write(doVariante(int.Parse(Request["id"]), Request["grupo"], Request["email"], int.Parse(Request["width"])));
                            break;

                        case "prevista":
                            Response.Write(doPrevista(int.Parse(Request["id"]), Request["modelo"], Request["grupo"], Request["email"], int.Parse(Request["width"]), Request));
                            break;

                        case "revisar":
                            Response.Write(doRevisar(int.Parse(Request["id"]), Request["modelo"], Request["grupo"], Request["email"], int.Parse(Request["width"])));
                            break;

                        case "proponer":
                            Response.Write(doProponer(int.Parse(Request["id"]), Request["modelo"], Request["grupo"], Request["email"]));
                            app.addLog("proponer", Request.UserHostAddress, Request["grupo"], Request["email"], "Nueva propuesta recibida");
                            break;

                        case "seguimiento":
                            Response.Write(doSeguimiento(int.Parse(Request["docID"]), Request["grupo"], int.Parse(Request["width"])));
                            break;

                        case "toggleflor":
                            Response.Write(doToggleFlor(Request["email"], int.Parse(Request["id"]), float.Parse(Request["x"]), Request["grupo"]));
                            app.addLog("toggleFlor", Request.UserHostAddress, Request["grupo"], Request["email"], "Cambio de voto");
                            break;

                        case "updatearbol":
                            a = updateArbol(Request["grupo"], int.Parse(Request["cantidadFlores"]), float.Parse(Request["minSiPc"]), float.Parse(Request["maxNoPc"]));
                            Response.Write("Arbol actualizado");
                            break;

                        //case "download":
                        //    Response.ContentType = "application/force-download";
                        //    grupo = app.getGrupo(Request["grupo"]);
                        //    a = grupo.arbol;
                        //    lock (a)
                        //    {
                        //        Nodo n = a.getNodo(int.Parse(Request["id"]));
                        //        Response.AddHeader("Content-Disposition", "Attachment;filename=" + a.nombre + "_" + n.nombre + ".txt");
                        //    }
                        //    Response.Write(download(int.Parse(Request["id"]), Request["grupo"]));
                        //    app.addLog("download", Request.UserHostAddress, Request["grupo"], "", "nodo=" + Request["id"]);
                        //    break;

                        case "simulacionlive":
                            string separador = (0.0f).ToString("0.0").Substring(1,1);
                            float coopProb = float.Parse(Request["coopProb"].Replace(".",separador));
                            string x = Request["x"];

                            //guardo las coordenadas x
                            if (x != "")
                            {
                                grupo = app.getGrupo(Request["grupo"]);
                                lock (grupo)
                                {
                                    a = grupo.arbol;
                                    foreach (string s in x.Split(','))
                                    {
                                        Nodo n = a.getNodo(int.Parse(s.Split('=')[0]));
                                        n.x = float.Parse(s.Split('=')[1]);
                                    }
                                }
                            }

                            //live
                            bool consensoAlcanzado = false;
                            grupo = app.getGrupo(Request["grupo"]);
                            lock (grupo)
                            {
                                for (int pasos = 0; pasos < 10 && !consensoAlcanzado; pasos++)
                                    consensoAlcanzado = consensoAlcanzado || doSimulacionLive(grupo, coopProb);
                            }
                            Response.Write("{\"stop\": " + (consensoAlcanzado ? "true" : "false") + ", \"arbolPersonal\":" + Tools.toJson(grupo.arbol.getArbolPersonal("Prueba")) + "}");
                            break;

                        case "crearsimulacion":
                            Grupo g = new Grupo();
                            g.nombre = getSimName();
                            g.path = Server.MapPath("grupos/" + g.nombre);
                            g.URL = Request.UrlReferrer.AbsoluteUri.Substring(0, Request.UrlReferrer.AbsoluteUri.LastIndexOf("/"));
                            g.objetivo = "simulacion";

                            a = new Arbol();
                            a.nombre = g.nombre;
                            a.simulacion = true;
                            a.raiz = new Nodo();
                            a.raiz.nombre = "Sim";
                            a.grupo = g;
                            g.arbol = a;

                            lock (app.grupos)
                            {
                                app.grupos.Add(g);
                            }
                            a.minSiPc = 60;
                            a.maxNoPc = 50;

                            //usuario de prueba
                            Usuario u1 = new Usuario();
                            u1.nombre = "Prueba";
                            u1.email = "Prueba";
                            g.usuarios.Add(u1);
                            a.lastSimUsuario = u1;

                            //escribo respuesta
                            List<Type> tipos = new List<Type>();
                            foreach (Modelo m in Modelo.getModelos())
                            {
                                tipos.Add(m.GetType());
                            }
                            Response.Write("{\"arbolPersonal\": " + Tools.toJson(a.getArbolPersonal("Prueba")) + ",\"modelos\":" + Tools.toJson(a.modelos, tipos) + "}");
                            app.addLog("crearSimulacion", Request.UserHostAddress, "", "", "Simulacion creada");
                            break;

                        default:
                            throw new appException("Peticion no reconocida");
                    }
                }
                else
                    throw new appException("Peticion no reconocida");
            }
            catch (appException ex)
            {
                Response.Write("Error=" + ex.Message);
            }
            catch (Exception ex)
            {
                string s = "Actn:" + actn.ToLower() + "<br>";
                s += "Message:" + ex.Message + "<br>";
                s += "REMOTE_ADDR:" + Request.ServerVariables["REMOTE_ADDR"] + "<br>";
                s += "Querystring:" + Request.QueryString.ToString() + "<br>";
                s += "Form:" + Request.Form.ToString() + "<br>";
                s += "Stack:" + ex.StackTrace;

                Response.Write("Error=" + ex.Message);
                app.addLog("server exception", "", "", "", s);
            }
            Response.End();
        }
Ejemplo n.º 5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string actn = Request["actn"];

            Application.Lock();
            if (Application["aplicacion"] == null)
            {
                Application["aplicacion"] = new Aplicacion(Server, Request);
            }
            app = (Aplicacion)Application["aplicacion"];
            Application.UnLock();

            Tools.startupPath = Server.MapPath("");
            Tools.server      = Server;

            try
            {
                //guardo lista de arboles periodicamente
                app.verifySave();

                //limpio flores caducadas periodicamente de todos los usuarios
                //verifyFloresCaducadas(); se verifica al crear al arbol personal

                //proceso peticiones
                Grupo  grupo;
                Arbol  a;
                string ret = "";

                if (actn != null)
                {
                    switch (actn.ToLower())
                    {
                    case "docomentar":
                        //devuelvo las propuestas de toda la rama
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(doComentar(int.Parse(Request["id"]), Request["grupo"], Request["email"], Request["comentario"], Request["objecion"] == "true"));
                        app.addLog("doComentar", Request.UserHostAddress, Request["grupo"], "", Request["comentario"]);
                        break;

                    //case "crearacta":
                    //    //devuelvo las propuestas de toda la rama
                    //    VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                    //    Response.Write(crearActa(Request["grupo"], Request["email"], Request));
                    //    break;

                    case "htmldocumento":
                        //devuelvo las propuestas de toda la rama
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(HTMLDocumento(int.Parse(Request["id"]), Request["modelo"], Request["grupo"], Request["email"], int.Parse(Request["width"])));
                        break;

                    case "htmlpropuesta":
                        //devuelvo las propuestas de toda la rama
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(HTMLPropuesta(int.Parse(Request["id"]), Request["grupo"], Request["email"], int.Parse(Request["width"])));
                        break;

                    case "getarbolpersonal":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        grupo = app.getGrupo(Request["grupo"]);
                        lock (grupo)
                        {
                            //devuelvo el arbolPersonal
                            grupo.ts = DateTime.Now;
                            ret      = Tools.toJson(grupo.arbol.getArbolPersonal(Request["email"]));
                        }
                        Response.Write(ret);
                        break;

                    case "variante":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(doVariante(int.Parse(Request["id"]), Request["modeloID"], Request["grupo"], Request["email"], int.Parse(Request["width"])));
                        break;

                    case "prevista":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(doPrevista(int.Parse(Request["id"]), Request["modelo"], Request["grupo"], Request["email"], int.Parse(Request["width"]), Request));
                        break;

                    case "revisar":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(doRevisar(int.Parse(Request["id"]), Request["modelo"], Request["grupo"], Request["email"], int.Parse(Request["width"])));
                        break;

                    case "proponer":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(doProponer(int.Parse(Request["id"]), Request["modelo"], Request["grupo"], Request["email"]));
                        app.addLog("proponer", Request.UserHostAddress, Request["grupo"], Request["email"], "Nueva propuesta recibida");
                        break;

                    case "seguimiento":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(doSeguimiento(int.Parse(Request["docID"]), Request["grupo"], int.Parse(Request["width"])));
                        break;

                    case "toggleflor":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(doToggleFlor(Request["email"], int.Parse(Request["id"]), float.Parse(Request["x"]), Request["grupo"]));
                        app.addLog("toggleFlor", Request.UserHostAddress, Request["grupo"], Request["email"], "Cambio de voto");
                        break;

                    case "updatearbol":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        a = updateArbol(Request["grupo"], int.Parse(Request["cantidadFlores"]), float.Parse(Request["minSiPc"]), float.Parse(Request["maxNoPc"]), Request["padreURL"], Request["padreNombre"], Request["idioma"]);
                        Response.Write("Arbol actualizado");
                        break;

                    case "documentsubmit":
                        VerificarUsuario(Request["grupo"], Request["email"], Request["clave"]);
                        Response.Write(doDocumentSubmit(Request["accion"], Request["parametro"], Request["grupo"], Request["email"], Request["modelo"], int.Parse(Request["id"]), int.Parse(Request["width"]), Request));
                        break;

                    case "crearsimulacion":
                        //creo grupo
                        Grupo g = new Grupo();
                        g.nombre   = getSimName();
                        g.path     = Server.MapPath("grupos/" + g.nombre);
                        g.URL      = Request.UrlReferrer.AbsoluteUri.Substring(0, Request.UrlReferrer.AbsoluteUri.LastIndexOf("/"));
                        g.objetivo = "simulacion";

                        //organizacion
                        g.organizacion = new nabu.organizaciones.Plataforma();

                        //arbol
                        a             = new Arbol();
                        a.nombre      = g.nombre;
                        a.simulacion  = true;
                        a.raiz        = new Nodo();
                        a.raiz.nombre = "Sim";
                        a.grupo       = g;
                        g.arbol       = a;

                        a.minSiPc = 100;
                        a.maxNoPc = 0;

                        //usuarios de prueba
                        for (int i = 0; i < 50; i++)
                        {
                            Usuario u = new Usuario();
                            u.nombre = "u" + i;
                            u.email  = "u" + i;
                            for (int q = 0; q < 5; q++)
                            {
                                u.flores.Add(new Flor());
                            }
                            g.usuarios.Add(u);
                        }

                        //escribo respuesta
                        List <Type> tipos = new List <Type>();
                        foreach (Modelo m in g.organizacion.getModelosDocumento())
                        {
                            tipos.Add(m.GetType());
                        }
                        foreach (ModeloEvaluacion m in g.organizacion.getModelosEvaluacion())
                        {
                            tipos.Add(m.GetType());
                        }
                        ret  = "{\"arbolPersonal\": " + Tools.toJson(a.getArbolPersonal("u1")) + ",";
                        ret += "\"modelos\":" + Tools.toJson(g.organizacion.getModelosDocumento(), tipos) + ",";
                        ret += "\"modelosEvaluacion\":" + Tools.toJson(g.organizacion.getModelosEvaluacion(), tipos) + "}";
                        lock (app.grupos)
                        {
                            app.grupos.Add(g);
                        }
                        Response.Write(ret);
                        app.addLog("crearSimulacion", Request.UserHostAddress, "", "", "Simulacion creada");
                        break;

                    case "simulacionnuevodebate":
                        grupo = app.getGrupo(Request["grupo"]);
                        lock (grupo)
                        {
                            Usuario u = null;
                            //busco un usuario con flores
                            foreach (Usuario u2 in grupo.usuarios)
                            {
                                if (u2.floresDisponibles().Count > 0)
                                {
                                    u = u2;
                                    break;
                                }
                            }

                            //agergo nodos iniciales
                            if (u != null)
                            {
                                //el nombre de este nodo es la cantidad de dias
                                Nodo NuevoTema = simAgregarNodo(grupo, u, grupo.arbol.raiz, 0);     //introduccion al debate
                                //el nombre de este nodo es la generacion
                                Nodo n1 = simAgregarNodo(grupo, u, NuevoTema, 1);
                            }
                            ret = "{\"stop\": false, \"arbolPersonal\":" + Tools.toJson(grupo.arbol.getArbolPersonal("u1")) + "}";
                        }
                        Response.Write(ret);
                        break;

                    case "simulacionlive":
                        string x = Request["x"];

                        grupo = app.getGrupo(Request["grupo"]);
                        lock (grupo)
                        {
                            //guardo x
                            //&x=38=43,42=111,43=146
                            if (x != "")
                            {
                                a = grupo.arbol;
                                foreach (string s in x.Split(','))
                                {
                                    Nodo n = a.getNodo(int.Parse(s.Split('=')[0]));
                                    if (n != null)
                                    {
                                        n.x = float.Parse(s.Split('=')[1]);
                                    }
                                }
                            }

                            //para cada debate live
                            int i = 0;
                            while (i < grupo.arbol.raiz.children.Count)
                            {
                                Nodo n    = grupo.arbol.raiz.children[i];
                                int  dias = int.Parse(n.nombre);
                                simDebateLive(grupo, n, dias);
                                n.nombre = (dias + 1).ToString();
                                i++;
                            }
                            ret = "{\"stop\": false, \"arbolPersonal\":" + Tools.toJson(grupo.arbol.getArbolPersonal("u1")) + "}";
                        }
                        Response.Write(ret);
                        break;

                    default:
                        throw new appException("Peticion no reconocida");
                    }
                }
                else
                {
                    throw new appException("Peticion no reconocida");
                }
            }
            catch (appException ex)
            {
                Response.Write("Error=" + ex.Message);
            }
            catch (Exception ex)
            {
                string s = "Actn:" + actn.ToLower() + "<br>";
                s += "Message:" + ex.Message + "<br>";
                s += "REMOTE_ADDR:" + Request.ServerVariables["REMOTE_ADDR"] + "<br>";
                s += "Querystring:" + Request.QueryString.ToString() + "<br>";
                s += "Form:" + Request.Form.ToString() + "<br>";
                s += "Stack:" + ex.StackTrace;

                Response.Write("Error=" + ex.Message);
                app.addLog("server exception", "", "", "", s);
            }
            Response.End();
        }