コード例 #1
0
        public DateTime CalcularFechaEntrega(DatosPaqueteDTO _datosPaquete)
        {
            DateTime dtFechaEntrega;

            dtFechaEntrega = _datosPaquete.dtFechaPedido.AddHours(_datosPaquete.dTiempoTraslado);
            return(dtFechaEntrega);
        }
コード例 #2
0
        private DatosPaqueteDTO LlenarPedidoDatosConError()
        {
            DatosPaqueteDTO datosPaqueteDTO = new DatosPaqueteDTO {
                cPaqueteria = "Correos de México"
            };

            return(datosPaqueteDTO);
        }
コード例 #3
0
        private DatosPaqueteDTO LlenarPedidoDatosCorrectos()
        {
            DatosPaqueteDTO datosPaqueteDTO = new DatosPaqueteDTO
            {
                cPaqueteria = "DHL"
            };

            return(datosPaqueteDTO);
        }
コード例 #4
0
        private DatosPaqueteDTO LlenarPedidoDatosCorrectos()
        {
            DatosPaqueteDTO datosPaqueteDTO = new DatosPaqueteDTO
            {
                cMedioTransporte = "Terrestre"
            };

            return(datosPaqueteDTO);
        }
コード例 #5
0
        private DatosPaqueteDTO LlenarPedidoDatosConError()
        {
            DatosPaqueteDTO datosPaqueteDTO = new DatosPaqueteDTO
            {
                cMedioTransporte = "Online"
            };

            return(datosPaqueteDTO);
        }
        public double CalcularTiempoTraslado(DatosPaqueteDTO _datosPaqueteDTO)
        {
            Double dTiempoTraslado = 0, dVelocidadTemporada = 0;

            //distancia / dVelocidadTotal
            dVelocidadTemporada = CalcularCostoVelocidadTemporada(_datosPaqueteDTO.iEstacion, _datosPaqueteDTO.dVelocidad);
            dTiempoTraslado     = (_datosPaqueteDTO.dDistancia / dVelocidadTemporada) + _datosPaqueteDTO.dTiempoReparto;

            return(dTiempoTraslado);
        }
        public double CalcularCostoEnvio(DatosPaqueteDTO _datosPaqueteDTO)
        {
            Double dCostoEnvio = 0, dCostoKM = 0;

            //CostoKM * distancia * (1 + (Utilidad/100))
            dCostoKM = CalcularCostoKM(_datosPaqueteDTO.dDistancia);

            dCostoEnvio = dCostoKM * _datosPaqueteDTO.dDistancia * (1 + (_datosPaqueteDTO.dUtilidad / 100));
            return(dCostoEnvio);
        }
        public double CalcularTiempoTraslado(DatosPaqueteDTO _datosPaqueteDTO)
        {
            Double dTiempoTraslado = 0, dTiempoDescanso = 0, dCostoKM = 0;

            //distancia / (dCostoKM * dVelocidad) + dDescansoEstacion
            dCostoKM        = CalcularCostoKM(_datosPaqueteDTO.dDistancia);
            dTiempoDescanso = CalcularTiempoDescansoEstacion(_datosPaqueteDTO.iEstacion);

            dTiempoTraslado = (_datosPaqueteDTO.dDistancia / (dCostoKM * _datosPaqueteDTO.dVelocidad) * dTiempoDescanso) + _datosPaqueteDTO.dTiempoReparto;

            return(dTiempoTraslado);
        }
        private DatosPaqueteDTO LlenarPedidoDatosCorrectos()
        {
            DatosPaqueteDTO datosPaqueteDTO = new DatosPaqueteDTO
            {
                dDistancia     = 80,
                dUtilidad      = 45,
                dVelocidad     = 80,
                dTiempoReparto = 10,
            };

            return(datosPaqueteDTO);
        }
コード例 #10
0
        public DatosPaqueteDTO AsignarDatosExtraPaquetes(DatosPaqueteDTO _datosPaqueteDTO)
        {
            var serviceEstrategia = estrategiaCalculadorPaqueteriaService.CrearInstancia(_datosPaqueteDTO.iPaqueteria);

            _datosPaqueteDTO.iEstacion      = AsignarEstacion(_datosPaqueteDTO.dtFechaPedido);
            _datosPaqueteDTO.lstTransporte  = AsignarTransportes(_datosPaqueteDTO.iPaqueteria);
            _datosPaqueteDTO.dUtilidad      = serviceEstrategia.CalcularMargenUtilidad(_datosPaqueteDTO.dtFechaPedido);
            _datosPaqueteDTO.dTiempoReparto = serviceEstrategia.CalculadorTiempoReparto(_datosPaqueteDTO.iTransporte);
            _datosPaqueteDTO.dVelocidad     = AsignarVelocidad(_datosPaqueteDTO.iTransporte);

            return(_datosPaqueteDTO);
        }
