string doSeguimiento(int docID, string grupo, int width) { string ret = ""; Grupo g = app.getGrupo(grupo); lock (g) { LogDocumento ld = g.arbol.getLogDocumento(docID); Documento doc = Documento.load(g.path + "\\documentos\\" + ld.carpeta + "\\" + ld.docID.ToString("0000") + "\\" + ld.fname + ".json"); doc.grupo = g; ret = doc.toHTMLSeguimiento(); } return(ret); }
private bool comprobarConsenso(Nodo n, string email) { bool ret = false; Modelo m = grupo.organizacion.getModeloDocumento(n.modeloID); List <Nodo> pathn = getPath(n.id); if (m != null && n.nivel == n.niveles) { //es una hoja de documento completo, verifico condicion n.negados = getNegados(n); //condicion de consenso if (!n.consensoAlcanzado && n.flores >= minSiValue && n.negados <= maxNoValue) { //esta rama ha alcanzado el consenso //genero documento DateTime fdate = DateTime.Now; int docID = lastDocID++; string fname = m.nombre + "_" + docID.ToString("0000"); string docPath = "documentos\\" + m.carpeta() + "\\" + docID.ToString("0000"); string URL = grupo.URL + "/grupos/" + nombre + "/" + docPath.Replace('\\', '/') + "/" + fname + ".html"; //creo carpeta se salida //crearCarpeta(docPath); if (!System.IO.Directory.Exists(grupo.path + "\\" + docPath)) { System.IO.Directory.CreateDirectory(grupo.path + "\\" + docPath); System.IO.Directory.CreateDirectory(grupo.path + "\\" + docPath + "\\res\\documentos"); System.IO.File.Copy(grupo.path + "\\..\\..\\styles.css", grupo.path + "\\" + docPath + "\\styles.css"); System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(grupo.path + "\\..\\..\\res\\documentos"); foreach (System.IO.FileInfo fi in di.GetFiles()) { System.IO.File.Copy(fi.FullName, grupo.path + "\\" + docPath + "\\res\\documentos\\" + fi.Name); } } //guardo HTML generarDocumentoHTML(n, fdate, fname, docPath, URL); //guardo documento Documento doc = crearDocumento(n, fdate, fname, docPath, URL); //ejecuto proceso de consenso alcanzado try { doc.grupo = grupo; doc.EjecutarConsenso(); } catch (Exception ex) { doc.addLog("EjecutarConsenso: <font color=red>" + ex.Message + "</font>"); } //guardo el documento doc.save(); //notifico via email a todos los socios if (!simulacion) { foreach (Usuario u in grupo.usuarios) { if (u.email != email) { Tools.encolarMailNuevoConsenso(grupo, u.email, n.flores, n.negados, URL); u.alertas.Add(new Alerta(Tools.tr("Nueva decision [%1]", doc.nombre + ": " + doc.titulo, grupo.idioma))); } } } //cruzo modelo con valores Propuesta p; List <Propuesta> props = new List <Propuesta>(); foreach (Nodo n1 in pathn) { p = getPropuesta(n1); if (p != null) //la raiz { props.Add(p); } } //guardo el log historico en el arbol p = getPropuesta(n.id); //obtengo el titulo del debate de cualquiera de las propuestas LogDocumento ld = new LogDocumento(); ld.fecha = fdate; ld.titulo = p.titulo; ld.icono = grupo.organizacion.getModeloDocumento(n.modeloID).icono; if (ld.titulo.Length > 50) { ld.titulo = ld.titulo.Substring(0, 50); } ld.modeloNombre = grupo.organizacion.getModeloDocumento(n.modeloID).nombre; ld.modeloID = n.modeloID; ld.x = n.x; if (ld.x == 0) { ld.x = 90; } ld.docID = docID; ld.fname = fname; ld.arbol = nombre; ld.objetivo = grupo.objetivo; ld.flores = n.flores; ld.negados = n.negados; ld.carpeta = m.carpeta(); ld.URL = URL; ld.revisionDias = m.getRevisionDias(props); grupo.logDecisiones.Add(ld); //marco a todos los nodos del debate y sus propuestas for (int i = 0; i < pathn.Count - 1; i++) //menos la raiz { pathn[i].consensoAlcanzado = true; getPropuesta(pathn[i]).consensoAlcanzado = true; foreach (Nodo n2 in pathn[i].children) { marcarConsenso(n2); } } grupo.save(grupo.path + "\\" + docPath); //guardo copia del arbol ret = true; } } return(ret); }
private bool comprobarConsenso(Nodo n) { bool ret = false; Modelo m = Modelo.getModelo(n.modeloID); List<Nodo> pathn = getPath(n.id); if (m != null && pathn.Count - 1 == m.niveles) { //es una hoja de documento completo, verifico condicion n.negados = getNegados(n); //condicion de consenso if (!n.consensoAlcanzado && n.flores >= minSiValue && n.negados <= maxNoValue) { //esta rama ha alcanzado el consenso //genero documento DateTime fdate = DateTime.Now; int docID = lastDocID++; string fname = m.nombre + "_" + docID.ToString("0000"); //guardo HTML generarDocumentoHTML(n, fdate, fname); //guardo documento Documento doc = crearDocumento(n, fdate, fname); //ejecuto proceso de consenso alcanzado try { doc.grupo = grupo; doc.EjecutarConsenso(); } catch (Exception ex) { doc.addLog("EjecutarConsenso: <font color=red>" + ex.Message + "</font>"); } //guardo el documento doc.save(); grupo.save(grupo.path + "\\documentos\\"); //guardo copia del arbol //notifico via email a todos los socios if (!simulacion) { foreach (Usuario u in grupo.usuarios) Tools.encolarMailNuevoConsenso(u.email, n.flores, n.negados, grupo.path + "\\documentos\\" + nombre + ".json"); } //guardo el log historico en el arbol Propuesta p = getPropuesta(n.id); //obtengo el titulo del debate de cualquiera de las propuestas LogDocumento ld = new LogDocumento(); ld.fecha = fdate; ld.titulo = p.titulo; ld.icono = getModelo(n.modeloID).icono; if (ld.titulo.Length > 50) ld.titulo = ld.titulo.Substring(0, 50); ld.modeloNombre = getModelo(n.modeloID).nombre; ld.modeloID = n.modeloID; ld.x = n.x; if (ld.x == 0) ld.x = 90; ld.docID = docID; ld.fname = fname; ld.arbol = nombre; ld.objetivo = grupo.objetivo; ld.flores = n.flores; ld.negados = n.negados; ld.URL = grupo.URL + "/grupos/" + nombre + "/documentos/" + fname + ".html"; logDocumentos.Add(ld); //marco a todos los nodos del debate y sus propuestas for (int i = 0; i < pathn.Count - 1; i++) //menos la raiz { pathn[i].consensoAlcanzado = true; getPropuesta(pathn[i]).consensoAlcanzado = true; foreach (Nodo n2 in pathn[i].children) marcarConsenso(n2); } ret = true; } } return ret; }