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