Exemplo n.º 1
0
        public void ObtenerMejorOpcion_EnviarCostoDeEnvioAlto_MensajeConDiferenciaDePrecio()
        {
            //Arrange
            string  cResultado = "";
            lEnvios aereo      = new Aereo()
            {
                dVelocidadEntrega = 600, dCostoEnvio = 10, cNombre = "Avion"
            };
            lEnvios barco = new Maritimo()
            {
                dVelocidadEntrega = 46, dCostoEnvio = 1, cNombre = "Barco"
            };
            lEmpresas fedex = new Estafeta(new List <lEnvios>()
            {
                barco
            }, 50, "Fedex");
            lEmpresas dhl = new DHL(new List <lEnvios>()
            {
                aereo, barco
            }, 40, "DHL");
            List <lEmpresas> lstEmpresas = new List <lEmpresas>()
            {
                fedex, dhl
            };
            BuscarMejorOpcion buscarMejorOpcion = new BuscarMejorOpcion();
            DateTime          dtHoy             = Convert.ToDateTime("27-01-2020 12:00:00");
            DateTime          dtEntrega         = Convert.ToDateTime("28-01-2020 12:00:00");

            State.State entPedido = new State.State(new DesactivarState(), "México", "USA", 2500, fedex, barco, dtHoy);
            //Act
            cResultado = buscarMejorOpcion.ObtenerMejorOpcion(lstEmpresas, dhl, entPedido, 5000);
            //Assert
            Assert.AreEqual("Si hubieras pedido en Fedex te hubiera costado 1250.0 mas barato", cResultado);
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
0
        public void AsignarEmpresa_EnviarListaDeEmpresasQueNoContengaEmpresaSolicitada_EmpresaSolicitadaNoAsignada()
        {
            //Arrange
            AsignarDatosEnvio asignarDatosEnvio = new AsignarDatosEnvio();
            lEnvios           aereo             = new Aereo()
            {
                dVelocidadEntrega = 600, dCostoEnvio = 10, cNombre = "Avion"
            };
            lEnvios barco = new Maritimo()
            {
                dVelocidadEntrega = 46, dCostoEnvio = 1, cNombre = "Barco"
            };
            lEmpresas fedex = new Estafeta(new List <lEnvios>()
            {
                barco
            }, 50, "Fedex");
            lEmpresas dhl = new DHL(new List <lEnvios>()
            {
                aereo, barco
            }, 40, "DHL");
            lEmpresas        empresa     = null;
            List <lEmpresas> lstEmpresas = new List <lEmpresas>()
            {
                fedex, dhl
            };

            //Act
            asignarDatosEnvio.AsignarEmpresa("Estafeta", ref empresa, lstEmpresas);
            //Assert
            Assert.AreEqual(null, empresa);
        }
        public IMedioTransporte Create(string _medioTransporte)
        {
            var dto = lstMediosTransporteDTO.FirstOrDefault(f => f.Medio == _medioTransporte);
            var _nombreMedioTransporteEnum = (MedioTransporteEnum)System.Enum.Parse(typeof(MedioTransporteEnum), dto.Medio);

            IMedioTransporte factory;

            switch (_nombreMedioTransporteEnum)
            {
            case MedioTransporteEnum.Terrestre:
                factory = new Terrestre(dto.CostoPorKilometro, new TerrestreAjusteTiempo(lstTemporadas, dto.RetrasoPorDiaPorTemporada.TiemposRetraso), dto.Medio, dto.Velocidad);
                break;

            case MedioTransporteEnum.Marítimo:
                factory = new Maritimo(dto.CostoPorKilometro, new MaritimoAjusteCosto(lstTemporadas, dto.CostoAdicionalPorTemporada.Variaciones), new MaritimoAjusteTiempo(lstTemporadas, dto.VelocidadPorTemporada.Variaciones), dto.Medio, dto.Velocidad);
                break;

            case MedioTransporteEnum.Aéreo:
                factory = new Aereo(dto.CostoPorKilometro, dto.Medio, dto.Velocidad);
                break;

            default:
                throw new NotImplementedException($"No existe una implementación para el medio de transporte {_nombreMedioTransporteEnum.ToString()}.");
            }
            return(factory);
        }
Exemplo n.º 5
0
        public void ObtenerFechaEnvio_General_FechaEnviada()
        {
            IFormatProvider culture    = new CultureInfo("ES-MX", true);
            DateTime        FechaEnvio = DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture);
            var             Sut        = new Aereo(4000, FechaEnvio, configuraciones);
            DateTime        Resultado  = Sut.ObtenerFechaEnvio();

            Assert.AreEqual(FechaEnvio, Resultado);
        }
