コード例 #1
0
        static void Main(string[] args)
        {
            string texto;

            try
            {
                /*** SERVICIOS ***/
                // * Argumento
                IObtenedorTextoArgumentos obtenedorTextoPrimerArgumento = new ObtenedorTextoPrimerArgumento(args);
                // Archivo
                IValidadorArchivo   validadorArchivo   = new ValidarArchivoTexto();
                ILectorArchivoTexto lectorArchivoTexto = new LectorArchivoTexto(obtenedorTextoPrimerArgumento.ObtenerTextoArgumentos(), validadorArchivo);
                IObtenedorRegistrosArchivoListaStrings obtenedorContenidoArchivoListaStrings = new ObtenedorRegistrosArchivoListaStrings(lectorArchivoTexto);

                // * Procesamiento
                IDivisorLinea       divisorLinea       = new DivisorLineaDosCampos();
                IValidadorCamposCVS validadorCamposCVS = new ValidadorCamposEventos();
                //   Cadena de comparaciones
                IDeterminadorDiferenciaTiempo determinadorDiferenciaMes    = new DeterminadorDiferenciaMes(null);
                IDeterminadorDiferenciaTiempo determinadorDiferenciaDia    = new DeterminadorDiferenciaDia(determinadorDiferenciaMes);
                IDeterminadorDiferenciaTiempo determinadorDiferenciaHora   = new DeterminadorDiferenciaHora(determinadorDiferenciaDia);
                IDeterminadorDiferenciaTiempo determinadorDiferenciaMinuto = new DeterminadorDiferenciaMinuto(determinadorDiferenciaHora);
                IAnalizadorTextoEvento        analizadorEvento             = new AnalizadorTextoEvento(divisorLinea, validadorCamposCVS, determinadorDiferenciaMinuto);
                IPresentadorEventos           presentadorEventos           = new PresentadorEventos(obtenedorContenidoArchivoListaStrings.ObtenerRegistrosArchivo(), analizadorEvento);
                texto = presentadorEventos.PresentarEventos();
            }
            catch (Exception ex)
            {
                texto = $"Ha ocurrido un error: {ex.Message}";
            }
            //// Capa de presentación
            IDesplegador desplegador = new DesplegadorPantalla();

            desplegador.Desplegar(texto);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: raul40/RastreoPaquetes
        private static void Init(string[] _args)
        {
            try
            {
                string             cRuta = @"..\..\";
                string             cRutaConfiguracion = AppDomain.CurrentDomain.BaseDirectory + @"..\..\Config.json";
                List <DatosPedido> lstDatosPedido     = new List <DatosPedido>();
                if (_args[1].ToUpper() == "JSON")
                {
                    iLectorArchivo lectorArchivoTexto = new LectorArchivoJson();
                    lstDatosPedido = lectorArchivoTexto.LeerArchivo(cRuta);
                }
                else
                {
                    iLectorArchivo lectorArchivoTexto = new LectorArchivoTexto();
                    lstDatosPedido = lectorArchivoTexto.LeerArchivo(cRuta);
                }

                iLectorConfiguracion lectorConfig = new LectorConfiguracionJson();
                var datosCofig = lectorConfig.LeerConfiguracion(cRutaConfiguracion);
                AlmacenadorDatosService srvAlmacenadorDatos = new AlmacenadorDatosService();
                srvAlmacenadorDatos.CrearDirectorioDatos();
                EmpresaTransporteService srvEmpresaTransporte = new EmpresaTransporteService(lstDatosPedido, datosCofig);
                srvEmpresaTransporte.ObtenerResultado();
                Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.ReadLine();
            }
        }
コード例 #3
0
        public void ObtenerPedidos_LeerArchivo_ObtieneInformacion()
        {
            List <Pedido>      lstPedidos         = new List <Pedido>();
            LectorArchivoTexto LectorArchivoTexto = new LectorArchivoTexto();

            lstPedidos = LectorArchivoTexto.ObtenerPedidos();
            Assert.IsTrue(!lstPedidos.Any());
        }
コード例 #4
0
        public void ObtenerEntidad_EnviarListaCampos_GeneraPedido()
        {
            string[]           lstCampos          = new string[6];
            Pedido             entPedido          = new Pedido();
            LectorArchivoTexto LectorArchivoTexto = new LectorArchivoTexto();

            entPedido = LectorArchivoTexto.ObtenerEntidad(lstCampos);
            Assert.IsTrue(entPedido != null);
        }
コード例 #5
0
        public void ObtenerEntidad_EnviarListaCampos_GeneraPedidoConMedioTransporte()
        {
            string[] lstCampos = new string[6];
            lstCampos[4] = "Paqueteria";
            Pedido             entPedido          = new Pedido();
            LectorArchivoTexto LectorArchivoTexto = new LectorArchivoTexto();

            entPedido = LectorArchivoTexto.ObtenerEntidad(lstCampos);
            Assert.IsTrue(!string.IsNullOrWhiteSpace(entPedido.cMedioTransporte));
        }
コード例 #6
0
        public void ObtenerEntidad_EnviarListaCampos_GeneraPedidoConDistancia()
        {
            string[] lstCampos = new string[6];
            lstCampos[2] = "100";
            Pedido             entPedido          = new Pedido();
            LectorArchivoTexto LectorArchivoTexto = new LectorArchivoTexto();

            entPedido = LectorArchivoTexto.ObtenerEntidad(lstCampos);
            Assert.IsTrue(entPedido.iDistancia > 0);
        }
コード例 #7
0
        public void ObtenerEntidad_EnviarListaCampos_GeneraPedidoConDestino()
        {
            string[] lstCampos = new string[6];
            lstCampos[1] = "Destino";
            Pedido             entPedido          = new Pedido();
            LectorArchivoTexto LectorArchivoTexto = new LectorArchivoTexto();

            entPedido = LectorArchivoTexto.ObtenerEntidad(lstCampos);
            Assert.IsTrue(!string.IsNullOrWhiteSpace(entPedido.cDestino));
        }
コード例 #8
0
        public void ObtenerEntidad_EnviarListaCampos_GeneraPedidoConFechaPedido()
        {
            string[] lstCampos = new string[6];
            lstCampos[5] = "29-01-2020 12:00:00";
            Pedido             entPedido          = new Pedido();
            LectorArchivoTexto LectorArchivoTexto = new LectorArchivoTexto();

            entPedido = LectorArchivoTexto.ObtenerEntidad(lstCampos);
            Assert.IsTrue(entPedido.dtPedido != null);
        }
コード例 #9
0
        public void LeerArchivoAListaPedidos_RutaNoExiste_ExcepcionNoEncontroArchivo()
        {
            //Arrange
            var DOCIConvertidorPedido = new Mock <IConvertidorPedido>();
            var SUT = new LectorArchivoTexto(DOCIConvertidorPedido.Object);

            SUT.lectorArchivo = l => throw new FileNotFoundException();

            //Assert
            Assert.ThrowsException <FileNotFoundException>(() => SUT.LeerArchivoAListaPedidos("ruta inexistente"));
        }
コード例 #10
0
        public void LeerArchivoAListaPedidos_EjecucionConvertidorAPedidos_SeEjecutaSoloUnaVez()
        {
            //Arrange
            var DOCIConvertidorPedido = new Mock <IConvertidorPedido>();
            var SUT = new LectorArchivoTexto(DOCIConvertidorPedido.Object);

            SUT.lectorArchivo = l => new string[] { "datos pedido" };

            //Act
            var lstPedidosLeidos = SUT.LeerArchivoAListaPedidos("ruta");

            //Assert tipo spy
            DOCIConvertidorPedido.Verify(c => c.ConvertirAPedidos(It.IsAny <List <string> >()), Times.Once);
        }
コード例 #11
0
        public void LeerArchivoAListaPedidos_ExisteArchivo_ObtienePedido()
        {
            //Arrange
            List <PedidoDTO> lstPedidos = new List <PedidoDTO> {
                new PedidoDTO {
                    cDestino = "destino"
                }
            };
            var DOCIConvertidorPedido = new Mock <IConvertidorPedido>();

            DOCIConvertidorPedido.Setup(c => c.ConvertirAPedidos(It.IsAny <List <string> >())).Returns(lstPedidos);
            var SUT = new LectorArchivoTexto(DOCIConvertidorPedido.Object);

            SUT.lectorArchivo = l => new string[] { "datos pedido" };

            //Act
            var lstPedidosLeidos = SUT.LeerArchivoAListaPedidos("ruta");

            //Assert
            Assert.IsTrue(lstPedidosLeidos.Any());
        }
コード例 #12
0
        public void Menu()
        {
            string            cFormatoMesaje = string.Empty, cMensajePedido = string.Empty;
            bool              lEntregado = false;
            DateTime          dtFechaHoy = DateTime.Now;
            List <string>     lstErrores = new List <string>(), lstMensajes = new List <string>();
            List <Pedido>     lstPedido      = new List <Pedido>();
            List <Paqueteria> lstPaqueteria  = new List <Paqueteria>();
            ILectorArchivo    IlectorArchivo = new LectorArchivoTexto();
            IValidacion       IValidacion    = new Validaciones();
            List <IInicializarTransportes> lstIInicializarTransportes = new List <IInicializarTransportes>();
            IVerificarOpcionEconomica      IVerificarOpcionEconomica  = new EvaluarOpcionEconominca();
            IAsignarPaqueteria             IAsignarPaqueteria         = new  AsignarEntidades();

            cFormatoMesaje = "Tu paquete {0} de {1} y {2} a {3} {4} {5} y {6} un costo de {7} (Cualquier reclamación con {8}).";

            ObtenerMinutos ObtenerMinutos = new ObtenerMinutos();
            ObtenerHoras   ObtenerHoras   = new ObtenerHoras();
            ObtenerDias    ObtenerDias    = new ObtenerDias();
            ObtenerMeses   ObtenerMeses   = new ObtenerMeses();

            ObtenerMinutos.Siguiente(ObtenerHoras);
            ObtenerHoras.Siguiente(ObtenerDias);
            ObtenerDias.Siguiente(ObtenerMeses);

            IGenerarMensaje IGenerarMensaje = new GenerarMensajePedido(ObtenerMinutos, IVerificarOpcionEconomica);

            lstIInicializarTransportes.Clear();
            lstIInicializarTransportes.Add(new TransporteBarco());
            ITransportesPorPaqueteria ITransportesPorPaqueteria = new CrearTransportes(lstIInicializarTransportes);
            IInicializarPaqueterias   IInicializarPaqueterias   = new PaqueteriaFedex(ITransportesPorPaqueteria);

            lstPaqueteria.Add(IInicializarPaqueterias.CrearPaqueteria());

            lstIInicializarTransportes.Clear();
            lstIInicializarTransportes.Add(new TransporteAvion());
            lstIInicializarTransportes.Add(new TransporteBarco());
            ITransportesPorPaqueteria = new CrearTransportes(lstIInicializarTransportes);
            IInicializarPaqueterias   = new PaqueteriaDHL(ITransportesPorPaqueteria);
            lstPaqueteria.Add(IInicializarPaqueterias.CrearPaqueteria());

            lstIInicializarTransportes.Clear();
            lstIInicializarTransportes.Add(new TransporteTren());
            ITransportesPorPaqueteria = new CrearTransportes(lstIInicializarTransportes);
            IInicializarPaqueterias   = new PaqueteriaEstafeta(ITransportesPorPaqueteria);
            lstPaqueteria.Add(IInicializarPaqueterias.CrearPaqueteria());


            lstPedido = IlectorArchivo.ObtenerPedidos();

            foreach (Pedido entPedido in lstPedido)
            {
                Console.ResetColor();
                lstErrores = new List <string>();
                lstErrores = IValidacion.ValidarCampos(entPedido, lstPaqueteria);
                if (!lstErrores.Any())
                {
                    IAsignarPaqueteria.AsignarEntidadPaqueteria(entPedido, lstPaqueteria);
                    cMensajePedido = IGenerarMensaje.CrearMensajeDePedido(entPedido, dtFechaHoy, cFormatoMesaje, lstPaqueteria, ref lEntregado);
                    if (lEntregado)
                    {
                        Console.ForegroundColor = ConsoleColor.Green;
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Yellow;
                    }
                    Console.WriteLine(cMensajePedido + "\n");
                }
                else
                {
                    foreach (string cError in lstErrores)
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine(cError + "\n");
                    }
                }
            }
            Console.ReadLine();
        }
