getUsuario() public method

public getUsuario ( string email ) : Usuario
email string
return Usuario
Exemplo n.º 1
0
        string doCrearEvaluacionUsuario(string modeloID, string grupo, string email, int width)
        {
            //el usuario quiere crer una evaluacion
            Grupo      g   = app.getGrupo(grupo);
            Usuario    u   = null;
            Evaluacion ev  = null;
            string     ret = "";

            lock (g)
            {
                ModeloEvaluacion m;
                m = g.organizacion.getModeloEvaluacion(modeloID);

                //genero evlacuacion HTML y guardo
                u = g.getUsuario(email);
                string html = m.toHTML(u.prevista.propuestas[0], g, email, width, ModeloEvaluacion.eModo.finalizado);

                //escribo
                int    docID   = g.queso.lastEvalID++;
                string fname   = m.nombre + "_" + docID.ToString("0000");
                string docPath = "evaluaciones\\" + m.carpeta() + "\\" + docID.ToString("0000");
                string URL     = g.URL + "/grupos/" + g.nombre + "/" + docPath.Replace('\\', '/') + "/" + fname + ".html";

                //creo carpeta se salida
                if (!System.IO.Directory.Exists(g.path + "\\" + docPath))
                {
                    System.IO.Directory.CreateDirectory(g.path + "\\" + docPath);
                    System.IO.Directory.CreateDirectory(g.path + "\\" + docPath + "\\res\\documentos");
                    System.IO.File.Copy(g.path + "\\..\\..\\styles.css", g.path + "\\" + docPath + "\\styles.css");
                    System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(g.path + "\\..\\..\\res\\documentos");
                    foreach (System.IO.FileInfo fi in di.GetFiles())
                    {
                        System.IO.File.Copy(fi.FullName, g.path + "\\" + docPath + "\\res\\documentos\\" + fi.Name);
                    }
                }
                System.IO.File.WriteAllText(g.path + "\\" + docPath + "\\" + fname + ".html", html, System.Text.Encoding.UTF8);

                //crea evalaucion
                Propuesta prop = u.prevista.propuestas[0];
                ev           = new Evaluacion();
                ev.email     = email;
                ev.id        = g.queso.lastEvalID++;
                ev.preguntas = m.getPreguntas(prop);

                string msg = doCrearEvaluacion(m, g, email, ev);

                //devuelvo el queso Personal
                ret = Tools.toJson(g.queso.getQuesoPersonal(email, msg));
            }

            //guardo
            //app.saveGrupos();

            return(ret);
        }
Exemplo 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);
        }
Exemplo n.º 3
0
        string doCrearEvaluacion(ModeloEvaluacion m, Grupo g, string email, Evaluacion ev)
        {
            string msg = "";

            //tema
            string idTema = m.nombre + ":" + m.getEvaluadoID();
            Tema   t      = g.queso.getTema(idTema);

            if (t == null)
            {
                t    = new Tema();
                t.id = idTema;
                t.modeloEvaluacionID = m.id;
                t.nombre             = m.getTemaNombre();
                t.icono      = m.getTemaIcono();
                t.URL        = m.getTemaURL();
                t.evaluadoID = m.getEvaluadoID();
                t.autor      = m.getTemaAutor();

                g.queso.temas.Add(t);
            }

            //agrego evaluacion (reemplazo anterior si hay)
            if (ev != null)
            {
                msg = "";
                foreach (Evaluacion e in t.evaluaciones)
                {
                    if (e.email == email)
                    {
                        t.evaluaciones.Remove(e);
                        msg = Tools.tr("La evaluacion anterior ha sido reemplazada", g.idioma);
                        break;
                    }
                }
                t.evaluaciones.Add(ev);
            }

            //limpio
            Usuario u = g.getUsuario(email);

            if (u != null)
            {
                u.prevista = null;
            }

            //actualizo queso
            g.queso.evaluar();

            return(msg);
        }
Exemplo n.º 4
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);
            }
        }
Exemplo n.º 5
0
        string doRevisar(string modeloID, string grupo, string email, int width)
        {
            string           ret = "";
            Grupo            g   = app.getGrupo(grupo);
            ModeloEvaluacion m   = g.organizacion.getModeloEvaluacion(modeloID);

            lock (g)
            {
                //preparo propuestas de nodos ancestros
                g.ts = DateTime.Now;

                //agrego las propuestas de prevista
                Usuario u = g.getUsuario(email);

                //genro revision
                ret = m.toHTML(u.prevista.propuestas[0], g, email, width, ModeloEvaluacion.eModo.revisar); //las propuesta debe ir en orden de nivel
            }
            return(ret);
        }
Exemplo n.º 6
0
        public void limpiarCaducados()
        {
            int indext = 0;

            while (indext < temas.Count)
            {
                Tema t      = temas[indext];
                int  indexe = 0;
                while (indexe < t.evaluaciones.Count)
                {
                    Evaluacion e = t.evaluaciones[indexe];
                    if (DateTime.Now.Subtract(e.born).TotalDays > caducaDias)
                    {
                        Usuario u = grupo.getUsuario(e.email);
                        if (u != null)
                        {
                            u.alertas.Add(new Alerta(Tools.tr("Evaluacion caida para el tema [%1]", t.nombre, grupo.idioma)));
                        }

                        t.evaluaciones.RemoveAt(indexe);

                        if (t.evaluaciones.Count == 0)
                        {
                            temas.RemoveAt(indext);
                            break;
                        }
                    }
                    else
                    {
                        indexe++;
                    }
                }
                if (t.evaluaciones.Count == 0 && DateTime.Now.Subtract(t.born).TotalDays > caducaDias)
                {
                    temas.RemoveAt(indext);
                }
                else
                {
                    indext++;
                }
            }
        }