Exemplo n.º 6
0
        public void ObtenerRecargo_CuatroMil_Ochocientos()
        {
            IFormatProvider culture = new CultureInfo("ES-MX", true);
            var             Sut     = new Aereo(4000, DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture), configuraciones);

            decimal Resultado = Sut.ObtenerRecargo();

            Assert.AreEqual(800, Resultado);
        }
Exemplo n.º 7
0
        void ObtenerTiempoEntregaMinutos_CuatroMil_Cero()
        {
            IFormatProvider culture = new CultureInfo("ES-MX", true);
            var             Sut     = new Aereo(4000, DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture), configuraciones);

            decimal Resultado = Sut.ObtenerTiempoEntregaMinutos();

            Assert.AreEqual(0, Resultado);
        }
Exemplo n.º 8
0
        public void ObtenerVelocidad_Seiscientos_Seiscientos()
        {
            IFormatProvider culture = new CultureInfo("ES-MX", true);
            var             Sut     = new Aereo(4000, DateTime.ParseExact("02/03/2020 12:00", "dd/MM/yyyy HH:mm", culture), configuraciones);

            decimal Resultado = Sut.ObtenerVelocidad();

            Assert.AreEqual(600, Resultado);
        }
Exemplo n.º 9
0
        public void ObtenerCostoEnvio_CuatroMil_CuarentaMilOchocientos()
        {
            IFormatProvider culture    = new CultureInfo("ES-MX", true);
            DateTime        FechaEnvio = DateTime.ParseExact("02/05/2020 12:00", "dd/MM/yyyy HH:mm", culture);

            var     Sut       = new Aereo(4000, FechaEnvio, configuraciones);
            decimal Resultado = Sut.ObtenerCostoEnvio();

            Assert.AreEqual(40800, Resultado);
        }
Exemplo n.º 10
0
        public void ObtieneCostoTransporte_22Febrero1200_12200()//Invierno
        {
            //Arrange
            ParametroCalculoMedioTransporteDTO param = new ParametroCalculoMedioTransporteDTO()
            {
                FechaCompra = new DateTime(2020, 2, 22), Distancia = 1200
            };
            List <RangoCosto> lstCostos = new List <RangoCosto>()
            {
                new RangoCosto(1m, null, 10m)
            };
            var SUT = new Aereo(lstCostos);
            //ACT
            var costo = SUT.ObtieneCostoTransporte(param);

            //Assert
            Assert.AreEqual(12200m, costo);
        }
Exemplo n.º 11
0
        public void CalculaCalculaTiempoTraslado_1Escala_6()
        {
            var           DOCcalculadorEscalas = new Mock <ICalculadorEscalas>();
            ParametrosDTO parametros           = new ParametrosDTO();
            DateTime      dtFechaPedido        = new DateTime(2020, 02, 22);
            double        dDistancia           = 1200;

            parametros.dtFechaPedido = dtFechaPedido;
            parametros.dDistacia     = dDistancia;
            DOCcalculadorEscalas.Setup(doc => doc.ObtenerEscalas(dDistancia)).Returns(1);

            var SUT = new Aereo(DOCcalculadorEscalas.Object);

            //ACT
            var regreso = SUT.CalculaTiempoTraslado(parametros);

            //ASSERT
            Assert.AreEqual(6, regreso);
        }