コード例 #11
0
        public DatosPaqueteDTO AsignarResultadosDatosPaquetes(DatosPaqueteDTO _datosPaqueteDTO)
        {
            var serviceEstrategia = estrategiaCalculadorTransporteService.CrearInstancia(_datosPaqueteDTO.iTransporte);

            _datosPaqueteDTO.dCostoEnvio     = serviceEstrategia.CalcularCostoEnvio(_datosPaqueteDTO);
            _datosPaqueteDTO.dTiempoTraslado = serviceEstrategia.CalcularTiempoTraslado(_datosPaqueteDTO);
            _datosPaqueteDTO.dtFechaEntrega  = calculadorTiemposViewModelService.CalcularFechaEntrega(_datosPaqueteDTO);
            _datosPaqueteDTO.iColorMensaje   = AsignarColorMensaje(_datosPaqueteDTO);
            _datosPaqueteDTO.cRangoTiempo    = calculadorTiemposViewModelService.CalcularRangoTiempo(_datosPaqueteDTO);

            return(_datosPaqueteDTO);
        }
コード例 #12
0
        public void CalcularCostoEnvio_DatosPaquetesCorrectos_RetornaCostoEnvioMayorACero()
        {
            //Arrange
            CalculadorTransporteMaritimoService calculadorTransporteMaritimoService = new CalculadorTransporteMaritimoService();
            DatosPaqueteDTO datosPaqueteDTO = LlenarPedidoDatosCorrectos();

            //Act
            Double dCostoEnvio = calculadorTransporteMaritimoService.CalcularCostoEnvio(datosPaqueteDTO);

            //Assert
            Assert.IsTrue(dCostoEnvio > 0);
        }
コード例 #13
0
        public Double CalcularCostoEnvio(DatosPaqueteDTO _datosPaqueteDTO)
        {
            //CostoKm * distancia + CargoExtra * (1+(Utilidad/100))
            Double dCostoEnvio = 0, dCostoKM = 0, dCostoExtra = 0;

            dCostoKM    = CalcularCostoKM(_datosPaqueteDTO.dDistancia);
            dCostoExtra = CalcularCostoExtra(_datosPaqueteDTO.dDistancia);

            dCostoEnvio = (dCostoKM * _datosPaqueteDTO.dDistancia + dCostoExtra) * (1 + (_datosPaqueteDTO.dUtilidad / 100));

            return(dCostoEnvio);
        }
        private DatosPaqueteDTO LlenarPedidoDatosConError()
        {
            DatosPaqueteDTO datosPaqueteDTO = new DatosPaqueteDTO
            {
                dDistancia     = 0,
                dUtilidad      = 0,
                dVelocidad     = 0,
                dTiempoReparto = 0,
            };

            return(datosPaqueteDTO);
        }
