public lEnvios buscarTransporte(JToken _TransporteSolicitado) { lEnvios Transporte = null; string cMedio = (string)_TransporteSolicitado["Medio"]; int cVelocidad = (int)_TransporteSolicitado["Velocidad"]; int cCostoPorKilometro = (int)_TransporteSolicitado["CostoPorKilometro"]; if (cMedio == "Marítimo") { Transporte = new Maritimo() { cNombre = "Maritimo" }; } else if (cMedio == "Terrestre") { Transporte = new Terrestre() { cNombre = "Terrestre" }; } else { Transporte = new Aereo() { cNombre = "Aereo" }; } Transporte.dCostoEnvio = cCostoPorKilometro; Transporte.dVelocidadEntrega = cVelocidad; return(Transporte); }
public State(Pedido PedidoState, string _cOrigen, string _cDestino, decimal _dDistancia, lEmpresas _cPaqueteria, lEnvios _cMedioTransporte, DateTime _dtFechaHora) { this.state = PedidoState; cOrigen = _cOrigen; cDestino = _cDestino; dDistancia = _dDistancia; cPaqueteria = _cPaqueteria; cMedioTransporte = _cMedioTransporte; dtFechaHora = _dtFechaHora; state.setContext(this); }
public void AsignarTransporte_EnviarListaDeTransporteQueContengaTransporteSolicitado_TransporteSolicitadoAsignado() { //Arrange AsignarDatosEnvio asignarDatosEnvio = new AsignarDatosEnvio(); lEnvios aereo = new Avion() { dVelocidadEntrega = 600, dCostoEnvio = 10, cNombre = "Avion" }; lEnvios barco = new Barco() { dVelocidadEntrega = 46, dCostoEnvio = 1, cNombre = "Barco" }; List <lEnvios> lstEmpresas = new List <lEnvios>() { aereo, barco }; lEnvios transporte = null; //Act asignarDatosEnvio.AsignarTransporte("Avion", ref transporte, lstEmpresas); //Assert Assert.AreNotEqual(null, transporte); }
public void AsignarTransporte(string _cTransporteSolicitada, ref lEnvios _Transporte, List <lEnvios> _lstTransportes) { _cTransporteSolicitada = RemoveDiacritics(_cTransporteSolicitada); _Transporte = _lstTransportes.Where(s => s.cNombre == _cTransporteSolicitada).FirstOrDefault(); }
static void Main(string[] args) { lBuscarMejorOpcion buscarMejorOpcion = new BuscarMejorOpcion(); lAsignarDatosEnvio lasignarDatosEnvio = new AsignarDatosEnvio(); Context context = new Context(); lConvertirTipoDato convertirTipoDato = new CovertirTipoDatoService(); double dTiempoTraslado = 0; decimal TiempoTraslado = 0; decimal dCostoEnvio = 0; string cExpresion1 = ""; string cExpresion2 = ""; string cExpresion3 = ""; string cExpresion4 = ""; string cExpresion5 = ""; DateTime dtFechaEntrega = new DateTime(); DateTime dtHoy = DateTime.Now; lLeerArchivoTexto Lector = new LeerArchivoTexto(); lEmpresas empresa = null; lEnvios transporte = null; lEnvios aereo = new Avion() { dVelocidadEntrega = 600, dCostoEnvio = 10, cNombre = "Avion" }; lEnvios tren = new Tren() { dVelocidadEntrega = 80, dCostoEnvio = 5, cNombre = "Tren" }; lEnvios barco = new Barco() { dVelocidadEntrega = 46, dCostoEnvio = 1, cNombre = "Barco" }; lEnvios bici = new Bici() { dVelocidadEntrega = 1, dCostoEnvio = 3, cNombre = "Bici" }; lEmpresas fedex = new Estafeta(new List <lEnvios>() { barco }, 50, "Fedex"); lEmpresas dhl = new DHL(new List <lEnvios>() { aereo, barco }, 40, "DHL"); lEmpresas estafeta = new Estafeta(new List <lEnvios>() { tren }, 20, "Estafeta"); lEmpresas upc = new UPC(new List <lEnvios>() { bici }, 50, "UPC"); List <lEmpresas> lstEmpresas = new List <lEmpresas>() { fedex, dhl, estafeta, upc }; List <lEnvios> lstTransportes = new List <lEnvios>() { aereo, tren, barco, bici }; List <string> lines = Lector.LeerArchivo("Pedidos.txt"); foreach (string line in lines) { string[] cInformacion = line.Split(','); lasignarDatosEnvio.AsignarEmpresa(cInformacion[3], ref empresa, lstEmpresas); lasignarDatosEnvio.AsignarTransporte(cInformacion[4], ref transporte, lstTransportes); if (empresa != null) { Pedido initialState = new DesactivarState(); State.State entPedido = new State.State(initialState, cInformacion[0], cInformacion[1], convertirTipoDato.ConvertirStringADecimal(cInformacion[2]), empresa, transporte, Convert.ToDateTime(cInformacion[5])); initialState.setContext(entPedido); TiempoTraslado = empresa.TiempoTraslado(entPedido); if (TiempoTraslado > 0) { dTiempoTraslado = convertirTipoDato.ConvertirDecimalADouble(TiempoTraslado); dtFechaEntrega = empresa.FechaEntrega(dTiempoTraslado, entPedido); dCostoEnvio = empresa.CostoEnvio(entPedido); Console.WriteLine(buscarMejorOpcion.ObtenerMejorOpcion(lstEmpresas, empresa, entPedido, dCostoEnvio)); Expresion1 expresion1 = new Expresion1(); context.setStrategy(expresion1); cExpresion1 = context.ValidarFechaEntrega(dtFechaEntrega, dtHoy, entPedido); Expresion2 expresion2 = new Expresion2(); context.setStrategy(expresion2); cExpresion2 = context.ValidarFechaEntrega(dtFechaEntrega, dtHoy, entPedido); Expresion3 expresion3 = new Expresion3(); context.setStrategy(expresion3); cExpresion3 = context.ValidarFechaEntrega(dtFechaEntrega, dtHoy, entPedido); Expresion4 expresion4 = new Expresion4(); context.setStrategy(expresion4); cExpresion4 = context.ValidarFechaEntrega(dtFechaEntrega, dtHoy, entPedido); Expresion5 expresion5 = new Expresion5(); context.setStrategy(expresion5); cExpresion5 = context.ValidarFechaEntrega(dtFechaEntrega, dtHoy, entPedido); if (entPedido.state.ToString() == "State.ActivarState") { System.Console.ForegroundColor = ConsoleColor.Green; } else { System.Console.ForegroundColor = ConsoleColor.Yellow; } Console.WriteLine($"Tu paquete {cExpresion1} de {entPedido.cOrigen} y {cExpresion2} a {entPedido.cDestino} {cExpresion3} {cExpresion5} y {cExpresion4} un costo de {dCostoEnvio} (Cualquier reclamación con {cInformacion[3]})."); } } Console.WriteLine(); } Console.ReadLine(); }
public FEDEXSerice(lEnvios _envio) { envios = _envio; }
public DHL(lEnvios _envio) { envios = _envio; }
public Estafeta(lEnvios _envio) { envios = _envio; }
public void PresentadorInformacion(string _cLine) { lGuardarRegistro Save = new GuardarRegistro(); lInicializarTrasporteEmpresas srvInitDatos = new InicializarDatos(); lObtenerFecha lobtenerFecha = new ObtenerFecha("27/01/2020"); string[] _lstInformacion = _cLine.Split(','); lPresentadorTexto presentadorTexto = new PresentadorTexto(); lBuscarMejorOpcion buscarMejorOpcion = new BuscarMejorOpcion(); lAsignarDatosEnvio lasignarDatosEnvio = new AsignarDatosEnvio(); Context context = new Context(); lConvertirTipoDato convertirTipoDato = new CovertirTipoDatoService(); double dTiempoTraslado = 0; decimal TiempoTraslado = 0; decimal dCostoEnvio = 0; string cExpresion1 = ""; string cExpresion2 = ""; string cExpresion3 = ""; string cExpresion4 = ""; string cExpresion5 = ""; DateTime dtFechaEntrega = new DateTime(); DateTime dtHoy = lobtenerFecha.ObtenerFechaActual(); lEmpresas empresa = null; lEnvios transporte = null; EjecutarEstrategia ejecutarEstrategia = new EjecutarEstrategia(); List <lEmpresas> lstEmpresas = new List <lEmpresas>(); List <lEnvios> lstTransportes = new List <lEnvios>(); srvInitDatos.inicializarDatos(ref lstTransportes, ref lstEmpresas); lasignarDatosEnvio.AsignarEmpresa(_lstInformacion[3], ref empresa, lstEmpresas); lasignarDatosEnvio.AsignarTransporte(_lstInformacion[4], ref transporte, lstTransportes); if (empresa != null) { Pedido initialState = new DesactivarState(); State.State entPedido = new State.State(initialState, _lstInformacion[0], _lstInformacion[1], convertirTipoDato.ConvertirStringADecimal(_lstInformacion[2]), empresa, transporte, Convert.ToDateTime(_lstInformacion[5])); initialState.setContext(entPedido); TiempoTraslado = empresa.TiempoTraslado(entPedido); if (TiempoTraslado > 0) { dTiempoTraslado = convertirTipoDato.ConvertirDecimalADouble(TiempoTraslado); dtFechaEntrega = empresa.FechaEntrega(dTiempoTraslado, entPedido); dCostoEnvio = empresa.CostoEnvio(entPedido); string[] lstExpresiones = { cExpresion1, cExpresion2, cExpresion3, cExpresion4, cExpresion5 }; ejecutarEstrategia.Ejecutar(ref lstExpresiones, context, dtFechaEntrega, dtHoy, entPedido); if (entPedido.state.ToString() == "State.ActivarState") { presentadorTexto.CambiarEstiloTexto(ConsoleColor.Green); } else { presentadorTexto.CambiarEstiloTexto(ConsoleColor.Yellow); } string cResultado = $"Tu paquete {lstExpresiones[0]} de {entPedido.cOrigen} y {lstExpresiones[1]} a {entPedido.cDestino} {lstExpresiones[2]} {lstExpresiones[4]} y {lstExpresiones[3]} un costo de {dCostoEnvio} (Cualquier reclamación con {_lstInformacion[3]})."; Console.WriteLine(cResultado); Save.guardarRegistro(lstExpresiones, cResultado, empresa.cNombre); presentadorTexto.CambiarEstiloTexto(ConsoleColor.Blue); Console.WriteLine(buscarMejorOpcion.ObtenerMejorOpcion(lstEmpresas, empresa, entPedido, dCostoEnvio)); } else { presentadorTexto.CambiarEstiloTexto(ConsoleColor.Red); Console.WriteLine($"{_lstInformacion[3]} no ofrece el servicio de transporte {entPedido.cMedioTransporte.cNombre}, te recomendamos cotizaren otra empresa."); } } else { presentadorTexto.CambiarEstiloTexto(ConsoleColor.Red); Console.WriteLine($"La Paquetería: {_lstInformacion[3]} no se encuentra registrada en nuestra red de distribución."); } }