static void Main(string[] args)
        {
            lEnvios terrestre = new Terrestre();
            lEnvios aereo     = new Aereo();
            lEnvios tren      = new Tren();
            lEnvios barco     = new Barco();

            lEmpresas fedex    = new FEDEXSerice(barco);
            lEmpresas dhl      = new DHL(aereo);
            lEmpresas dhlBarco = new DHL(barco);
            lEmpresas estafeta = new Estafeta(tren);

            fedex.RecogerPedido();
            fedex.EnviarPedido();
            fedex.EntregarPedido();

            Console.WriteLine("\n");

            dhl.RecogerPedido();
            dhl.EnviarPedido();
            dhl.EntregarPedido();

            Console.WriteLine("\n");

            dhlBarco.RecogerPedido();
            dhlBarco.EnviarPedido();
            dhlBarco.EntregarPedido();

            Console.WriteLine("\n");

            estafeta.RecogerPedido();
            estafeta.EnviarPedido();
            estafeta.EntregarPedido();


            Console.ReadLine();
        }
Ejemplo n.º 2
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();
        }