public string ObtenerCostoEconomico(double _dDistancia, string _cTransporte, string _cPaqueteria, double dCostoAnterior)
        {
            foreach (var dic in DicPaqueterias)
            {
                if (dic.Value != _cPaqueteria.ToUpper().Trim())
                {
                    //se obtiene la paqueteria
                    IPaqueterias paqueteria = paqueteriaFactory.CrearInstancia(dic.Value);

                    //se manda a calcular el costo del pedido por el transporte, pero antes pasa por la paqueteria para saber si cuenta con ese transporte
                    double dCosto = paqueteria.ObtenerCostoxPedido(_cTransporte, _dDistancia);

                    if (dCostoAnterior > dCosto)
                    {
                        return($"Si lo hubieses comprado en la paqueteria {dic.Value}, te hubiese salido {(dCostoAnterior - dCosto)} pesos menos.\n");
                    }
                }
            }

            //En caso de que no se encuentre algun precio mas barato se regresa un mensaje vacio
            return(null);
        }
示例#2
0
        public void RecorrerListaPedidos(List <Pedido> lstPedidos)
        {
            List <ResultadoPedidos> lstResultPedidos = CrearListaNuevoObjetoDelPedido(lstPedidos);

            try
            {
                foreach (var oPedido in lstResultPedidos)
                {
                    try
                    {
                        IPaqueterias paqueteria = paqueteriaFabrica.CrearInstancia(oPedido.cPaqueteria);

                        oPedido.fCostoEnvio = ObtenerCostoxPedido(paqueteria, oPedido);

                        double HorasParaEntregarPedidoxTransporte = ObtenerTiempoEntrega(paqueteria, oPedido);
                        oPedido.dtFechaHoraPedido.AddHours(HorasParaEntregarPedidoxTransporte);

                        string TiempoRestanteEntregaTemp = ObtenerDiferenciaFechas(oPedido);

                        oPedido.lPaqueteEntregado = (TiempoRestanteEntregaTemp.Split(',')[0] == "-") ? true : false;

                        oPedido.cTiempoEntrega = TiempoRestanteEntregaTemp.Split(',')[1];

                        //oPedido.cEviobarrato = paqueriaRepositorio.ObtenerCostoEconomico(oPedido.iDistancia, oPedido.cMedioTransporte, oPedido.cPaqueteria, oPedido.fCostoEnvio);
                    }
                    catch (Exception e)
                    {
                        oPedido.cError = e.Message;
                    }
                }

                visualizadorRepositorio.PrintResultado(lstResultPedidos);
            }
            catch (Exception e)
            {
                visualizadorRepositorio.PrintError(e.Message);
            }
        }