Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            IRecuperadorDatos     objrecuperaDatos  = new RecuperadorDatos();
            IRecuperadorDatosJSON objrecuperaDatos2 = new RecuperadorDatosJSON();
            IPintaMensaje         objpintarMensaje  = new PintaMensaje();
            CalExtencion1         objextencion1     = new CalExtencion1();
            CalExtencion2         objextencion2     = new CalExtencion2();
            CalExtencion3         objextencion3     = new CalExtencion3();
            CalExtencion4         objextencion4     = new CalExtencion4();
            ControladorValidacion objvalidar        = new ControladorValidacion();
            CalculaCostoEnvio     objcostoEnvio     = new CalculaCostoEnvio();

            List <DatosPaqueteria>     objdatos;
            List <DatosPaqueteriaJSON> objdatos2;
            string _mensaje, _cext1, _cext2, _cext3, _cext4, _crangoTiempo;
            double _dcostoenvio;

            objdatos  = objrecuperaDatos.Recuperadatos();
            objdatos2 = objrecuperaDatos2.Recuperadatos();

            foreach (DatosPaqueteria datos in objdatos)
            {
                _cext1        = objextencion1.Calculaextención(Convert.ToInt32(datos.dDistancia), datos.cTransporte, datos.DFechaPedido);
                _cext2        = objextencion2.Calculaextención(Convert.ToInt32(datos.dDistancia), datos.cTransporte, datos.DFechaPedido);
                _cext3        = objextencion3.Calculaextención(Convert.ToInt32(datos.dDistancia), datos.cTransporte, datos.DFechaPedido);
                _cext4        = objextencion4.Calculaextención(Convert.ToInt32(datos.dDistancia), datos.cTransporte, datos.DFechaPedido);
                _crangoTiempo = objvalidar.ValidaFecha(datos.DFechaPedido.ToString());
                _dcostoenvio  = objcostoEnvio.CalculaCosto(datos.dDistancia, datos.cPaqueteria, datos.cTransporte);

                _mensaje = (_dcostoenvio != 0) ? "Tu paquete " + _cext1 + " de " + datos.cOrigen + " y " + _cext2 + " a " + datos.cDestino + " " + _cext3 + " " + _crangoTiempo + " un costo de $" + _dcostoenvio + " Pesos(Cualquier reclamación con " + datos.cPaqueteria + ")\n" : "No ofrece el servicio de transporte por: " + datos.cTransporte;

                int _resultadpDatos = DateTime.Compare(DateTime.Now, datos.DFechaPedido);

                if (_resultadpDatos > 0 && _dcostoenvio != 0)
                {
                    objpintarMensaje.PintarMensaje("Verde", _mensaje);
                }
                else
                {
                    if (_resultadpDatos < 0 && _dcostoenvio != 0)
                    {
                        objpintarMensaje.PintarMensaje("Amarillo", _mensaje);
                    }
                    else
                    {
                        objpintarMensaje.PintarMensaje("Rojo", _mensaje);
                    }
                }
            }
            Console.ReadKey();
        }
        public void CalculaCosto_DatosSolicitados_Double()
        {
            //Arrange
            ICalculaCostoEnvio objcalculaCosto = new CalculaCostoEnvio();
            double             _ddistancia     = 12540;
            double             _dresultado;
            string             _cpaqueteria = "DHL";
            string             _ctransporte = "Avión";

            //Act
            _dresultado = objcalculaCosto.CalculaCosto(_ddistancia, _cpaqueteria, _ctransporte);

            //Assert
            Assert.AreEqual(175560, _dresultado);
        }
        public void costoPaquete_DHLAereo446400KMAplicaCostoAdiccionalPorEscala_CalculoCorrecto()
        {
            //Arrange
            var distancia      = 446400;
            var paqueteria     = "DHL";
            var fechaPedido    = new DateTime(2020, 01, 23, 8, 00, 00);
            var costoEsparado  = 6829800M;
            var tipoTransporte = "Aereo";

            var docObtenerCostoPorKilometroAereo = new ObtenedorCostoPorKilometroAereo();
            var docCalculaAdiccionalPorEscala    = new CalculaCostoAdiccionalPorEscala();
            var docObtenedorUtilidadPaqueteria   = new ObtenedorUtilidadDHL();
            var calculaUtilidadFedex             = new CalcularUtilidadPaqueteria(docObtenedorUtilidadPaqueteria);
            var docCalculaCostoAereo             = new CalculaCostoAdiccionalAdiccionalEnvioAereo(docCalculaAdiccionalPorEscala, calculaUtilidadFedex);

            var SUT = new CalculaCostoEnvio(docObtenerCostoPorKilometroAereo, docCalculaCostoAereo);

            //Act
            var costoPedido = SUT.costoPaquete(distancia, paqueteria, fechaPedido);


            Assert.AreEqual(costoEsparado, costoPedido);
        }
        public void costoPaquete_DHLMaritimo9000KMAplicaCostoAdiccionalPorEscala_CalculoCorrecto()
        {
            //Arrange
            var distancia      = 9000;
            var paqueteria     = "DHL";
            var fechaPedido    = new DateTime(2020, 01, 23, 8, 00, 00);
            var costoEsparado  = 4981.5M;
            var tipoTransporte = "Maritimo";

            var obtenedorCostoPorKilometroMaritimo = new ObtenedorCostoPorKilometroMaritimo();
            var docCalculaAdiccionalPorTemporada   = new CalculaCostoAdiccionalPorTemporadaInvierno();
            var docObtenedorUtilidadPaqueteria     = new ObtenedorUtilidadDHL();
            var calculaUtilidadDHL   = new CalcularUtilidadPaqueteria(docObtenedorUtilidadPaqueteria);
            var docCalculaCostoAereo = new CalculaCostoAdiccionalEnvioMaritimo(calculaUtilidadDHL, docCalculaAdiccionalPorTemporada);

            var SUT = new CalculaCostoEnvio(obtenedorCostoPorKilometroMaritimo, docCalculaCostoAereo);


            //Act
            var costoPedido = SUT.costoPaquete(distancia, paqueteria, fechaPedido);


            Assert.AreEqual(costoEsparado, costoPedido);
        }
        public void costoPaquete_EstafetaTerrestre80KM_CalculoCorrecto()
        {
            //Arrange
            var distancia      = 80M;
            var paqueteria     = "Estafeta";
            var FechaPedido    = new DateTime(2020, 01, 23, 12, 00, 00);
            var costoEsperado  = 1160M;
            var tipoTransporte = "Terrestre";

            var docObtenerCostoPorKilometroTerrestre = new ObtenedorCostoPorKilometroTerrestre();
            var docCalculaAdiccionalPorEscala        = new CalculaCostoAdiccionalPorEscala();
            var docObtenedorUtilidadPaqueteria       = new ObtenedorUtilidadEstafeta();
            var calculaUtilidadFedex = new CalcularUtilidadPaqueteria(docObtenedorUtilidadPaqueteria);
            var docCalculaCostoAereo = new CalculaCostoAdiccionalAdiccionalEnvioAereo(docCalculaAdiccionalPorEscala, calculaUtilidadFedex);

            var SUT = new CalculaCostoEnvio(docObtenerCostoPorKilometroTerrestre, docCalculaCostoAereo);

            //Act

            var costoPedido = SUT.costoPaquete(distancia, paqueteria, FechaPedido);

            //Assert
            Assert.AreEqual(costoEsperado, costoPedido);
        }