Пример #1
0
        public void LeerArchivo_EnviarNombreArchivoVacio_LanzaExcepcion()
        {
            // Arrange
            ILector DOC  = new LectorCSV();
            string  ruta = "";

            // ACT
            var ACT = DOC.LeerDatos(ruta);

            // Assert
            Assert.ThrowsException <FileNotFoundException>(() => ACT);
        }
Пример #2
0
        public void LeerDatos_ArchivoExistenteConDatos_DeveulveListaConDatos()
        {
            // Arrange
            ILector DOC  = new LectorCSV();
            string  ruta = "C:\\Pedidos.xlsx";

            // ACT
            var ACT = DOC.LeerDatos(ruta);

            // Assert
            Assert.IsTrue(ACT.Any());
        }
Пример #3
0
        public void LeerArchivo_ArchivoExistenteConEspaciosEnBlanco_DeveulveListaVacia()
        {
            // Arrange
            ILector DOC  = new LectorCSV();
            string  ruta = "C:\\PedidosEspaciosEnBlanco.xlsx";

            // ACT
            var ACT = DOC.LeerDatos(ruta);

            // Assert
            Assert.IsFalse(ACT.Any());
        }
Пример #4
0
        public void LeerDatos_ArchivoNoExistente_LanzaExcepcion()
        {
            // Arrange
            ILector DOC  = new LectorCSV();
            string  ruta = "C:\\pruebas.txt";

            // ACT
            var ACT = DOC.LeerDatos(ruta);

            // Assert
            Assert.ThrowsException <FileNotFoundException>(() => ACT);
        }
Пример #5
0
        static void Main(string[] args)
        {
            ILector       lector      = new LectorCSV();
            IConvertidor  convertidor = new ConvertidorObjetos();
            string        ruta        = Path.GetFullPath("Pedidos.xlsx");
            var           datos       = lector.LeerDatos(ruta);
            List <Pedido> pedidos     = new List <Pedido>();

            pedidos = convertidor.ConvertirDatos(datos);

            Context         context  = new Context();
            List <IEmpresa> empresas = new List <IEmpresa>();

            //Fedex
            context.AsignarEstrategia(new EstrategiaFedex());
            List <IFabricaMedioTransporte> fabricas = new List <IFabricaMedioTransporte>();

            fabricas.Add(new FabricaBarco());
            var fedex = context.EjecutarEstrategia(fabricas, new Barco());

            empresas.Add(fedex);

            //DHL
            context.AsignarEstrategia(new EstrategiaDHL());
            List <IFabricaMedioTransporte> fabricas2 = new List <IFabricaMedioTransporte>();

            fabricas2.Add(new FabricaAvion());
            fabricas2.Add(new FabricaBarco());
            var dhl = context.EjecutarEstrategia(fabricas2, new Avion());

            empresas.Add(dhl);

            //Estafeta
            context.AsignarEstrategia(new EstrategiaEstafeta());
            List <IFabricaMedioTransporte> fabricas3 = new List <IFabricaMedioTransporte>();

            fabricas3.Add(new FabricaTren());
            var estafeta = context.EjecutarEstrategia(fabricas3, new Tren());

            empresas.Add(estafeta);

            IProcesarDatos              procesarDatos = new ProcesarDatos();
            IArmarMensajes              armarMensajes = new ArmarMensajes();
            IPresentador                presentador   = new Presentador();
            ValidadorService            validador     = new ValidadorService(procesarDatos, armarMensajes, presentador);
            Dictionary <string, string> mensajes      = new Dictionary <string, string>();

            validador.Validar(empresas, pedidos);

            Console.ReadLine();
        }
