Exemplo n.º 1
0
        public ArbolPersonal getArbolPersonal(string email, int nuevoNodoID)
        {
            Usuario u = grupo.getUsuarioHabilitado(email);

            if (u != null)
            {
                if (verificarFloresCaducadas(u))
                {
                    //notifico por mail al usuario
                    Usuario admin = grupo.getAdmin();
                    Tools.encolarMailCaido(grupo, u.email, admin.email, Tools.MapPath("mails/modelos/" + grupo.idioma));
                    u.alertas.Add(new Alerta(Tools.tr("Tus floras han caido", grupo.idioma)));
                    //app.addLog("verifyFloresCaducadas", "", grupo.nombre, u.email, "Flor caducada. Usuario lastLogin: "******"El usuario no existe o no esta habilitado");
            }
        }
Exemplo n.º 2
0
        private Propuesta prepararDocumento(Grupo g, string email, string modeloID, HttpRequest req)
        {
            //preparo propuestas de nodos ancestros
            Propuesta        prop;
            Arbol            a = g.arbol;
            ModeloEvaluacion m = g.organizacion.getModeloEvaluacion(modeloID);

            g.ts = DateTime.Now;

            Usuario u = g.getUsuarioHabilitado(email);

            if (u.prevista != null)
            {
                prop = u.prevista.propuestas[0];
            }
            else
            {
                prop = new Propuesta();
            }

            //agrego las propuestas de prevista
            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);
                    prop.bag[reqID] = m.parse(reqID, req[reqID]);
                }
            }

            return(prop);
        }
Exemplo n.º 3
0
        string doEvaluarTema(string idTema, string grupo, string email, int width)
        {
            string ret = "";
            Grupo  g   = app.getGrupo(grupo);

            lock (g)
            {
                g.ts = DateTime.Now;

                //busco el tema
                foreach (Tema t in g.queso.temas)
                {
                    if (t.id == idTema)
                    {
                        ModeloEvaluacion m    = g.organizacion.getModeloEvaluacion(t.modeloEvaluacionID);
                        Propuesta        prop = m.createProp(t);
                        ret = m.toHTML(prop, g, email, width, ModeloEvaluacion.eModo.editar); //las propuesta debe ir en orden de nivel

                        //guarpo prevista para poder crearla luego
                        Usuario  u    = g.getUsuarioHabilitado(email);
                        Prevista prev = new Prevista();
                        prev.titulo = m.titulo;
                        prev.propuestas.Clear();
                        prev.propuestas.Add(prop);
                        u.prevista = prev;
                    }
                }
            }
            return(ret);
        }
Exemplo n.º 4
0
        public string doDocumentSubmit(string accion, string parametro, string grupo, string email, string modeloID, int width, HttpRequest req)
        {
            string           ret = "";
            Grupo            g   = app.getGrupo(grupo);
            ModeloEvaluacion m   = g.organizacion.getModeloEvaluacion(modeloID);
            Usuario          u   = g.getUsuarioHabilitado(email);

            lock (g)
            {
                Propuesta prop = prepararDocumento(g, email, modeloID, req);

                //proceso evento
                m.evaluacionSubmit(accion, parametro, prop, g, email); //las propuesta debe ir en orden de nivel

                //genro respuesta
                ret = m.toHTML(prop, g, email, width, ModeloEvaluacion.eModo.editar);

                //guarpo prevista para poder crearla luego
                Prevista prev = new Prevista();
                prev.titulo = m.titulo;
                prev.propuestas.Clear();
                prev.propuestas.Add(prop);
                u.prevista = prev;
            }
            return(ret);
        }
Exemplo n.º 5
0
        public string doDocumentSubmit(string accion, string parametro, string grupo, string email, string modeloID, int id, int width, HttpRequest req)
        {
            string ret = "";
            Grupo  g   = app.getGrupo(grupo);
            Modelo m   = g.organizacion.getModeloDocumento(modeloID);

            lock (g)
            {
                List <Propuesta> props = prepararDocumento(g, email, modeloID, id, req);

                //genro respuesta
                ret = m.documentSubmit(accion, parametro, props, g, email, width, Modelo.eModo.editar); //las propuesta debe ir en orden de nivel

                //guarpo prevista para poder crearla luego
                if (props.Count > 0)
                {
                    Usuario  u    = g.getUsuarioHabilitado(email);
                    Prevista prev = new Prevista();
                    prev.etiqueta = m.etiqueta;
                    prev.titulo   = m.titulo;
                    prev.propuestas.Clear();
                    foreach (Propuesta p in props)
                    {
                        if (p.esPrevista())
                        {
                            prev.propuestas.Add(p);
                        }
                    }
                    u.prevista = prev;
                } //else no ha escrito nada nuevo
            }
            return(ret);
        }
Exemplo n.º 6
0
        public void VerificarUsuario(string grupo, string email, string clave)
        {
            Grupo g = app.getGrupo(grupo);

            lock (g)
            {
                Usuario u = g.getUsuarioHabilitado(email);
                if (u.clave == clave)
                {
                    return;
                }
            }
            throw new Exception(Tools.tr("Usuario invalido o no habilitado", g.idioma));
        }
