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"); } }
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); }
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); }
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); }
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); }
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)); }
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!"); }
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); }
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); }
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); }
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); }
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ón</font></a>"; return(ret); }