Пример #6
0
    //**INCOMPLETO
    public void LeerDatosTxt()
    {
        // Resultado funcion leer del LectorCSV en listaPuntos con argumento archivoInput
        Debug.Log("LLamadaLectorCSV");
        listaDatos = LectorCSV.Leer(archivoInput);

        // Lista de cadenas, leyendo las keys de la primera fila (nombres de las personas)
        listaNombres = new List <string>(listaDatos[1].Keys);

        // Loop en listaNombres a lo largo de todas las columnas que haya
        for (var j = 0; j < listaNombres.Count; j++)
        {
            // Loop en listaDatos a lo largo de todos los datos que haya
            for (var i = 0; i < listaDatos.Count; i++)  // listaPuntos.Count devuelve el número de filas en la lista
            {
                // Convierte el objeto leído por LectorCSV a string para poder ser utilizado
                // AQUÍ HAY UN ERROR EL TIPO DE listaDatos[i][listaNombres[j]] NO ES OBJETO
                matrizDatos[i, j] = (string)listaDatos[i][listaNombres[j]];
                Debug.Log("Dato almacenado en fila " + i + "y columna " + j + ": " + matrizDatos[i, j]);
            }
        }
    }
Пример #7
0
        private void tsButtonCargaNumNFSe_Click(object sender, EventArgs e)
        {
            try
            {
                openFileDialog1.Filter      = "CSV files|*.csv"; // "Excel Files|*.xls|*.xlsx";
                openFileDialog1.Multiselect = false;
                DialogResult dr = openFileDialog1.ShowDialog();

                if (dr == DialogResult.OK)
                {
                    string[] filenames      = openFileDialog1.FileNames;
                    var      nombreArchivos = filenames
                                              .Select(y => new {
                        archivo = System.IO.Path.GetFileName(y),
                        carpeta = System.IO.Path.GetDirectoryName(y)
                    });
                    string nombreArchivo = nombreArchivos.Select(a => a.archivo).ToList().FirstOrDefault();
                    string carpetaOrigen = nombreArchivos.Select(a => a.carpeta).FirstOrDefault();

                    System.Globalization.CultureInfo culInfo = new System.Globalization.CultureInfo(configuracion.CulturaParaMontos);
                    LectorCSV csv = new LectorCSV(configuracion.CodigosServicioDflt);
                    csv.ProgressHandler += reportaProgreso;
                    var archivoCsv = csv.LeeArchivoCsv(carpetaOrigen, nombreArchivo, culInfo);

                    ProcesaCfdi proc = new ProcesaCfdi(lblUsuario.Text);
                    proc.Progreso += new ProcesaCfdi.LogHandler(reportaProgreso);

                    proc.ProcesaActualizacionDeNumeroFiscalE(archivoCsv, carpetaOrigen, nombreArchivo, mainController);

                    filtrarFacturas();
                }
            }
            catch (Exception ex)
            {
                reportaProgreso(0, ex.Message);
            }
        }
Пример #8
0
        private void tsBtnIntegraFactura_Click(object sender, EventArgs e)
        {
            try
            {
                openFileDialog1.Filter      = "CSV files|*.csv"; // "Excel Files|*.xls|*.xlsx";
                openFileDialog1.Multiselect = true;
                DialogResult dr = openFileDialog1.ShowDialog();

                if (dr == DialogResult.OK)
                {
                    string[] filenames      = openFileDialog1.FileNames;
                    var      nombreArchivos = filenames
                                              .Select(y => new { archivo = System.IO.Path.GetFileName(y),
                                                                 carpeta = System.IO.Path.GetDirectoryName(y) });
                    List <string>          lNombreArchivos = nombreArchivos.Select(a => a.archivo).ToList();
                    string                 carpetaOrigen   = nombreArchivos.Select(a => a.carpeta).FirstOrDefault();
                    IntegraVentasBandejaXL bandejaXL       = new IntegraVentasBandejaXL(configuracion);

                    bandejaXL.ProgressHandler += reportaProgreso;

                    LectorCSV csv = new LectorCSV();
                    csv.ProgressHandler += reportaProgreso;

                    System.Globalization.CultureInfo culInfo = new System.Globalization.CultureInfo(configuracion.CulturaParaMontos);
                    var archivosXl = csv.ConvierteCsvAExcel(carpetaOrigen, lNombreArchivos, culInfo);

                    bandejaXL.ProcesaCarpetaEnTrabajo(carpetaOrigen, archivosXl);

                    filtrarFacturas();
                }
            }
            catch (Exception ex)
            {
                reportaProgreso(0, ex.Message);
            }
        }
