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); }
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); }
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); }
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); }
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 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); }
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); }