Exemplo n.º 12
0
        public void ObtieneCostoTransporte_10Octubre800_8000()//Otoño
        {
            //Arrange
            ParametroCalculoMedioTransporteDTO param = new ParametroCalculoMedioTransporteDTO()
            {
                FechaCompra = new DateTime(2020, 10, 10), Distancia = 800
            };
            List <RangoCosto> lstCostos = new List <RangoCosto>()
            {
                new RangoCosto(1m, null, 10m)
            };

            var SUT = new Aereo(lstCostos);
            //ACT
            var costo = SUT.ObtieneCostoTransporte(param);

            //Assert
            Assert.AreEqual(8000m, costo);
        }
        List <IEmpresa> ICrearInstanciaPaqueteriaFactory.CrearInstancia(string cClave)
        {
            List <IEmpresa>   empresa         = null;
            IMediosTransporte medioTransporte = null;

            switch (cClave)
            {
            case "MARITIMO":
                medioTransporte = new Maritimo(new CalculadorVelocidadMaritimo(new List <DTO.EstacionesDTO>(), new Estacion()), new CalculadorCostoEnvioMaritimo(new List <DTO.EstacionesDTO>(), new List <DTO.RangosDTO>(), new Estacion()));
                empresa         = new List <IEmpresa>();
                ParametrosDTO parametros = new ParametrosDTO();
                empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(), new List <TiempoRepartoDTO>(), new ParametrosDTO()));
                empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(), new List <TiempoRepartoDTO>(), new ParametrosDTO()));
                empresa.Add(new Estafeta(medioTransporte, new CalculadorMargenUtilidadCostoEstafeta(new List <RangosMargenDTO>()), new List <TiempoRepartoDTO>(), new ParametrosDTO()));
                break;

            case "TERRESTRE":
                medioTransporte = new Terrestre(new CalculadorCostoEnvioTerrestre(new List <RangosDTO>()), new CalculadorTiempoTrasladoTerrestre(new Estacion(), new List <EstacionesDTO>()));
                empresa         = new List <IEmpresa>();

                empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(), new List <TiempoRepartoDTO>(), new ParametrosDTO()));
                empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(), new List <TiempoRepartoDTO>(), new ParametrosDTO()));
                empresa.Add(new Estafeta(medioTransporte, new CalculadorMargenUtilidadCostoEstafeta(new List <RangosMargenDTO>()), new List <TiempoRepartoDTO>(), new ParametrosDTO()));
                break;

            case "AEREO":
                medioTransporte = new Aereo(new CalculadorEscalas());
                empresa         = new List <IEmpresa>();
                empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(), new List <TiempoRepartoDTO>(), new ParametrosDTO()));
                empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(), new List <TiempoRepartoDTO>(), new ParametrosDTO()));
                break;
                //default:
                //    empresa.Add(new Fedex(null, new CalculadorMargenUtilidadCostoFedex(), new List<TiempoRepartoDTO>(), new ParametrosDTO()));
                //    empresa.Add(new DHL(null, new CalculadorMargenUtilidadCostoDHL(), new List<TiempoRepartoDTO>(), new ParametrosDTO()));
                //    empresa.Add(new Estafeta(null, new CalculadorMargenUtilidadCostoEstafeta(new List<RangosMargenDTO>()), new List<TiempoRepartoDTO>(), new ParametrosDTO()));
                //    break;
            }
            return(empresa);
        }
Exemplo n.º 14
0
        public void AsignarTransporte_EnviarListaDeTransporteQueContengaTransporteSolicitado_TransporteSolicitadoAsignado()
        {
            //Arrange
            AsignarDatosEnvio asignarDatosEnvio = new AsignarDatosEnvio();
            lEnvios           aereo             = new Aereo()
            {
                dVelocidadEntrega = 600, dCostoEnvio = 10, cNombre = "Avion"
            };
            lEnvios barco = new Maritimo()
            {
                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);
        }
Exemplo n.º 15
0
        public void Ejecutar_EnviarFechaEntregaMayorSemanasAFechaHoy_SemanasFaltantes()
        {
            //Arrange
            string     cResultado = "";
            Expresion5 expresion5 = new Expresion5();
            lEnvios    Aereo      = new Aereo()
            {
                dVelocidadEntrega = 800, dCostoEnvio = 1
            };
            lEmpresas dhl = new DHL(new List <lEnvios>()
            {
                Aereo
            }, 10, "DHL");
            DateTime dtHoy     = Convert.ToDateTime("15-02-2020 08:00:00");
            DateTime dtEntrega = Convert.ToDateTime("06-03-2020 12:00:00");

            State.State entPedido = new State.State(new DesactivarState(), "China", "Cancún", 446400, dhl, Aereo, dtHoy);
            //Act
            cResultado = expresion5.Ejecutar(dtEntrega, dtHoy, entPedido);

            //Assert
            Assert.AreEqual("3 Semanas", cResultado);
        }
