Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
        }