public toHTML ( List |
||
props | List |
|
g | ||
string | ||
width | int | |
modo | eModo | |
return | string |
private Documento crearDocumento(Nodo n, DateTime now, string fname, string docPath, string URL) { Modelo m = grupo.organizacion.getModeloDocumento(n.modeloID); Documento doc = new Documento(); doc.fecha = now; doc.nombre = m.nombre; doc.fname = fname; doc.modeloID = n.modeloID; doc.path = grupo.path + "\\" + docPath + "\\" + fname + ".json"; doc.URLPath = URL; //obtengo el titulo //debo dibujar el documento //junto propuestas List <Propuesta> props = new List <Propuesta>(); foreach (Nodo n1 in getPath(n.id)) { Propuesta p = getPropuesta(n1); if (p != null) //la raiz { props.Add(p); } } //armo HTML m.toHTML(props, this.grupo, "", 1024, Modelo.eModo.consenso); doc.titulo = m.titulo; //guardo propuestas doc.propuestas = props; return(doc); }
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 bool doSimulacionLive0(Grupo g, float coopProb) //{ // bool ret = false; // lock (g) // { // Arbol a = g.arbol; // float action = coopProb + a.getNexRandom() - 0.5f; // if (action > 3f / 4f) // { // //cooperacion, muevo un voto del menor al mayor // Nodo mayor = a.getMayorAgregar(0); // Nodo menor = a.getMenorQuitar(mayor.id); // if (mayor != menor && menor.flores > 0 && !mayor.consensoAlcanzado) // { // Usuario u = a.quitarFlor(menor); // try { a.asignarflor(u, mayor); } // catch { } // if (mayor.consensoAlcanzado) ret = true; // } // } // else if (action > 2f / 4f) // { // //voto a minorias, muevo un voto del mayor al menor // var mayor = a.getMayorQuitar(0); // var menor = a.getMenorAgregar(mayor.id); // if (mayor != menor && mayor.flores > 0 && !menor.consensoAlcanzado) // { // Usuario u = a.quitarFlor(mayor); // try { a.asignarflor(u, menor); } // catch { } // if (menor.consensoAlcanzado) ret = true; // } // } // else if (action > 1f / 4f) // { // //quito alguna flor // var mayor = a.getMayorQuitar(0); // if (mayor.flores > 0) // { // a.quitarFlor(mayor); // } // } // else // { // //creo una rama nueva // //seleccion nodo al azar // List<Nodo> nodes = a.toList(); // Nodo selected = a.rndElement(nodes); // //agrego nuevo nodo // if (!selected.consensoAlcanzado && selected.nivel < 5) // { // //agrego nodo // //creo texto segun nivel y modelo de documento // Modelo m = g.organizacion.getModeloDocumento("nabu.plataforma.modelos.Accion"); //modelo de simulacion (Accion) // Propuesta prop = new Propuesta(); // prop.email = g.usuarios[0].email; // prop.modeloID = m.id; // prop.nivel = selected.nivel + 1; //esta propuesta es para el hijo que voy a crear // prop.nodoID = selected.id; // prop.niveles = 5; // prop.titulo = Tools.tr("Documento simulado", g.idioma); // prop.etiqueta = "."; // //lleno datos de prueba // foreach (Variable v in m.getVariables()) // { // if (v.id == "s.etiqueta") // prop.bag.Add("s.etiqueta", "Sim"); // else if (v.id == "s.titulo") // prop.bag.Add("s.titulo", Tools.tr("Documento simulado", g.idioma)); // else // prop.bag.Add(v.id, Tools.tr("Simulacion", g.idioma)); // } // //me aseguro que el usuario tenga flores o agrego otro // if (a.lastSimUsuario.flores.Count < 5) // a.lastSimUsuario.flores.Add(new Flor()); // else // { // //busco un usuario con flores // a.lastSimUsuario = a.getUsuarioConFloresDisponibles(); // } // if (a.lastSimUsuario == null) // { // Usuario u = new Usuario(); // u.nombre = "Sim" + g.usuarios.Count + 1; // u.email = "Sim" + g.usuarios.Count + 1; // u.flores.Add(new Flor()); // g.usuarios.Add(u); // a.lastSimUsuario = u; // } // prop.email = a.lastSimUsuario.email; // Nodo nuevo = a.addNodo(selected, prop); // if (selected.nivel == 1) // { // selected.nombre = "Sim" + selected.id; // } // } // } // } // return ret; //} string doPrevista(int id, string modeloID, string grupo, string email, 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 prevista para segurarme que defina etiqueta y titulo ret = m.toHTML(props, g, email, width, Modelo.eModo.prevista); //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); }
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); }
private void generarDocumentoHTML(Nodo n, DateTime now, string fname, string docPath, string URL) { List <Nodo> pathn = getPath(n.id); Modelo m = grupo.organizacion.getModeloDocumento(n.modeloID); DateTime inicio = DateTime.MaxValue; //junto propuestas List <Propuesta> props = new List <Propuesta>(); foreach (Nodo n1 in pathn) { Propuesta p = getPropuesta(n1); if (p != null) //la raiz { props.Add(p); if (p.born < inicio) { inicio = p.born; } } } //firma consenso string ret = ""; ret += "Documento escrito de forma cooperativa.<br>"; ret += "Grupo: " + this.nombre + "<br>"; ret += "Documento ID:" + fname + "<br>"; ret += "Inicio de debate: " + inicio.ToString("dd/MM/yy") + "<br>"; ret += "Fecha de consenso: " + DateTime.Now.ToString("dd/MM/yy") + " " + DateTime.Now.ToShortTimeString() + "<br>"; ret += "Ubicación: <a target='_blank' href='" + URL + "'>" + URL + "</a><br>"; ret += "Objetivo: " + this.grupo.objetivo + "<br>"; ret += "Usuarios: " + this.grupo.getUsuariosHabilitados().Count + "<br>"; ret += "Activos: " + this.grupo.activos + "<br>"; ret += "Si: (≥ " + this.minSiPc + "%): " + n.flores + "<br>"; ret += "No: (≤ " + this.maxNoPc + "%): " + n.negados + "<br>"; //admin if (this.grupo.getAdmin() != null) { ret += "Coordinador: " + grupo.getAdmin().nombre + "<br>"; } //representates ret += "Representantes: "; foreach (Usuario rep in this.grupo.getRepresentantes()) { ret += rep.nombre + ","; } if (ret.EndsWith(",")) { ret = ret.Substring(0, ret.Length - 1); } ret += "<br>"; //secretaria if (this.grupo.getSecretaria() != null) { ret += "Secretaria: " + grupo.getSecretaria().nombre + "<br>"; } //facilitador if (this.grupo.getFacilitador() != null) { ret += "Facilitador: " + grupo.getFacilitador().nombre + "<br>"; } //armo HTML string html = ""; try { m.firmaConsenso = ret; html = m.toHTML(props, this.grupo, "", 1024, Modelo.eModo.consenso); } catch (Exception ex) { throw new Exception("generarDocumentoHTML():toHTML():" + m.nombre + ":" + ex.Message + " " + ex.StackTrace); } //escribo System.IO.File.WriteAllText(grupo.path + "\\" + docPath + "\\" + fname + ".html", html, System.Text.Encoding.UTF8); }