Exemplo n.º 16
0
        private void btnCaricamentoDati_Click_1(object sender, RoutedEventArgs e)
        {
            // Creo 5 aerei e li metto in una lista di Aerei
            // Utilizzo un generics, in modo da creare una collezione
            // che contegga oggetti omogenei
            Aereo AE1, AE2, AE3, AE4, AE5;

            AE1 = new Aereo("BOEING", "747", 400, 300, 6, "Motore", true, 900, 1000, "ALITALIA", "BO1ALI");
            AE2 = new Aereo("AIRBUS", "A320", 350, 350, 6, "Motore", true, 1000, 1100, "LUFTHANSA", "AI20LU");
            AE3 = new Aereo("AIRBUS", "A330", 500, 400, 6, "Motore", true, 1100, 1100, "KLM", "KL15AI");
            AE4 = new Aereo("BOEING", "747", 400, 300, 6, "Motore", true, 900, 1000, "KLM", "KL747BO");
            AE5 = new Aereo("BOEING", "737", 300, 300, 4, "Motore", false, 700, 800, "AMERICAN AIRLINES", "BO737AA");
            ListaAerei.Add(AE1);
            ListaAerei.Add(AE2);
            ListaAerei.Add(AE3);
            ListaAerei.Add(AE4);
            ListaAerei.Add(AE5);


            // Creo 5 persone e le metto in una lista di Persona
            // Utilizzo un generics, in modo da creare una collezione
            // che contegga oggetti omogenei

            Persona P1, P2, P3, P4, P5;

            P1 = new Persona("Mario", "Rossi", "Italia", new DateTime(2000, 10, 10), Enumerazioni.Sesso.Maschio, Enumerazioni.TipoDocumento.Passaporto, "AAAA12345", "P01");
            P2 = new Persona("Giuseppe", "Verdi", "Italia", new DateTime(1950, 4, 11), Enumerazioni.Sesso.Maschio, Enumerazioni.TipoDocumento.Passaporto, "AAAA22345", "P02");
            P3 = new Persona("Luigi", "Neri", "Italia", new DateTime(1980, 5, 5), Enumerazioni.Sesso.Maschio, Enumerazioni.TipoDocumento.Passaporto, "BBBB12345", "P03");
            P4 = new Persona("Maria", "Randi", "Italia", new DateTime(1988, 11, 11), Enumerazioni.Sesso.Femmina, Enumerazioni.TipoDocumento.Carta_Identita, "II456578", "P04");
            P5 = new Persona("Mark", "Blackwood", "Inglese", new DateTime(1999, 8, 8), Enumerazioni.Sesso.Maschio, Enumerazioni.TipoDocumento.Passaporto, "HHAA12345", "P05");
            ListaPersone.Add(P1);
            ListaPersone.Add(P2);
            ListaPersone.Add(P3);
            ListaPersone.Add(P4);
            ListaPersone.Add(P5);


            // Creo 5 aereoporti e li metto in una lista di Aereoporti
            // Utilizzo un generics, in modo da creare una collezione
            // che contegga oggetti omogenei

            Aeroporto AP1, AP2, AP3, AP4, AP5;

            AP1 = new Aeroporto("Marconi", "BOM", 30, 40, 20, "Italia", "Bologna", false, false);
            AP2 = new Aeroporto("Malpensa", "MAX", 50, 60, 40, "Italia", "Milano", false, true);
            AP3 = new Aeroporto("John Fitzgerald Kennedy", "JFK", 120, 90, 100, "USA", "New York", false, true);
            AP4 = new Aeroporto("Linate", "LIN", 50, 50, 30, "Italia", "Milano", true, false);
            AP5 = new Aeroporto("Charles De Gaulle", "CDG", 80, 50, 60, "Francia", "Parigi", true, false);
            ListaAereoporti.Add(AP1);
            ListaAereoporti.Add(AP2);
            ListaAereoporti.Add(AP3);
            ListaAereoporti.Add(AP4);
            ListaAereoporti.Add(AP5);

            // Creo 10 Voli e li metto in una lista di Voli
            // Utilizzo un generics, in modo da creare una collezione
            // che contegga oggetti omogenei
            Volo V1, V2, V3, V4, V5, V6, V7, V8, V9, V10;

            V1  = new Volo(new DateTime(2020, 11, 11, 0, 0, 0), new DateTime(2020, 11, 11, 1, 0, 0), "V1", AE1, AP1, 7);
            V2  = new Volo(new DateTime(2020, 11, 12, 0, 30, 0), new DateTime(2020, 11, 12, 1, 30, 0), "V2", AE2, AP3, 40);
            V3  = new Volo(new DateTime(2020, 11, 13, 0, 45, 0), new DateTime(2020, 11, 13, 2, 0, 0), "V3", AE3, AP4, 25);
            V4  = new Volo(new DateTime(2020, 11, 14, 1, 0, 0), new DateTime(2020, 11, 14, 2, 0, 0), "V4", AE2, AP5, 15);
            V5  = new Volo(new DateTime(2020, 11, 15, 2, 0, 0), new DateTime(2020, 11, 15, 3, 30, 0), "V5", AE1, AP5, 8);
            V6  = new Volo(new DateTime(2020, 11, 16, 4, 0, 0), new DateTime(2020, 11, 16, 5, 0, 0), "V6", AE4, AP4, 6);
            V7  = new Volo(new DateTime(2020, 11, 17, 4, 30, 0), new DateTime(2020, 11, 17, 6, 0, 0), "V7", AE5, AP2, 4);
            V8  = new Volo(new DateTime(2020, 11, 18, 6, 0, 0), new DateTime(2020, 11, 18, 7, 30, 0), "V8", AE4, AP1, 7);
            V9  = new Volo(new DateTime(2020, 11, 19, 10, 0, 0), new DateTime(2020, 11, 19, 12, 50, 0), "V9", AE2, AP3, 12);
            V10 = new Volo(new DateTime(2020, 11, 20, 12, 0, 0), new DateTime(2020, 11, 20, 13, 50, 0), "V10", AE1, AP4, 1);
            ListaVoli.Add(V1);
            ListaVoli.Add(V2);
            ListaVoli.Add(V3);
            ListaVoli.Add(V4);
            ListaVoli.Add(V5);
            ListaVoli.Add(V6);
            ListaVoli.Add(V7);
            ListaVoli.Add(V8);
            ListaVoli.Add(V9);
            ListaVoli.Add(V10);

            // Creo 15 Biglietti  e li metto in una lista di Biglietti
            // Utilizzo un generics, in modo da creare una collezione
            // che contegga oggetti omogenei
            Biglietto B1, B2, B3, B4, B5, B6, B7, B8, B9, B10, B11, B12, B13, B14, B15;

            B1  = new Biglietto("B1", V1, P1, Enumerazioni.Ruoli.Pilota, 0, true, Enumerazioni.Sezioni.Nessuna, "");
            B2  = new Biglietto("B2", V1, P2, Enumerazioni.Ruoli.Passeggero, 100, false, Enumerazioni.Sezioni.Seconda, "A16");
            B3  = new Biglietto("B3", V2, P2, Enumerazioni.Ruoli.Steward, 0, true, Enumerazioni.Sezioni.Nessuna, "");
            B4  = new Biglietto("B4", V3, P3, Enumerazioni.Ruoli.Passeggero, 50, false, Enumerazioni.Sezioni.Terza, "A17");
            B5  = new Biglietto("B5", V3, P4, Enumerazioni.Ruoli.Passeggero, 100, false, Enumerazioni.Sezioni.Seconda, "A19");
            B6  = new Biglietto("B6", V3, P5, Enumerazioni.Ruoli.Passeggero, 1000, false, Enumerazioni.Sezioni.Top, "A20");
            B7  = new Biglietto("B7", V4, P5, Enumerazioni.Ruoli.Passeggero, 1500, false, Enumerazioni.Sezioni.Luxury, "A21");
            B8  = new Biglietto("B8", V5, P3, Enumerazioni.Ruoli.Passeggero, 300, false, Enumerazioni.Sezioni.Prima, "A22");
            B9  = new Biglietto("B9", V6, P2, Enumerazioni.Ruoli.Passeggero, 100, false, Enumerazioni.Sezioni.Seconda, "A23");
            B10 = new Biglietto("B10", V7, P2, Enumerazioni.Ruoli.Passeggero, 100, false, Enumerazioni.Sezioni.Seconda, "A24");
            B11 = new Biglietto("B11", V8, P2, Enumerazioni.Ruoli.Passeggero, 50, false, Enumerazioni.Sezioni.Terza, "A25");
            B12 = new Biglietto("B12", V9, P1, Enumerazioni.Ruoli.Passeggero, 300, false, Enumerazioni.Sezioni.Prima, "A26");
            B13 = new Biglietto("B13", V10, P2, Enumerazioni.Ruoli.Passeggero, 2000, false, Enumerazioni.Sezioni.Luxury, "A27");
            B14 = new Biglietto("B14", V10, P4, Enumerazioni.Ruoli.Passeggero, 800, false, Enumerazioni.Sezioni.Business, "A28");
            B15 = new Biglietto("B15", V10, P5, Enumerazioni.Ruoli.Passeggero, 150, false, Enumerazioni.Sezioni.Seconda, "A29");

            ListaBiglietti.Add(B1);
            ListaBiglietti.Add(B2);
            ListaBiglietti.Add(B3);
            ListaBiglietti.Add(B4);
            ListaBiglietti.Add(B5);
            ListaBiglietti.Add(B6);
            ListaBiglietti.Add(B7);
            ListaBiglietti.Add(B8);
            ListaBiglietti.Add(B9);
            ListaBiglietti.Add(B10);
            ListaBiglietti.Add(B11);
            ListaBiglietti.Add(B12);
            ListaBiglietti.Add(B13);
            ListaBiglietti.Add(B14);
            ListaBiglietti.Add(B15);


            MessageBox.Show("Caricamento concluso con successo", "Caricamento dati", MessageBoxButton.OK, MessageBoxImage.Information);
            btnCaricamentoDati.IsEnabled = false;
        }
