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) ); }
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) ); }
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) ); }
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) ); }
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);