Esempio n. 1
0
        public bool CrearPFDPorCuadrante(object proyectoSeleccionado, object cuadranteSeleccionado, bool esTrineo, string pathDestino, int tipoBusqueda, string path, string nombreArchivo, out string mensageError)
        {
            try
            {
                Proyecto  proyecto  = (Proyecto)proyectoSeleccionado;
                Cuadrante cuadrante = (Cuadrante)cuadranteSeleccionado;

                SplitPDF.Instance          = null;
                SplitPDF.CantidadTravelers = 0;
                mensageError = "";

                if (proyecto == null || proyecto.ProyectoID <= 0)
                {
                    mensageError = "Selecciona un proyecto";
                    return(false);
                }
                else if (tipoBusqueda == 1 && (cuadrante == null || cuadrante.CuadranteID <= 0))
                {
                    mensageError = "Selecciona un cuadrante";
                    return(false);
                }
                else if (pathDestino == string.Empty)
                {
                    mensageError = "Selecciona una carpeta de destino";
                    return(false);
                }
                else if (tipoBusqueda == 2 && path == "")
                {
                    mensageError = "Selecciona un archivo";
                    return(false);
                }
                else if (tipoBusqueda == 0)
                {
                    mensageError = "Necesitas seleccionar el tipo de busqueda: por cuadrante o por csv";
                    return(false);
                }
                DataTable dtSpools = new DataTable();
                int       cantidadArchivosEncontrados = 0;

                if (tipoBusqueda == 1) //cuadrante
                {
                    dtSpools = ObtieneSpools(cuadrante.CuadranteID, proyecto.ProyectoID);
                    string mensajeNombreCsv;
                    SplitPDF.Instance.CrearObtenerCSV(pathDestino, cuadrante.NombreCuadrante, out mensajeNombreCsv);
                    for (int i = 0; i < dtSpools.Rows.Count; i++)
                    {
                        if ((ExisteNumeroOrdenPath(proyecto.pathRutaCompartida, dtSpools.Rows[i][0].ToString())))
                        {
                            cantidadArchivosEncontrados++;
                        }
                    }

                    if (cantidadArchivosEncontrados > 0 && dtSpools.Rows.Count > 0)
                    {
                        string mensajeCrearPDF = "";
                        if (SplitPDF.Instance.CrearObtenerPDF(pathDestino, cuadrante.NombreCuadrante, out mensajeCrearPDF))
                        {
                            foreach (DataRow item in dtSpools.Rows)
                            {
                                string ruta = System.IO.Path.Combine(proyecto.pathRutaCompartida, "ODT " + item[0].ToString() + ".pdf");
                                try
                                {
                                    if (ExisteNumeroOrdenPath(proyecto.pathRutaCompartida, item[0].ToString()))
                                    {
                                        int numeroPaginasPDF = SplitPDF.Instance.CantidadDePaginas(ruta) - int.Parse(item[2].ToString());

                                        try
                                        {
                                            SplitPDF.Instance.SplitAndSaveInterval(ruta, pathDestino, numeroPaginasPDF, 1, mensajeCrearPDF, item[0].ToString(), item[0].ToString() + "-" + item[1].ToString());
                                        }
                                        catch (Exception ex)
                                        {
                                            CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), "Error desconocido " + ex.Message);
                                        }
                                    }
                                    else
                                    {
                                        CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), "No existe el archivo pdf en la carpeta compartida");
                                    }
                                }
                                catch (Exception ex)
                                {
                                    CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), ex.Message);
                                }
                            }
                            if (SplitPDF.Instance.AgregoPaginas)
                            {
                                SplitPDF.Instance.document.Close();
                                SplitPDF.Instance.CerrarDocumentoCreado(pathDestino + "\\" + mensajeCrearPDF.Trim() + ".pdf");
                            }
                            CrearArchivo.Instance.CerrarDocumento();
                            mensageError = mensajeCrearPDF + " con " + SplitPDF.CantidadTravelers.ToString();
                            return(true);
                            // escribir que se cerro el documento.
                        }
                        else
                        {
                            mensageError = "No se pudo crear el archivo pdf " + mensajeCrearPDF;
                            return(false);
                        }
                    }
                    else
                    {
                        mensageError = "No se generó archivo con travelers, revisar archivo " + mensajeNombreCsv + ".csv para mayor informaciòn";
                        for (int i = 0; i < dtSpools.Rows.Count; i++)
                        {
                            CrearArchivo.Instance.EscribirMensajeDocumento(dtSpools.Rows[i][0].ToString(), dtSpools.Rows[i][0].ToString() + "-" + dtSpools.Rows[i][1].ToString(), "no se encontro  el archivo pdf en la ruta de la carpeta compartida");
                        }
                        CrearArchivo.Instance.CerrarDocumento();
                        return(false);
                    }
                }
                else if (tipoBusqueda == 2)//csv
                {
                    DataTable dt = ConvertToDataTable(path, 1);
                    if (dt.Rows.Count < 70)
                    {
                        DataSet dataSet = DAONumeroOrden.Instance.ValidarNumerosControl(dt, proyecto.ProyectoID);

                        dtSpools = dataSet.Tables[0];
                        string mensajeCrearPDF = "";
                        string mensajeNombreCsv;
                        SplitPDF.Instance.CrearObtenerCSV(pathDestino, nombreArchivo.Split('.')[0], out mensajeNombreCsv);

                        for (int i = 0; i < dtSpools.Rows.Count; i++)
                        {
                            if ((ExisteNumeroOrdenPath(proyecto.pathRutaCompartida, dtSpools.Rows[i][0].ToString())))
                            {
                                cantidadArchivosEncontrados++;
                            }
                        }

                        if (dtSpools.Rows.Count > 0 && dtSpools.Rows.Count <= 70)
                        {
                            if (cantidadArchivosEncontrados > 0)
                            {
                                if (SplitPDF.Instance.CrearObtenerPDF(pathDestino, nombreArchivo.Split('.')[0], out mensajeCrearPDF))
                                {
                                    if (dtSpools.Rows.Count > 0 && dtSpools.Rows.Count <= 70)
                                    {
                                        if (dataSet.Tables[1].Rows.Count > 0)
                                        {
                                            for (int i = 0; i < dataSet.Tables[1].Rows.Count; i++)
                                            {
                                                CrearArchivo.Instance.EscribirMensajeDocumento("", dataSet.Tables[1].Rows[i][0].ToString(), "No pertenece al proyecto " + proyecto.NombreProyecto);
                                            }
                                        }

                                        foreach (DataRow item in dtSpools.Rows)
                                        {
                                            string ruta = System.IO.Path.Combine(proyecto.pathRutaCompartida, "ODT " + item[0].ToString() + ".pdf");
                                            try
                                            {
                                                if (ExisteNumeroOrdenPath(proyecto.pathRutaCompartida, item[0].ToString()))
                                                {
                                                    int numeroPaginasPDF = SplitPDF.Instance.CantidadDePaginas(ruta) - int.Parse(item[2].ToString());

                                                    try
                                                    {
                                                        SplitPDF.Instance.SplitAndSaveInterval(ruta, pathDestino, numeroPaginasPDF, 1, mensajeCrearPDF, item[0].ToString(), item[0].ToString() + "-" + item[1].ToString());
                                                    }
                                                    catch (Exception ex)
                                                    {
                                                        CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), "Error desconocido " + ex.Message);
                                                    }
                                                }
                                                else
                                                {
                                                    CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), "No existe el archivo pdf en la carpeta compartida");
                                                }
                                            }
                                            catch (Exception ex)
                                            {
                                                CrearArchivo.Instance.EscribirMensajeDocumento(item[0].ToString(), item[0].ToString() + "-" + item[1].ToString(), ex.Message);
                                            }
                                        }
                                        if (SplitPDF.Instance.AgregoPaginas)
                                        {
                                            SplitPDF.Instance.document.Close();
                                            SplitPDF.Instance.CerrarDocumentoCreado(pathDestino + "\\" + mensajeCrearPDF.Trim() + ".pdf");
                                        }
                                        CrearArchivo.Instance.CerrarDocumento();
                                        mensageError = mensageError = mensajeCrearPDF + " con " + SplitPDF.CantidadTravelers.ToString();
                                        return(true);
                                        // escribir que se cerro el documento.
                                    }
                                    else
                                    {
                                        if (dtSpools.Rows.Count > 70)
                                        {
                                            CrearArchivo.Instance.EscribirMensajeDocumento("", "", "La cantidad de numeros de control que coinciden son mas de 70");
                                        }

                                        for (int i = 0; i < dtSpools.Rows.Count; i++)
                                        {
                                            CrearArchivo.Instance.EscribirMensajeDocumento("", dtSpools.Rows[i][0].ToString() + "" + dtSpools.Rows[i][1].ToString(), "coincide con el proyecto " + proyecto.NombreProyecto);
                                        }



                                        if (dataSet.Tables[1].Rows.Count > 0)
                                        {
                                            for (int i = 0; i < dataSet.Tables[1].Rows.Count; i++)
                                            {
                                                CrearArchivo.Instance.EscribirMensajeDocumento("", dataSet.Tables[1].Rows[i][0].ToString(), "No pertenece al proyecto " + proyecto.NombreProyecto);
                                            }
                                        }

                                        if (SplitPDF.Instance.AgregoPaginas)
                                        {
                                            SplitPDF.Instance.document.Close();
                                            SplitPDF.Instance.CerrarDocumentoCreado(pathDestino + "\\" + mensajeCrearPDF.Trim() + ".pdf");
                                        }
                                        CrearArchivo.Instance.CerrarDocumento();

                                        mensageError = SplitPDF.CantidadTravelers.ToString();
                                        return(false);
                                    }
                                }
                                else
                                {
                                    mensageError = "No se pudo crear el archivo pdf " + mensajeCrearPDF;
                                    return(false);
                                }
                            }
                            else
                            {
                                mensageError = "No se generó archivo con travelers, revisar archivo " + mensajeNombreCsv + ".csv para mayor informaciòn";
                                for (int i = 0; i < dtSpools.Rows.Count; i++)
                                {
                                    CrearArchivo.Instance.EscribirMensajeDocumento(dtSpools.Rows[i][0].ToString(), dtSpools.Rows[i][0].ToString() + "-" + dtSpools.Rows[i][1].ToString(), "no se encontro  el archivo pdf en la ruta de la carpeta compartida");
                                }
                                CrearArchivo.Instance.CerrarDocumento();
                                return(false);
                            }
                        }
                        else
                        {
                            mensageError = "No se generó archivo con travelers, revisar archivo " + mensajeNombreCsv + ".csv para mayor informaciòn";
                            //for (int i = 0; i < dtSpools.Rows.Count; i++)
                            //{
                            //    CrearArchivo.Instance.EscribirMensajeDocumento(dtSpools.Rows[i][0].ToString(), dtSpools.Rows[i][0].ToString() + "-" + dtSpools.Rows[i][1].ToString(), " maximo tienen que ser 70 numeros de control en el archivo");
                            //}
                            if (dtSpools.Rows.Count > 70)
                            {
                                mensageError = "Como máximo tienen que ser 70 numeros de control para iniciar con el proceso.";
                            }
                            if (dataSet.Tables[1].Rows.Count > 0)
                            {
                                for (int i = 0; i < dataSet.Tables[1].Rows.Count; i++)
                                {
                                    CrearArchivo.Instance.EscribirMensajeDocumento("", dataSet.Tables[1].Rows[i][0].ToString(), "No pertenece al proyecto " + proyecto.NombreProyecto);
                                }
                            }
                            CrearArchivo.Instance.CerrarDocumento();
                            return(false);
                        }
                    }
                    else
                    {
                        mensageError = " El número máximo permitido es 70 ";
                        return(false);
                    }
                }
                else
                {
                    mensageError = "No se selecciono un tipo de busqueda";
                    return(false);
                }
            }
            catch (Exception ex)
            {
                mensageError = ex.Message;
                return(false);
            }
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Conway - Game of Life");
            var app = new CommandLineApplication();


            app.Name = "Conway";
            app.HelpOption("-?|-h|--help");
            app.VersionOption("-v|--version", "Conway 1.0.0");


            var inputFile  = app.Option("-i <inputfile>|--input <inputfile>", "Input file", CommandOptionType.SingleValue);
            var iterations = app.Option("-n <n>|--iter <n>", "Number of iterations", CommandOptionType.SingleValue);

            app.OnExecute(() => {
                // procesar entrada de comandos
                try{
                    // algoritmo de Quadtree
                    if (!inputFile.HasValue())
                    {
                        throw new Exception("Please, specify an input file");
                    }
                    if (!System.IO.File.Exists(inputFile.Value()))
                    {
                        throw new Exception("Please, check that the specified file exists");
                    }
                    if (!iterations.HasValue())
                    {
                        throw new Exception("Please, specify a number of iterations");
                    }
                    var iter = Int32.Parse(iterations.Value());

                    // TODO: ser capaz de detectar el formato correcto

                    bool[][] matrix = null;
                    try{
                        matrix = new File.Rle(inputFile.Value()).GetMatrix();
                    }catch (Exception) {
                        matrix = new File.Vaca(inputFile.Value()).GetMatrix();
                    };
                    if (matrix == null)
                    {
                        throw new Exception("File format error");
                    }
                    Cuadrante cuadrante = Cuadrante.crear(matrix);
                    Console.WriteLine($"{cuadrante}");
                    var sw = Stopwatch.StartNew();
                    for (var i = 0; i < iter; i++)
                    {
                        while (!(cuadrante.isCentrado() && cuadrante.getCuadranteCentral().isCentrado()))
                        {
                            cuadrante = cuadrante.expandir();
                        }
                        cuadrante = cuadrante.generacionEtapa4();
                    }
                    sw.Stop();

                    var conway = new ConwayMatrix(cuadrante.GetMatrix());
                    var final  = conway.GetFinalResult();
                    // report final
                    Console.WriteLine($"{iter} iteraciones");
                    Console.WriteLine($"{final.CeldasVivas} celdas vivas");
                    Console.WriteLine($"Dimensiones: {final.LimitedMatrix.Width} x {final.LimitedMatrix.Height}");
                    Console.WriteLine($"Tiempo: {sw.Elapsed.TotalMilliseconds} ms");

                    // guardar
                    Console.Write("Fichero de salida: ");
                    var filename = Console.ReadLine().Trim();
                    if (filename == string.Empty)
                    {
                        Console.WriteLine(final.LimitedMatrix);
                    }
                    else
                    {
                        var file          = new File.Vaca();
                        file.ConwayMatrix = final.LimitedMatrix;
                        file.Save(filename);
                        Console.WriteLine($"Matriz final guardada en {filename}");
                    }
                }catch (Exception e) {
                    Console.WriteLine($"WARNING: {e.Message}");
                    Console.WriteLine("Starting UI");

                    // arrancar gui (algoritmo de ConwayMatrix)
                    AppBuilder.Configure <App>().UseSkia().UseX11().Start <GUI.MainWindow>();
                }
                return(0);
            });

            app.Execute(args);
        }