Exemplo n.º 17
0
        List <IEmpresa> ICrearInstanciaPaqueteriaFactory.CrearInstancia(string cClave, List <Configuracion> configuracion)
        {
            List <IEmpresa>   empresa         = null;
            IMediosTransporte medioTransporte = null;
            MediosTransporte  Mediotransporte = null;

            Mediotransporte = configuracion[0].mediosTransporte.Where(x => x.Medio.ToUpper() == cClave.ToUpper()).FirstOrDefault();
            switch (cClave)
            {
            case "MARITIMO":

                medioTransporte = new Maritimo(new CalculadorVelocidadMaritimo(Mediotransporte.VelocidadPorTemporada, new Estacion(configuracion[0].temporadas)), new CalculadorCostoEnvioMaritimo(Mediotransporte.CostoAdicionalPorTemporada, Mediotransporte.CostoPorKilometro, new Estacion(configuracion[0].temporadas)));
                empresa         = new List <IEmpresa>();
                ParametrosDTO parametros = new ParametrosDTO();

                empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(configuracion[1].Periodos,
                                                                                              configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.MargenUtilidad).FirstOrDefault()),
                                      configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.Medios).FirstOrDefault(),
                                      new ParametrosDTO()));
                empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(configuracion[1].Periodos,
                                                                                          configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.MargenUtilidad).FirstOrDefault()),
                                    configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.Medios).FirstOrDefault(),
                                    new ParametrosDTO()));
                empresa.Add(new Estafeta(medioTransporte, new CalculadorMargenUtilidadCostoEstafeta(configuracion[1].Periodos,
                                                                                                    configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "ESTAFETA").Select(X => X.MargenUtilidad).FirstOrDefault()),
                                         configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "ESTAFETA").Select(X => X.Medios).FirstOrDefault(),
                                         new ParametrosDTO()));
                break;

            case "TERRESTRE":
                medioTransporte = new Terrestre(new CalculadorCostoEnvioTerrestre(Mediotransporte.CostoPorKilometro), new CalculadorTiempoTrasladoTerrestre(new Estacion(configuracion[0].temporadas), Mediotransporte.RetrasoPorDiaPorTemporada));
                empresa         = new List <IEmpresa>();
                ParametrosDTO parametrosT = new ParametrosDTO();
                empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(configuracion[1].Periodos,
                                                                                              configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.MargenUtilidad).FirstOrDefault()),
                                      configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.Medios).FirstOrDefault(),
                                      new ParametrosDTO()));
                empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(configuracion[1].Periodos,
                                                                                          configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.MargenUtilidad).FirstOrDefault()),
                                    configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.Medios).FirstOrDefault(),
                                    new ParametrosDTO()));
                empresa.Add(new Estafeta(medioTransporte, new CalculadorMargenUtilidadCostoEstafeta(configuracion[1].Periodos,
                                                                                                    configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "ESTAFETA").Select(X => X.MargenUtilidad).FirstOrDefault()),
                                         configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "ESTAFETA").Select(X => X.Medios).FirstOrDefault(),
                                         new ParametrosDTO()));
                break;

            case "AEREO":
                medioTransporte = new Aereo(new CalculadorEscalas());
                empresa         = new List <IEmpresa>();
                empresa.Add(new Fedex(medioTransporte, new CalculadorMargenUtilidadCostoFedex(configuracion[1].Periodos,
                                                                                              configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.MargenUtilidad).FirstOrDefault()),
                                      configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "FEDEX").Select(X => X.Medios).FirstOrDefault(),
                                      new ParametrosDTO()));
                empresa.Add(new DHL(medioTransporte, new CalculadorMargenUtilidadCostoDHL(configuracion[1].Periodos,
                                                                                          configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.MargenUtilidad).FirstOrDefault()),
                                    configuracion[2].paqueterias.Where(c => c.Paqueteria.ToUpper() == "DHL").Select(X => X.Medios).FirstOrDefault(),
                                    new ParametrosDTO()));
                break;
            }
            return(empresa);
        }
