Ejemplo n.º 1
0
        public void ObtenerEstatusPedidos_EstafetaTerrestre80_Costo1160Fecha2301202013()
        {
            //Arrange
            PaqueteriaFactory factory = new PaqueteriaFactory(new MedioTransporteFactory());

            IPaqueteria[] paqueterias = { factory.Create(PaqueteriaEnum.Fedex), factory.Create(PaqueteriaEnum.Dhl), factory.Create(PaqueteriaEnum.Estafeta) };

            List <PedidoDTO> lstPedidos = new List <PedidoDTO>()
            {
                new PedidoDTO()
                {
                    Distancia       = 80,
                    Paqueteria      = "Estafeta",
                    MedioTransporte = "Terrestre",
                    FechaPedido     = new DateTime(2020, 1, 23, 12, 0, 0),
                    CiudadOrigen    = "Ticul",
                    PaisOrigen      = "México",
                    CiudadDestino   = "Motul",
                    PaisDestino     = "México"
                }
            };
            List <EstadoPedidoDTO> lstEstados = new List <EstadoPedidoDTO>()
            {
                new EstadoPedidoDTO()
                {
                    Color = "Green", Linea = 1, Mensaje = "Tu paquete salió de Ticul, México y llegó a Motul, México hace 35 Minutos y tuvo un costo de $1,160.00 (Cualquier reclamación con ESTAFETA)."
                },
                new EstadoPedidoDTO()
                {
                    Color = "Gray", Linea = 1, Mensaje = "Si hubieras pedido en Fedex te hubiera costado $120.00 menos."
                }
            };
            var SUT = new AdministradorPedidos(lstPedidos, paqueterias, new TextoFormateadorFactory());
            //ACT
            var textoFormateado = SUT.ObtenerEstatusPedidos(new DateTime(2020, 1, 23, 14, 0, 0));

            //Assert

            Assert.IsTrue(
                lstEstados[0].Mensaje.Equals(textoFormateado[0].Mensaje) &&
                lstEstados[0].Color.Equals(textoFormateado[0].Color) &&
                lstEstados[1].Mensaje.Equals(textoFormateado[1].Mensaje) &&
                lstEstados[1].Color.Equals(textoFormateado[1].Color)
                );
        }
Ejemplo n.º 2
0
        public void ObtenerEstatusPedidos_DhlAereo446400_Costo6000Fecha2301202013()
        {
            //Arrange
            PaqueteriaFactory factory = new PaqueteriaFactory(new MedioTransporteFactory());

            IPaqueteria[] paqueterias = { factory.Create(PaqueteriaEnum.Fedex), factory.Create(PaqueteriaEnum.Dhl), factory.Create(PaqueteriaEnum.Estafeta) };

            List <PedidoDTO> lstPedidos = new List <PedidoDTO>()
            {
                new PedidoDTO()
                {
                    Distancia       = 400,
                    Paqueteria      = "Dhl",
                    MedioTransporte = "Aereo",
                    FechaPedido     = new DateTime(2020, 1, 23, 13, 50, 0),
                    CiudadOrigen    = "Mérida",
                    PaisOrigen      = "México",
                    CiudadDestino   = "Cozumel",
                    PaisDestino     = "México"
                }
            };
            List <EstadoPedidoDTO> lstEstados = new List <EstadoPedidoDTO>()
            {
                new EstadoPedidoDTO()
                {
                    Color = "Yellow", Linea = 1, Mensaje = "Tu paquete ha salido de Mérida, México y llegará a Cozumel, México dentro de 3 Horas y tendrá un costo de $6,000.00‬ (Cualquier reclamación con DHL)."
                },
                new EstadoPedidoDTO()
                {
                    Color = "Gray", Linea = 1, Mensaje = "Si hubieras pedido en Fedex te hubiera costado $800.00 menos."
                }
            };
            var SUT = new AdministradorPedidos(lstPedidos, paqueterias, new TextoFormateadorFactory());
            //ACT
            var textoFormateado = SUT.ObtenerEstatusPedidos(new DateTime(2020, 1, 23, 14, 0, 0));

            //Assert
            Assert.IsTrue(

                lstEstados[1].Mensaje.Equals(textoFormateado[1].Mensaje) &&
                lstEstados[1].Color.Equals(textoFormateado[1].Color)
                );
        }
