AIMS_BD_IATI.DAL.AimsDbIatiDAL.SetCurrencyExRateAndVal C# (CSharp) Méthode

SetCurrencyExRateAndVal() public méthode

public SetCurrencyExRateAndVal ( ICurrency tr, string defaultcurrency, System.DateTime trDate = default(DateTime) ) : void
tr ICurrency
defaultcurrency string
trDate System.DateTime
Résultat void
        public void SetCurrencyExRateAndVal(ICurrency tr, string defaultcurrency, DateTime trDate = default(DateTime))
        {
            tr.value.currency = tr.value.currency ?? defaultcurrency;

            var cur = tr.value.currency;

            if (ExchangeRates.Exists(e => e.ISO_CURRENCY_CODE == cur) == false)
            {
                ExchangeRates.AddRange(new AimsDAL().GetExchangesRateToUSD(cur));
            }


            var exchangeRates = ExchangeRates.Where(k => k.ISO_CURRENCY_CODE == cur).OrderBy(o => o.DATE);

            var valDate = tr.value.valuedate == default(DateTime) ? trDate : tr.value.valuedate;

            var nearestPast = exchangeRates.Where(k => k.DATE <= valDate).FirstOrDefault();
            var nearestPastDate = nearestPast == null ? default(DateTime) : nearestPast.DATE;
            var nearestFuture = exchangeRates.Where(k => k.DATE >= valDate).FirstOrDefault();
            var nearestFutureDate = nearestFuture == null ? default(DateTime) : nearestFuture.DATE;

            var nearestDate = (nearestFutureDate - valDate).TotalDays <= (valDate - nearestPastDate).TotalDays ? nearestFutureDate : nearestPastDate;


            var curExchangeRate = exchangeRates.Where(k => k.DATE == nearestDate).FirstOrDefault() ?? exchangeRates.FirstOrDefault();

            tr.value.BBexchangeRateDate = curExchangeRate?.DATE ?? default(DateTime).ToSqlDateTime();
            tr.value.BBexchangeRateUSD = curExchangeRate?.DOLLAR_PER_CURRENCY ?? 0;
            tr.value.ValueInUSD = tr.value.Value * tr.value.BBexchangeRateUSD;
            tr.value.BBexchangeRateBDT = curExchangeRate?.TAKA_PER_DOLLAR ?? 0;
            tr.value.ValueInBDT = tr.value.ValueInUSD * tr.value.BBexchangeRateBDT;

        }