コード例 #13
0
        public void RastrearPedidos()
        {
            string              cRutaPedidos  = @"..\..\Pedidos.txt";
            string              cEstadoPedido = string.Empty;
            string              cRangoTiempo  = string.Empty;
            string              cCosto        = string.Empty;
            string              cRespuesta    = string.Empty;
            List <IEmpresa>     lstEmpresas;
            List <IMetodoEnvio> lstMetodosEnvio;
            IEmpresa            empresaPedido;
            IPresentadorDatos   presentador = new Presentadores.PresentadorDatos();
            DateTime            dtActual    = DateTime.Now;

            try
            {
                #region [Instancias de clases]

                CreadorEmpresas            creadorEmpresas          = new CreadorEmpresas();
                CreadorMetodosEnvio        creadorMetodosEnvio      = new CreadorMetodosEnvio();
                CreadorRangosTiempo        creadorRangosTiempo      = new CreadorRangosTiempo();
                CreadorValidaciones        credorValidaciones       = new CreadorValidaciones();
                IConvertidorPedido         convertidorPedido        = new ConvertidorPedido();
                ILectorArchivo             lectorArchivo            = new LectorArchivoTexto(convertidorPedido);
                CreadorValidaciones        validaciones             = new CreadorValidaciones();
                ContextColor               contextColor             = new ContextColor();
                IVerificadorEstadoPaquete  verificadorEstadoPaquete = new VerificadorEstadoPaquete(dtActual);
                IVerificadorCostoEconomico verificadorEconomico     = new VerificadorEconomicoMismoMedio();

                #endregion

                IRangoTiempo     rangoTiempo     = creadorRangosTiempo.ConfigurarRangosTiempo();
                IValidadorPedido validadorPedido = validaciones.CrearCadenaValidaciones();
                List <PedidoDTO> lstPedidos      = lectorArchivo.LeerArchivoAListaPedidos(cRutaPedidos);
                lstMetodosEnvio = creadorMetodosEnvio.CrearMetodoEnvio();
                lstEmpresas     = creadorEmpresas.GenerarEmpresas(lstMetodosEnvio);

                foreach (var pedido in lstPedidos)
                {
                    cRespuesta = validadorPedido.RealizarValidacion(new List <PedidoDTO> {
                        pedido
                    }, lstEmpresas);
                    if (string.IsNullOrWhiteSpace(cRespuesta))
                    {
                        empresaPedido = lstEmpresas.Where(e => e.empresaDTO.cNombre.ToLower() == pedido.cPaqueteria.ToLower().Trim()).FirstOrDefault();
                        cEstadoPedido = empresaPedido.ObtenerEstadoPaquete(pedido, verificadorEstadoPaquete);
                        cRangoTiempo  = empresaPedido.CalcularRangoTiempo(pedido, dtActual, rangoTiempo);
                        cCosto        = empresaPedido.ObtenerCosto(pedido.dDistancia, verificadorEstadoPaquete);

                        AplicarColorPorPedido(verificadorEstadoPaquete.VerificarPaqueteEntregado(), contextColor);
                        cRespuesta = $"{cEstadoPedido} {cRangoTiempo} {cCosto} (cualquier reclamación con {empresaPedido.empresaDTO.cNombre}).";

                        string cOpcionEconomica = verificadorEconomico.ObtenerOpcionMasEconomica(empresaPedido, lstEmpresas, pedido.dDistancia);
                        if (!string.IsNullOrWhiteSpace(cOpcionEconomica))
                        {
                            cRespuesta += $"\n*{cOpcionEconomica}";
                        }
                    }
                    else
                    {
                        AplicarColorValidacion(contextColor);
                    }

                    presentador.MostrarDatos(cRespuesta);
                }
            }
            catch (Exception excepcion)
            {
                presentador.MostrarDatos(excepcion.Message.Trim());
            }
        }