Exemplo n.º 7
0
        public void VerificarUsuario(string grupo, string email, string clave)
        {
            Grupo g = app.getGrupo(grupo);

            lock (g)
            {
                Usuario u = g.getUsuarioHabilitado(email);
                if (u.clave == clave)
                {
                    return;
                }
            }
            throw new Exception("Usuario no existe o no habilitado, operacion registrada!");
        }
Exemplo n.º 8
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);
        }
Exemplo n.º 9
0
        string HTMLEvaluacion(Propuesta prop, string modeloID, string grupo, string email, int width)
        {
            string ret = "";
            Grupo  g   = app.getGrupo(grupo);

            lock (g)
            {
                Arbol a = g.arbol;
                g.ts = DateTime.Now;
                ModeloEvaluacion m = g.organizacion.getModeloEvaluacion(modeloID);

                //limpio valores antiguos
                Usuario u = g.getUsuarioHabilitado(email);
                if (u.prevista != null)
                {
                    u.prevista = null;
                }

                ret = m.toHTML(prop, g, email, width, ModeloEvaluacion.eModo.editar); //las propuesta debe ir en orden de nivel
            }
            return(ret);
        }
Exemplo n.º 10
0
        string doPrevista(string modeloID, string grupo, string email, int width, HttpRequest req)
        {
            string           ret = "";
            Grupo            g   = app.getGrupo(grupo);
            ModeloEvaluacion m   = g.organizacion.getModeloEvaluacion(modeloID);

            lock (g)
            {
                Propuesta prop = prepararDocumento(g, email, modeloID, req);

                //genro prevista para segurarme que defina etiqueta y titulo
                ret = m.toHTML(prop, g, email, width, ModeloEvaluacion.eModo.prevista);

                //guarpo prevista para poder crearla luego
                Usuario  u    = g.getUsuarioHabilitado(email);
                Prevista prev = new Prevista();
                prev.titulo = m.titulo;
                prev.propuestas.Clear();
                prev.propuestas.Add(prop);
                u.prevista = prev;
            }
            return(ret);
        }
Exemplo n.º 11
0
        protected virtual string HTMLEncabezado(Propuesta prop, Grupo g, string email, int width)
        {
            string  ret         = "";
            Usuario u           = g.getUsuarioHabilitado(email);
            bool    tieneFlores = false;

            if (u != null)
            {
                tieneFlores = u.floresDisponibles().Count > 0;
            }

            titulo   = getText("s.titulo", prop);
            etiqueta = getText("s.etiqueta", prop);

            //titulo
            ret += "<div class='titulo1'><nobr>" + nombre + "</nobr></div><br><br>";

            ret += "<div class='titulo3'><nobr>" + Tools.tr("Titulo", g.idioma) + ":" + HTMLText("s.titulo", prop, 60 * 8, tieneFlores, g.idioma) + "</nobr></div>";

            //etiqueta
            ret += "<div class='titulo3'><nobr>" + Tools.tr("Etiqueta", g.idioma) + ":" + HTMLText("s.etiqueta", prop, 20 * 5, tieneFlores, g.idioma);
            if (prop == null)
            {
                ret += "<span style='color:gray;font-size:12px;'>" + Tools.tr("(Etiqueta en el arbol)", g.idioma) + "</span>";
            }
            ret += "</nobr></div>";

            //fecha
            if (modo == eModo.consenso)
            {
                ret += "<div class='titulo2'><nobr>" + Tools.tr("Fecha", g.idioma) + ":" + DateTime.Now.ToString("dd/MM/yy") + " " + DateTime.Now.ToShortTimeString() + "</nobr></div>";
            }

            ret += "<br>";
            ret += "<br>";
            return(ret);
        }
Exemplo n.º 12
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();
            consensoAlcanzado = false;

            bool    tieneFlores = false;
            Usuario u           = g.getUsuarioHabilitado(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
            bool editar = false;

            for (int q = 1; q <= niveles; q++)
            {
                Propuesta prop = getProp(q, props);
                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
                }

                //mensaje de nivel
                if (q > 1 && modo != eModo.consenso)
                {
                    ret += "<div style='float:clear;float:left;color:gray;font-size:10px;width:-webkit-fill-available;border-top:1px solid gray;margin:3px;text-align:right;'>";
                    ret += Tools.tr("Nivel en el arbol", g.idioma) + ": " + q;
                    ret += "</div>";
                }


                //if (editar && !consensoAlcanzado)
                //    ret += "class='seccion'";
                //else
                //    ret += "class='seccion'";
                //contenido de la propuesta
                ret += "<div class='seccion'>";
                ret += toHTMLContenido(q, prop, g, email, 500);
                ret += "</div>";

                //comentarios
                if (modo != eModo.prevista && modo != eModo.consenso && prop != null && !prop.esPrevista() && !consensoAlcanzado)
                {
                    //se puede comentar
                    ret += "<div id='comentarios" + prop.nodoID + "' style='vertical-align:top;' class='comentarios'>";
                    ret += toHTMLComentarios(q, prop, g, email, 326, !consensoAlcanzado);
                    ret += "</div>";
                }
            }

            //botones de poantalla o firma de consenso
            ret += "<br>";
            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='mensaje' style='clear:left;float:left;width:100%'><b>" + Tools.tr("Consenso alcanzado", g.idioma) + "</b></div><br>";
                }

                ret += "<input type='button' style='clear:left;float:left;' class='btn' value='" + Tools.tr("Cerrar", g.idioma) + "' onclick='doCerrarDocumento();' />";

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

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