Exemplo n.º 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);
        }
Exemplo n.º 8
0
        public string toHTML(List<Propuesta> props, Grupo g, string email, int width, eModo modo)
        {
            string ret = "";
            this.modo = modo;
            this.grupo = g;

            //reinicio el modelo
            errores.Clear();
            crearVariables();
            consensoAlcanzado = false;

            bool tieneFlores = false;
            Usuario u = g.getUsuario(email);
            if (u != null) tieneFlores = u.floresDisponibles().Count > 0;

            //ordeno las propuestas por nivel
            props.Sort();

            if (modo == eModo.consenso)
            {
                //header HTML
                ret += "<html>";
                ret += "<head>";
                ret += "<title></title>";
                ret += "<meta http-equiv='Content-Type' content='text/html; charset=ISO-8859-1' />";
                ret += "<link rel='stylesheet' type='text/css' href='styles.css'>";
                ret += "</head>";
                ret += "<body>";
            }

            //todo el documento
            for (int q = 1; q <= niveles; q++)
            {
                Propuesta prop = getProp(q, props);
                bool editar = (prop == null && tieneFlores && modo != eModo.prevista && modo != eModo.consenso)
                    || (prop != null && prop.esPrevista() && (modo == eModo.revisar || modo == eModo.editar));

                if (prop != null && prop.consensoAlcanzado) consensoAlcanzado = true;

                //veo si falta la propuesta anterior (se ha saltado una)
                if (prop != null && q > 1 && getProp(q - 1, props) == null)
                {
                    //se ha saltado una propuesta
                    addError(q, "Las propuestas deben completarse por niveles correlativos, te has saltado el nivel anterior."); //esto evita que pueda proponer
                }

                ret += "<table style='width: " + (width - 10) + "px;'>";
                //mensaje de nivel
                if (q > 1 && modo != eModo.consenso)
                {
                    ret += "<tr>";
                    ret += "<td><hr></td>";
                    ret += "<td><span style='color:gray;font-size:10px;'>" + tr("Nivel en el arbol:") + " " + q + "</span></td>";
                    ret += "</tr>";
                }

                ret += "<tr>";
                //contenido de la propuesta
                int contenidoWidth = modo == eModo.consenso ? width : width - 340;
                ret += "<td ";
                ret += "style='width: " + contenidoWidth + "px;vertical-align:top;' ";
                if (editar && !consensoAlcanzado)
                    ret += "class='editar'";
                ret += ">";
                ret += toHTMLContenido(q, prop, g, email, contenidoWidth);
                ret += "    </td>";

                //comentarios
                if (modo != eModo.consenso)
                {
                    if (prop != null && !prop.esPrevista())
                    {
                        //se puede comentar
                        ret += "<td id='comentarios" + prop.nodoID + "' style='width: " + 250 + "px;vertical-align:top;' class='comentarios'>";
                        ret += toHTMLComentarios(q, prop, g, email, 246, !consensoAlcanzado);
                        ret += "</td>";
                    }
                    else
                    {
                        ret += "<td style='width: " + (250) + "px;vertical-align:top;' >";
                        ret += "</td>";
                    }
                }
                ret += "</tr>";
                ret += "</table>";
            }

            //botones de poantalla o firma de consenso
            ret += "<br>";
            if (modo == eModo.consenso)
            {
                //firma
                ret += firmaConsenso;
                ret += "</body>";
                firmaConsenso = ""; //por las dudas
            }
            else if (modo == eModo.editar)
            {
                //modo muestra
                if (consensoAlcanzado)
                    ret += "<div class='comentario'><b>" + tr("Consenso alcanzado") + "</b></div><br>";

                ret += "<input type='button' class='btn' value='" + tr("Cerrar") + "' onclick='doCerrarDocumento();' />";

                if (tieneFlores && !consensoAlcanzado)
                    ret += "<input type='button' class='btn' value='" + tr("Prevista de propuesta") + "' title='" + tr("Enseña vista previa antes de proponer") + "' onclick='doPrevista();' />";

            }
            else if (modo == eModo.prevista)
            {
                ret += "<input type='button' class='btn' value='" + tr("Cancelar") + "' onclick='doCerrarDocumento();' />";
                ret += "<input type='button' class='btn' value='" + tr("Revisar propuesta") + "' title='" + tr("Permite corregir errores") + "' onclick='doRevisar();' />";
                if (!hayError() && props[props.Count - 1].esPrevista())
                    //permito crear
                    //tiene que haber almenos una propuesa nueva para poder crear algo
                    ret += "<input type='button' class='btn' value='" + tr("Crear propuesta") + "' title='" + tr("Crea la propuesta") + "' onclick='doProponer();' />";
            }
            else if (modo == eModo.revisar)
            {
                //permito prevista
                ret += "<input type='button' class='btn' value='" + tr("Cancelar") + "' onclick='doCerrarDocumento();' />";
                if (tieneFlores && !consensoAlcanzado)
                    ret += "<input type='button' class='btn' value='" + tr("Prevista de propuesta") + "' title='" + tr("Enseña vista previa antes de proponer") + "' onclick='doPrevista();' />";
            }

            //ret += "<a id='btnDownload' href='' target='_blank'><font size='1'>Descargar esta versi&oacute;n</font></a>";
            return ret;
        }