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); }
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); } }