コード例 #15
0
 public void GenerarEstructuraMensajePedido(DatosPaqueteDTO _datosPaqueteDTO)
 {
     this.builderMensajePedido.AsignarExpresion1(_datosPaqueteDTO.dtFechaEntrega);
     this.builderMensajePedido.AsignarOrigen(_datosPaqueteDTO.cCiudadOrigen, _datosPaqueteDTO.cPaisOrigen);
     this.builderMensajePedido.AsignarExpresion2(_datosPaqueteDTO.dtFechaEntrega);
     this.builderMensajePedido.AsignarDestino(_datosPaqueteDTO.cCiudadDestino, _datosPaqueteDTO.cPaisDestino);
     this.builderMensajePedido.AsignarExpresion3(_datosPaqueteDTO.dtFechaEntrega);
     this.builderMensajePedido.AsignarRangoTiempo(_datosPaqueteDTO.cRangoTiempo);
     this.builderMensajePedido.AsignarExpresion4(_datosPaqueteDTO.dtFechaEntrega);
     this.builderMensajePedido.AsignarCostoEnvio(_datosPaqueteDTO.dCostoEnvio);
     this.builderMensajePedido.AsignarPaqueteria(_datosPaqueteDTO.cPaqueteria);
 }
        public void CalcularTiempoTraslado_DatosPaquetesCorrectos_RetornaTiempoTrasladoMayorACero()
        {
            //Arrange
            CalculadorTransporteAereoService calculadorTransporteAereoService = new CalculadorTransporteAereoService();
            DatosPaqueteDTO datosPaqueteDTO = LlenarPedidoDatosCorrectos();

            //Act
            Double dTiempoTraslado = calculadorTransporteAereoService.CalcularTiempoTraslado(datosPaqueteDTO);

            //Assert
            Assert.IsTrue(dTiempoTraslado > 0);
        }
        public void CalcularTiempoTraslado_DatosPaquetesIncorrectos_RetornaTiempoTrasladoNaN()
        {
            //Arrange
            CalculadorTransporteAereoService calculadorTransporteAereoService = new CalculadorTransporteAereoService();
            DatosPaqueteDTO datosPaqueteDTO = LlenarPedidoDatosConError();

            //Act
            Double dTiempoTraslado = calculadorTransporteAereoService.CalcularTiempoTraslado(datosPaqueteDTO);

            //Assert
            Assert.IsTrue(Double.IsNaN(dTiempoTraslado));
        }
        public void CalcularCostoEnvio_DatosPaquetesIncorrectos_RetornaCostoEnvioCero()
        {
            //Arrange
            CalculadorTransporteAereoService calculadorTransporteAereoService = new CalculadorTransporteAereoService();
            DatosPaqueteDTO datosPaqueteDTO = LlenarPedidoDatosConError();

            //Act
            Double dCostoEnvio = calculadorTransporteAereoService.CalcularCostoEnvio(datosPaqueteDTO);

            //Assert
            Assert.IsTrue(dCostoEnvio == 0);
        }
        private DatosPaqueteDTO LlenarPedidoDatosConError()
        {
            DatosPaqueteDTO datosPaqueteDTO = new DatosPaqueteDTO
            {
                iPaqueteria    = (int)EnumPaqueterias.DHL,
                iTransporte    = 0,
                dtFechaPedido  = DateTime.Now,
                dtFechaEntrega = DateTime.Now
            };

            return(datosPaqueteDTO);
        }
        private DatosPaqueteDTO LlenarPedidoDatosCorrectos()
        {
            DatosPaqueteDTO datosPaqueteDTO = new DatosPaqueteDTO
            {
                iPaqueteria    = (int)EnumPaqueterias.DHL,
                iTransporte    = (int)EnumTransportes.Terrestre,
                dtFechaPedido  = DateTime.Now,
                dtFechaEntrega = DateTime.Now
            };

            return(datosPaqueteDTO);
        }
コード例 #21
0
        public Double CalcularTiempoTraslado(DatosPaqueteDTO _datosPaquetesDTO)
        {
            Double dTiempoTraslado = 0, dCostoKm = 0;
            int    iEscala = 0;

            //distancia / (dCostoKM * dVelocidad) + (Escalas * 6)
            dCostoKm = CalcularCostoKM(_datosPaquetesDTO.dDistancia);
            iEscala  = CalcularEscalas(_datosPaquetesDTO.dDistancia);

            dTiempoTraslado = (_datosPaquetesDTO.dDistancia / (dCostoKm * _datosPaquetesDTO.dVelocidad) + (iEscala * 6)) + _datosPaquetesDTO.dTiempoReparto;

            return(dTiempoTraslado);
        }
コード例 #22
0
        public int AsignarColorMensaje(DatosPaqueteDTO _datosPaqueteDTO)
        {
            int      iColorMensaje = (int)ConsoleColor.White;
            DateTime dtFechaActual = DateTime.Now;

            if (_datosPaqueteDTO.dtFechaEntrega <= dtFechaActual)
            {
                iColorMensaje = (int)ConsoleColor.Green;
            }
            else
            {
                iColorMensaje = (int)ConsoleColor.Yellow;
            }
            return(iColorMensaje);
        }
コード例 #23
0
        public void ValidarDatosPedido_CPaqueteriaIncorrecta_RetornaDatosPaqueteDTOlErrorTrue()
        {
            //Arrange
            validadorDatosPedidoService = new Mock <IValidadorDatosPedidoService>();
            DatosPaqueteDTO datosPaqueteDTO = LlenarPedidoDatosConError();

            var instanciaValidadorDatosPedidoService = new ValidadorPaqueteriaService();

            validadorDatosPedidoService.Setup((srv) => srv.ValidarDatosPedido(datosPaqueteDTO)).Returns(() => new DatosPaqueteDTO());

            //Act
            DatosPaqueteDTO datosPaqueteDTOResultado = instanciaValidadorDatosPedidoService.ValidarDatosPedido(datosPaqueteDTO);

            //Assert
            Assert.IsTrue(datosPaqueteDTO.lError);
        }