Ejemplo n.º 3
0
        public void ObtenerEstatusPedidos_PaqueteriaNoExiste_ExcepcionTipoPaqueteriaException()
        {
            //Arrange
            PaqueteriaFactory factory = new PaqueteriaFactory(new MedioTransporteFactory());

            IPaqueteria[] paqueterias = { factory.Create(PaqueteriaEnum.Fedex), factory.Create(PaqueteriaEnum.Dhl), factory.Create(PaqueteriaEnum.Estafeta) };

            List <PedidoDTO> lstPedidos = new List <PedidoDTO>()
            {
                new PedidoDTO()
                {
                    Distancia       = 80,
                    Paqueteria      = "Alf",
                    MedioTransporte = "Terrestre",
                    FechaPedido     = new DateTime(2020, 1, 23, 12, 0, 0),
                    CiudadOrigen    = "Ticul",
                    PaisOrigen      = "México",
                    CiudadDestino   = "Motul",
                    PaisDestino     = "México"
                }
            };
            List <EstadoPedidoDTO> lstEstados = new List <EstadoPedidoDTO>()
            {
                new EstadoPedidoDTO()
                {
                    Color = "Red", Linea = 1, Mensaje = "La paqueteria: Alf no se encuentra registrada en nuestra red de distribución."
                }
            };
            var SUT = new AdministradorPedidos(lstPedidos, paqueterias, new TextoFormateadorFactory());
            //ACT
            var textoFormateado = SUT.ObtenerEstatusPedidos(new DateTime(2020, 1, 23, 14, 0, 0));

            //Assert
            Assert.IsTrue(
                lstEstados[0].Mensaje.Equals(textoFormateado[0].Mensaje) &&
                lstEstados[0].Color.Equals(textoFormateado[0].Color)
                );
        }
