Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 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);
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public void AsignarTransporte(string _cTransporteSolicitada, ref lEnvios _Transporte, List <lEnvios> _lstTransportes)
 {
     _cTransporteSolicitada = RemoveDiacritics(_cTransporteSolicitada);
     _Transporte            = _lstTransportes.Where(s => s.cNombre == _cTransporteSolicitada).FirstOrDefault();
 }
Esempio n. 5
0
        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;
 }
Esempio n. 7
0
 public DHL(lEnvios _envio)
 {
     envios = _envio;
 }
 public Estafeta(lEnvios _envio)
 {
     envios = _envio;
 }
Esempio n. 9
0
        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.");
            }
        }