コード例 #24
0
        public List <DatosPaqueteDTO> AsignarDatosPaquetesEconomicos(DatosPaqueteDTO _datosPaqueteDTO, int _iCantidadPaqueterias)
        {
            List <string>          lstPaqueterias   = new List <string>();
            List <DatosPaqueteDTO> lstDatosPaquetes = new List <DatosPaqueteDTO>();

            lstPaqueterias.Add($"{_datosPaqueteDTO.dDistancia},DHL,{_datosPaqueteDTO.cMedioTransporte},{_datosPaqueteDTO.dtFechaPedido},{_datosPaqueteDTO.cPaisOrigen}," +
                               $"{_datosPaqueteDTO.cCiudadOrigen},{_datosPaqueteDTO.cPaisDestino},{_datosPaqueteDTO.cCiudadDestino}");

            lstPaqueterias.Add($"{_datosPaqueteDTO.dDistancia},Estafeta,{_datosPaqueteDTO.cMedioTransporte},{_datosPaqueteDTO.dtFechaPedido},{_datosPaqueteDTO.cPaisOrigen}," +
                               $"{_datosPaqueteDTO.cCiudadOrigen},{_datosPaqueteDTO.cPaisDestino},{_datosPaqueteDTO.cCiudadDestino}");

            lstPaqueterias.Add($"{_datosPaqueteDTO.dDistancia},Fedex,{_datosPaqueteDTO.cMedioTransporte},{_datosPaqueteDTO.dtFechaPedido},{_datosPaqueteDTO.cPaisOrigen}," +
                               $"{_datosPaqueteDTO.cCiudadOrigen},{_datosPaqueteDTO.cPaisDestino},{_datosPaqueteDTO.cCiudadDestino}");
            lstDatosPaquetes = AsignarDatosPaquetes(lstPaqueterias);
            return(lstDatosPaquetes);
        }
コード例 #25
0
        public List <DatosPaqueteDTO> ValidarDatosPaquetes(List <DatosPaqueteDTO> _lstdatosPaqueteDTO)
        {
            List <DatosPaqueteDTO> lstDatosPaquete = new List <DatosPaqueteDTO>();

            foreach (DatosPaqueteDTO datosPaquete in _lstdatosPaqueteDTO)
            {
                DatosPaqueteDTO            datosPaqueteValidado   = new DatosPaqueteDTO();
                ValidadorPaqueteriaService srvValidadorPaqueteria = new ValidadorPaqueteriaService();
                ValidadorTransporteService srvValidadorTransporte = new ValidadorTransporteService();

                srvValidadorPaqueteria.AsignarSiguienteValidacion(srvValidadorTransporte);

                datosPaqueteValidado = srvValidadorPaqueteria.ValidarDatosPedido(datosPaquete);
                lstDatosPaquete.Add(datosPaqueteValidado);
            }
            return(_lstdatosPaqueteDTO);
        }
        public void AsignarColorMensaje_DatosPaquetesDTOFechaEntregaMayorAHoy_RetornaColorAmarillo()
        {
            //Arrange
            estrategiaCalculadorPaqueteriaService = new Mock <IEstrategiaCalculadorPaqueteriaService>();
            estrategiaCalculadorTransporteService = new Mock <IEstrategiaCalculadorTransporteService>();
            calculadorTiemposViewModelService     = new Mock <ICalculadorTiemposViewModelService>();

            AsignadorPedidoViewModelService asignadorPedidoViewModelService = new AsignadorPedidoViewModelService(estrategiaCalculadorPaqueteriaService.Object, estrategiaCalculadorTransporteService.Object, calculadorTiemposViewModelService.Object);
            DatosPaqueteDTO datosPaqueteDTO = LlenarPedidoDatosCorrectos();

            datosPaqueteDTO.dtFechaEntrega = datosPaqueteDTO.dtFechaEntrega.AddDays(2);

            //Act
            int iColorMensaje = asignadorPedidoViewModelService.AsignarColorMensaje(datosPaqueteDTO);

            //Assert
            Assert.IsTrue(iColorMensaje == (int)ConsoleColor.Yellow);
        }
        public void AsignarDatosExtraPaquetes_DatosPaquetesIncorrectos_NoAsignaEstacionLstTransporteDUtilidadDVelocidad()
        {
            //Arrange
            estrategiaCalculadorPaqueteriaService = new Mock <IEstrategiaCalculadorPaqueteriaService>();
            estrategiaCalculadorTransporteService = new Mock <IEstrategiaCalculadorTransporteService>();
            calculadorTiemposViewModelService     = new Mock <ICalculadorTiemposViewModelService>();

            DatosPaqueteDTO datosPaqueteDTO = LlenarPedidoDatosConError();
            AsignadorPedidoViewModelService asignadorPedidoViewModelService = new AsignadorPedidoViewModelService(estrategiaCalculadorPaqueteriaService.Object, estrategiaCalculadorTransporteService.Object, calculadorTiemposViewModelService.Object);

            estrategiaCalculadorPaqueteriaService.Setup((estrategiaSrv) => estrategiaSrv.CrearInstancia(datosPaqueteDTO.iPaqueteria)).Returns(() => new CalculadorPaqueteriaDHLService());

            //Act
            DatosPaqueteDTO datosPaqueteDTOResultado = asignadorPedidoViewModelService.AsignarDatosExtraPaquetes(datosPaqueteDTO);

            //Assert
            Assert.IsFalse(datosPaqueteDTOResultado.iEstacion > 0 && datosPaqueteDTOResultado.lstTransporte.Count > 0 && datosPaqueteDTOResultado.dUtilidad > 0 && datosPaqueteDTOResultado.dVelocidad > 0);
        }