Exemplo n.º 18
0
        static void Main(string[] args)
        {
            Paquete paquete = new Paquete {
                Nombre = "Paquete Vacaciones 2018"
            };
            Aereo aereoIda = new Aereo {
                Nombre = "Aereo BUE-MDZ", Precio = 2000, Impuestos = 150
            };
            Aereo aereoVuelta = new Aereo {
                Nombre = "Aereo MDZ-BUE", Precio = 2000, Impuestos = 150
            };
            Hotel hotel = new Hotel {
                Nombre = "Hotel Hilton", Precio = 1000
            };
            Auto auto = new Auto {
                Nombre = "Sedan 5 puertas", Precio = 100
            };



            paquete.add(aereoIda);
            paquete.add(aereoVuelta);
            paquete.add(hotel);
            paquete.add(auto);

            Console.WriteLine(string.Concat("El Paquete consta de:", paquete.ObtenerNombre()));
            Console.WriteLine(string.Concat("El Paquete cuesta:", paquete.ObtenerPrecioTotal()));



            Console.WriteLine("Agregamos asistencia al viajeeo");
            AsistenciaViajero asisCard = new AsistenciaViajero {
                Nombre = "Cobertura Premium", Precio = 500, Impuestos = 20
            };

            paquete.add(asisCard);

            Console.WriteLine(string.Concat("El Paquete consta de:", paquete.ObtenerNombre()));
            Console.WriteLine(string.Concat("El Paquete cuesta:", paquete.ObtenerPrecioTotal()));

            Console.WriteLine("Para no  aburrirse agregamos actividades al hotel");
            Actividad torneoPoker = new Actividad {
                Nombre = "Torneo PokerStar 2018", Precio = 50
            };
            Actividad pileta = new Actividad {
                Nombre = "Acceso a pileta del hotel", Precio = 10
            };

            hotel.add(torneoPoker);
            hotel.add(pileta);

            Console.WriteLine(string.Concat("El Hotel consta de:", hotel.ObtenerNombre()));
            Console.WriteLine(string.Concat("El hotel cuesta:", hotel.ObtenerPrecioTotal()));

            Console.WriteLine(string.Concat("El Paquete consta de:", paquete.ObtenerNombre()));
            Console.WriteLine(string.Concat("El Paquete cuesta:", paquete.ObtenerPrecioTotal()));

            Console.WriteLine("Es muy caro, sacar el torneo de poker");
            hotel.remove(torneoPoker);
            Console.WriteLine(string.Concat("El Hotel consta de:", hotel.ObtenerNombre()));
            Console.WriteLine(string.Concat("El hotel cuesta:", hotel.ObtenerPrecioTotal()));

            Console.WriteLine(string.Concat("El Paquete consta de:", paquete.ObtenerNombre()));
            Console.WriteLine(string.Concat("El Paquete cuesta:", paquete.ObtenerPrecioTotal()));

            Console.WriteLine("No me dieron las vacaciones :( cancalar todo");
            paquete.Cancelar();

            Console.ReadKey();
        }