Beispiel #1
0
        public void UpdateCurrencyRates()
        {
            var newRatesByCurrencyGuid = GetUpToDateCurrencyRates();

            if (newRatesByCurrencyGuid == null)
            {
                return;
            }

            var esqCurrencyRate = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "CurrencyRate");

            esqCurrencyRate.AddAllSchemaColumns();
            var entitiesCurrencyRate = esqCurrencyRate.GetEntityCollection(UserConnection);

            foreach (var entity in entitiesCurrencyRate)
            {
                var currencyGuid = entity.GetTypedColumnValue <Guid>("CurrencyId");
                try
                {
                    var newRate = newRatesByCurrencyGuid[currencyGuid];
                    // CurrencyRateHelper is inside Terrasoft.Configuration
                    var newMantissa = CurrencyRateHelper.GetRateMantissa(newRate);
                    entity.SetColumnValue("Rate", newRate);
                    entity.SetColumnValue("RateMantissa", newMantissa);
                    entity.Save();
                }
                catch (Exception ex)
                {
                    ShowInfoMessage("Failed to update currency rate in db.", ex);
                    return;
                }
            }
            ShowInfoMessage("All currency rates have been successfully updated in db.");
        }
        public CurrencyRateQuery(string sourceCurrency, string targetCurrency, DateTime date)
        {
            if (sourceCurrency.Length != 3)
            {
                throw new InvalidSourceCurrencyException(sourceCurrency);
            }
            SourceCurrency = sourceCurrency;

            if (targetCurrency.Length != 3)
            {
                throw new InvalidTargetCurrencyException(targetCurrency);
            }
            TargetCurrency = targetCurrency;

            if (date.Date > DateTime.UtcNow.Date)
            {
                throw new FutureDateQueryException();
            }
            Date = date;

            Hash = CurrencyRateHelper.GetHash(this);
        }