コード例 #28
0
        public string CalcularRangoTiempo(DatosPaqueteDTO _datosPaquete)
        {
            string cTiempoEntrega = string.Empty;
            Double dTiempoHoras   = CalcularRangoTiempoHoras(_datosPaquete.dtFechaEntrega);
            Double dTiempoExacto  = CalcularTiempoExacto(dTiempoHoras);

            if (dTiempoHoras < 1)
            {
                //Minutos hasta 59 minutos
                cTiempoEntrega = $"{dTiempoExacto.ToString()} minutos";
            }
            else if (dTiempoHoras < 24)
            {
                //Horas hasta 23 horas
                cTiempoEntrega = $"{dTiempoExacto.ToString()} horas";
            }
            else if (dTiempoHoras <= 144)
            {
                //Horas hasta 6 días
                cTiempoEntrega = $"{dTiempoExacto.ToString()} día(s)";
            }
            else if (dTiempoHoras < 720)
            {
                //Semanas hasta 29 días
                cTiempoEntrega = $"{dTiempoExacto.ToString()} semana(s)";
            }
            else if (dTiempoHoras == 720)
            {
                //Horas hasta 6 días
                cTiempoEntrega = $"{dTiempoExacto.ToString()} mes";
            }
            else if (dTiempoHoras <= 8640)
            {
                //Horas hasta 6 días
                cTiempoEntrega = $"{dTiempoExacto.ToString()} bimestre(s)";
            }
            else if (dTiempoHoras > 8640)
            {
                //Horas hasta 6 semestres
                cTiempoEntrega = $"{dTiempoExacto.ToString()} años";
            }

            return(cTiempoEntrega);
        }
コード例 #29
0
        public DatosPaqueteDTO ValidarDatosPedido(DatosPaqueteDTO _datosPaqueteDTO)
        {
            switch (_datosPaqueteDTO.cMedioTransporte.ToUpper())
            {
            case "AÉREO":
            case "MARÍTIMO":
            case "TERRESTRE":
                break;

            default:
                _datosPaqueteDTO.lError        = true;
                _datosPaqueteDTO.iError        = (int)EnumErrores.ErrorTransporte;
                _datosPaqueteDTO.iColorMensaje = (int)ConsoleColor.Red;
                break;
            }
            if (validadorDatosPedidoService != null && !_datosPaqueteDTO.lError)
            {
                validadorDatosPedidoService.ValidarDatosPedido(_datosPaqueteDTO);
            }
            return(_datosPaqueteDTO);
        }
コード例 #30
0
        public DatosPaqueteDTO ValidarDatosPedido(DatosPaqueteDTO _datosPaqueteDTO)
        {
            switch (_datosPaqueteDTO.cPaqueteria.ToUpper())
            {
            case "FEDEX":
            case "ESTAFETA":
            case "DHL":
                break;

            default:
                _datosPaqueteDTO.lError        = true;
                _datosPaqueteDTO.iError        = (int)EnumErrores.ErrorPaqueteria;
                _datosPaqueteDTO.iColorMensaje = (int)ConsoleColor.Red;
                break;
            }

            if (validadorDatosPedidoService != null && !_datosPaqueteDTO.lError)
            {
                validadorDatosPedidoService.ValidarDatosPedido(_datosPaqueteDTO);
            }
            return(_datosPaqueteDTO);
        }