Пример #9
0
        static void Main(string[] args)
        {
            ContenedorDependencias contenedor = new ContenedorDependencias();
            IServiceProvider       services   = contenedor.Services();
            var instancia             = services.GetService <ICrearInstanciaPaqueteriaFactory>();
            var ObtenerMasBarata      = services.GetService <IObtenerMensajeMejorPaqueteria>();
            var validaPaqueteria      = services.GetService <IValidarPaqueteria>();
            var validaMedioTransporte = services.GetService <IValidarMedioTransporte>();
            var EvaluadorFormatearMsg = services.GetService <IEvaluadorEstrategiaFormatearMensajeEnvio>();
            var ObtenerRangoTiempo    = services.GetService <IConvertirTiempo>();

            LectorCSV  objLecto = new LectorCSV();
            LectorJson objJson  = new LectorJson();

            string cClave = "JSON";

            List <ParametrosDTO>   lstDatosCsv           = new List <ParametrosDTO>();
            ParametrosDTO          imprimir              = new ParametrosDTO();
            List <IMensajeEnvio>   lstEstrategias        = new List <IMensajeEnvio>();
            List <ILectorArchivos> lstEstrategiasArchivo = new List <ILectorArchivos>();


            lstEstrategias.Add(new MensajesPaqueteriaFuturo(new List <string>(), new MensajeEnvioDTO(), new MensajesColoresDTO()));
            lstEstrategias.Add(new MensajesPaqueteriaPasado(new List <string>(), new MensajeEnvioDTO(), new MensajesColoresDTO()));
            lstEstrategiasArchivo.Add(new LectorCSV());
            lstEstrategiasArchivo.Add(new LectorJson());

            ObtenerConfiguración config        = new ObtenerConfiguración();
            List <Configuracion> configuracion = config.ObtenerDatos();
            var obtenerArchivo = lstEstrategiasArchivo.FirstOrDefault(c => c.cTipoArchivo == cClave);

            lstDatosCsv = obtenerArchivo.ObtenerDatosDTO();

            string[] cPaqueterias = { "FEDEX", "DHL", "ESTAFETA" };
            foreach (var x in lstDatosCsv)
            {
                List <IEmpresa>      paqueterias   = instancia.CrearInstancia(x.cMedioTransporte, configuracion);
                List <ParametrosDTO> lstResultados = new List <ParametrosDTO>();
                string cPaqueteria      = x.cPaqueteria;
                string cMedioTransporte = x.cMedioTransporte;
                if (paqueterias != null)
                {
                    foreach (var i in paqueterias)
                    {
                        ParametrosDTO parametro = new ParametrosDTO();
                        parametro = i.ObtenerDatosPaqueteria(x);
                        lstResultados.Add(parametro);
                    }
                }
                Dictionary <string, double> lstTiempos = new Dictionary <string, double>();
                string cValidaPaqueteria = validaPaqueteria.ValidarPaqueteria(paqueterias, cPaqueteria, cPaqueterias);

                if (cValidaPaqueteria != "")
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(cValidaPaqueteria + "\n");
                    continue;
                }
                string cValidarMedioTransporte = validaMedioTransporte.ValidarMedioTransporte(paqueterias, cPaqueteria, cMedioTransporte);
                if (cValidarMedioTransporte != "")
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine(cValidarMedioTransporte + "\n");
                    continue;
                }
                imprimir = lstResultados.Where(i => i.cPaqueteria == cPaqueteria).Select(y => y).FirstOrDefault();

                string cClaveEstrategia = EvaluadorFormatearMsg.ObtenerClaveEstrategia(imprimir.dtFechaEntrega);
                var    ObtenerMensaje   = lstEstrategias.FirstOrDefault(c => c.cConjugacion == cClaveEstrategia);

                TimeSpan difFechas = DateTime.Now - imprimir.dtFechaEntrega;

                double dTotalMinutos = Math.Abs(difFechas.TotalMinutes);

                IConvertirTiempo h1 = new CalculadorMinutos();
                IConvertirTiempo h2 = new CalculadorHoras();
                IConvertirTiempo h3 = new CalculadorDias();
                IConvertirTiempo h4 = new CalculadorSemanas();
                IConvertirTiempo h5 = new CalculadorMeses();
                IConvertirTiempo h6 = new CalculadorBimestre();
                IConvertirTiempo h7 = new CalculadorAnios();
                h1.setNext(h2);
                h2.setNext(h3);
                h3.setNext(h4);
                h4.setNext(h5);
                h5.setNext(h6);
                h6.setNext(h7);
                h1.ObtenerTiempo(dTotalMinutos, lstTiempos);

                MensajesColoresDTO Mensaje = ObtenerMensaje.FormatearMensaje(lstTiempos, imprimir);
                Console.ForegroundColor = (ConsoleColor)System.Enum.Parse(typeof(ConsoleColor), Mensaje.cColor);
                Console.Write(Mensaje.cMensaje + "\n");
                string cOpcionMaBarata = ObtenerMasBarata.ImprimirMensajePaqueteriaMasBarata(lstResultados, imprimir);
                if (cOpcionMaBarata != "")
                {
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine(cOpcionMaBarata + "\n");
                }
            }
            Console.ReadKey();
        }
    // Función para trazar el gráfico, tanto 2D como 3D
    public void TrazarGrafico()
    {
        // Se destruye el anterior gráfico, destruyendo soportePuntos y lineRenderer, y se vuelve a instanciar
        //Destroy(soportePuntos);
        soportePuntos = Instantiate(
            SoportePuntos,
            new Vector3(0, 0, 0),
            Quaternion.identity);

        // Se destruye la anterior línea
        //Destroy(lineaGrafico);
        lineaGrafico = Instantiate(
            PrefabLinea,
            new Vector3(0, 0, 0),
            Quaternion.identity);


        // Se accede al Component LineRenderer de lineaGrafico para cambiar valores de ancho de inicio y final
        lineaGrafico.GetComponent <LineRenderer>().startWidth = inicioLineaGrafico;
        lineaGrafico.GetComponent <LineRenderer>().endWidth   = finalLineaGrafico;

        // Se establece el color de lineaGrafico
        lineaGrafico.GetComponent <LineRenderer>().startColor = DimeColor(columnaY);
        lineaGrafico.GetComponent <LineRenderer>().endColor   = DimeColor(columnaY);

        // Resultado funcion leer del LectorCSV en listaPuntos con argumento archivoInput. Se manda false porque se quiere leer números
        listaPuntos = LectorCSV.Leer(archivoInput);

        // Lista de cadenas, con las keys (nombres de las columnas)
        List <string> listaColumnas = new List <string>(listaPuntos[1].Keys);

        // Asignacion nombres columnas desde listaColumnas a variables nombre
        nombreX = listaColumnas[columnaX];
        nombreY = listaColumnas[columnaY];
        nombreZ = listaColumnas[columnaZ];

        // Obtención máximos en cada eje
        float xMax = EncontrarValorMaximo(nombreX);
        float yMax = EncontrarValorMaximo(nombreY);
        float zMax = EncontrarValorMaximo(nombreZ);

        // Obtención de mínimos en cada eje
        float xMin = EncontrarValorMinimo(nombreX);
        float yMin = EncontrarValorMinimo(nombreY);
        float zMin = EncontrarValorMinimo(nombreZ);

        float x;
        float y;
        float z;

        // El número de vértices del lineRenderer es el número de puntos en listaPuntos
        lineaGrafico.GetComponent <LineRenderer>().positionCount = listaPuntos.Count;

        // Loop en listaPuntos
        for (var i = 0; i < listaPuntos.Count; i++) // listaPuntos.Count devuelve el número de filas en la lista
        {
            // Obtener valor en listaPuntos en la iesima fila de la columna con nombre determinado, normalizado
            if (xMax != xMin)
            {
                x =
                    (System.Convert.ToSingle(listaPuntos[i][nombreX]) - xMin) / (xMax - xMin) + xInicial / escalaGrafico;
            }

            else
            {
                x = System.Convert.ToSingle(listaPuntos[i][nombreX]) + xInicial / escalaGrafico;
            }

            if (yMax != yMin)
            {
                y =
                    (System.Convert.ToSingle(listaPuntos[i][nombreY]) - yMin) / (yMax - yMin) + yInicial / escalaGrafico;
            }

            else
            {
                y = System.Convert.ToSingle(listaPuntos[i][nombreY]) + yInicial / escalaGrafico;
            }


            // Si el modo 2D está desactivado se da valor a z de la forma habitual
            if (modo2D == false)
            {
                if (zMax != zMin)
                {
                    z =
                        (System.Convert.ToSingle(listaPuntos[i][nombreZ]) - zMin) / (zMax - zMin) + zInicial / escalaGrafico;
                }

                else
                {
                    z = System.Convert.ToSingle(listaPuntos[i][nombreZ]) + zInicial / escalaGrafico;
                }
            }

            // Si el modo 2D está activado todos los puntos tienen el mismo valor en z
            else
            {
                // Se multiplica el valor por escalaGrafico al instanciar posteriormente
                z = zInicial / escalaGrafico;

                // Se añade punto al lineRenderer
                lineaGrafico.GetComponent <LineRenderer>().SetPosition(i, new Vector3(x, y, z) * escalaGrafico);
            }

            // Se instancia un PrefabPunto
            GameObject puntoDatos = Instantiate(
                PrefabPunto,
                new Vector3(x, y, z) * escalaGrafico,
                Quaternion.identity);

            EsferaDatos esferaDatos = puntoDatos.GetComponent <EsferaDatos>();

            // Se hace puntoDatos derivada de SoportePuntos
            puntoDatos.transform.parent = soportePuntos.transform;

            // Asignacion valor a nombrePuntoDatos
            string nombrePuntoDatos =
                listaPuntos[i][nombreX] + " "
                + listaPuntos[i][nombreY] + " "
                + listaPuntos[i][nombreZ];

            // Se asigna nombre coherente al prefab
            puntoDatos.transform.name = nombrePuntoDatos;

            // Se guardan los valores del punto
            Vector3 valores = new Vector3(
                System.Convert.ToSingle(listaPuntos[i][nombreX]),
                System.Convert.ToSingle(listaPuntos[i][nombreY]),
                System.Convert.ToSingle(listaPuntos[i][nombreZ])
                );
            esferaDatos.GuardarValores(valores);
            esferaDatos.GuardarVariables(nombreX, nombreY, nombreZ);

            // Define un color RGBA para el punto
            if (modo2D == true)
            {
                // En modo 2D los puntos tienen el color de la línea
                puntoDatos.GetComponent <Renderer>().material.color = DimeColor(columnaY);
            }

            else
            {
                // Interpolación de colores para cada esfera
                pesoX = x / (x + y + z);
                pesoY = y / (x + y + z);
                pesoZ = z / (x + y + z);


                puntoDatos.GetComponent <Renderer>().material.color =
                    new Color(
                        DimeColor(columnaX).r *pesoX + DimeColor(columnaY).r *pesoY + DimeColor(columnaZ).r *pesoZ,
                        DimeColor(columnaX).g *pesoX + DimeColor(columnaY).g *pesoY + DimeColor(columnaZ).g *pesoZ,
                        DimeColor(columnaX).b *pesoX + DimeColor(columnaY).b *pesoY + DimeColor(columnaZ).b *pesoZ,
                        1.0f);
            }
        }

        // Si se está en modo 3D, se deben instanciar los ejes y girar todo 90 grados
        if (modo2D == false)
        {
            InstanciaEjes();

            conoEjeX.transform.parent = lineaGraficoX.transform;
            conoEjeY.transform.parent = lineaGraficoY.transform;
            conoEjeZ.transform.parent = lineaGraficoZ.transform;

            // Se gira soportePuntos, los ejes y las flechas para que apunten de cara
            soportePuntos.transform.rotation = Quaternion.Euler(0, 90, 0);
            lineaGraficoX.transform.rotation = Quaternion.Euler(0, 90, 0);
            lineaGraficoY.transform.rotation = Quaternion.Euler(0, 90, 0);
            lineaGraficoZ.transform.rotation = Quaternion.Euler(0, 90, 0);

            // Se giran los conos para que apunten en la dirección adecuada
            conoEjeX.transform.rotation = Quaternion.Euler(-90, 0, 0);
            conoEjeY.transform.rotation = Quaternion.Euler(0, 0, 0);
            conoEjeZ.transform.rotation = Quaternion.Euler(0, 0, -90);
        }
    }