Ejemplo n.º 4
0
        public void ObtenerEstatusPedidos_MedioTransporteNoExiste_ExcepcionTipoMedioTransporteException()
        {
            //Arrange
            PaqueteriaFactory factory = new PaqueteriaFactory(new MedioTransporteFactory());

            IPaqueteria[] paqueterias = { factory.Create(PaqueteriaEnum.Fedex), factory.Create(PaqueteriaEnum.Dhl), factory.Create(PaqueteriaEnum.Estafeta) };

            List <PedidoDTO> lstPedidos = new List <PedidoDTO>()
            {
                new PedidoDTO()
                {
                    Distancia       = 80,
                    Paqueteria      = "Estafeta",
                    MedioTransporte = "Avion",
                    FechaPedido     = new DateTime(2020, 1, 23, 12, 0, 0),
                    CiudadOrigen    = "Ticul",
                    PaisOrigen      = "México",
                    CiudadDestino   = "Motul",
                    PaisDestino     = "México"
                }
            };
            List <EstadoPedidoDTO> lstEstados = new List <EstadoPedidoDTO>()
            {
                new EstadoPedidoDTO()
                {
                    Color = "Red", Linea = 1, Mensaje = "Estafeta no ofrece el servicio de transporte Avion, te recomendamos cotizar en otra empresa."
                }
            };
            var SUT = new AdministradorPedidos(lstPedidos, paqueterias, new TextoFormateadorFactory());
            //ACT
            var textoFormateado = SUT.ObtenerEstatusPedidos(new DateTime(2020, 1, 23, 14, 0, 0));

            //Assert
            Assert.IsTrue(
                lstEstados[0].Mensaje.Equals(textoFormateado[0].Mensaje) &&
                lstEstados[0].Color.Equals(textoFormateado[0].Color)
                );
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            try
            {
                TemporadasMediosDTO temporadasDTO  = new TemporadasMediosDTO();
                PeriodosDTO         periodosDTO    = new PeriodosDTO();
                PaqueteriasDTO      paqueteriasDTO = new PaqueteriasDTO();

                RegisterServices();
                try
                {   // Open the text file using a stream reader.
                    using (StreamReader sr = new StreamReader("Config.json"))
                    {
                        // Read the stream to a string, and write the string to the console.
                        string line = sr.ReadToEnd();
                        var    Json = JsonConvert.DeserializeObject(line);
                        IEnumerable <object> collection = (IEnumerable <object>)Json;
                        var lst = collection.ToList();
                        temporadasDTO  = JsonConvert.DeserializeObject <TemporadasMediosDTO>(lst[0].ToString());
                        periodosDTO    = JsonConvert.DeserializeObject <PeriodosDTO>(lst[1].ToString());
                        paqueteriasDTO = JsonConvert.DeserializeObject <PaqueteriasDTO>(lst[2].ToString());
                    }
                    var medioTransporteFactory = new MedioTransporteFactory(temporadasDTO.MediosTransporte, temporadasDTO.Temporadas);
                    var paqueteriaFactory      = new PaqueteriaFactory(medioTransporteFactory, paqueteriasDTO);
                    var lstPaqueterias         = new List <IPaqueteria>();
                    foreach (var paqueteriaDTO in paqueteriasDTO.Paqueterias)
                    {
                        lstPaqueterias.Add(paqueteriaFactory.Create(paqueteriaDTO.Paqueteria));
                    }
                    var tipoArchivo          = args[1];
                    var extensionArchivo     = tipoArchivo.ToLower();
                    var factoryLectorArchivo = new LectorArchivoFactory();



                    var lectorArchivo = factoryLectorArchivo.Create(tipoArchivo);
                    var lstPedidos    = lectorArchivo.LeerArchivo("pedidos." + extensionArchivo, "");

                    AdministradorPedidos administrador = new AdministradorPedidos(lstPedidos, lstPaqueterias.ToArray(), new TextoFormateadorFactory());

                    var lstObtenerEstadosPedido = administrador.ObtenerEstatusPedidos(DateTime.Now);

                    ////Pinta el resultado
                    foreach (var item in lstObtenerEstadosPedido)
                    {
                        Console.ForegroundColor = (ConsoleColor)System.Enum.Parse(typeof(ConsoleColor), item.Color);
                        Console.WriteLine(item.Mensaje + "\n");
                    }

                    //Crea archivos
                    var paqueteriasConPedido = lstObtenerEstadosPedido.Select(d => d.Paqueteria).Distinct();
                    foreach (var item in paqueteriasConPedido)
                    {
                        var pathEntregados = item + @"\Entregados";
                        var pathPendientes = item + @"\Pendientes";
                        if (!Directory.Exists(item))
                        {
                            Directory.CreateDirectory(item);
                            Directory.CreateDirectory(pathEntregados);
                            Directory.CreateDirectory(pathPendientes);
                        }

                        var entregados = (from salida in lstObtenerEstadosPedido
                                          where salida.Paqueteria.Equals(item) && salida.Estado.Equals("Entregado")
                                          group salida by salida.Clasificador into newGroup
                                          select new
                        {
                            Key = newGroup.Key,
                            Values = string.Join('\n', newGroup.Select(f => f.Mensaje))
                        }).ToList();

                        var pendientes = (from salida in lstObtenerEstadosPedido
                                          where salida.Paqueteria.Equals(item) && salida.Estado.Equals("Pendiente")
                                          group salida by salida.Clasificador into newGroup
                                          select new
                        {
                            Key = newGroup.Key,
                            Values = string.Join('\n', newGroup.Select(f => f.Mensaje))
                        }).ToList();



                        foreach (var grupo in entregados)
                        {
                            File.WriteAllText(pathEntregados + @$ "\{grupo.Key}.txt", grupo.Values);
                        }
                        foreach (var grupo in pendientes)
                        {
                            File.WriteAllText(pathPendientes + @$ "\{grupo.Key}.txt", grupo.Values);