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); }
string doComentar(int id, string grupo, string email, string comentario, bool objecion) { string ret = ""; Grupo g = app.getGrupo(grupo); lock (g) { Arbol a = g.arbol; g.ts = DateTime.Now; Propuesta p = a.getPropuesta(id); if (comentario != "") { Comentario c = new Comentario(); c.email = email; c.texto = Server.HtmlEncode(comentario); c.objecion = objecion; p.comentarios.Add(c); if (objecion) { Nodo n = a.getNodo(id); n.objecion = true; } } //retorno el nuevo html de todos los comentarios de ese nodo Modelo m = g.organizacion.getModeloDocumento(p.modeloID); ret = m.toHTMLComentarios(p.nivel, p, g, email, 330, true); } return(ret); }
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 HTMLPropuesta(int id, 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; Propuesta p = a.getPropuesta(id); if (p != null) { Modelo m = g.organizacion.getModeloDocumento(p.modeloID); ret = m.toHTML(p, g, email, width, Modelo.eModo.ver); } } 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); }