public virtual async Task UpdateAsync(TblCurrencies record) { if (await _dbContext.Languages .DeferredAny(p => p.IsoCode.Trim() == record.IsoCode.Trim() && p.Id != record.Id) .FromCacheAsync(CacheTags.Currency)) { throw new Exception($"The \"{record.IsoCode}\" ISO code already exist."); } var oldRecord = await FindByIdAsync(record.Id); if (oldRecord != null) { if (oldRecord.IsMainCurrency && !record.Published) { throw new Exception("System default currency cannot be at unpublished status."); } _dbContext.Currencies.AddOrUpdate(record); await _dbContext.SaveChangesAsync(); QueryCacheManager.ExpireTag(CacheTags.Currency); _eventPublisher.EntityUpdated(record, oldRecord); } }
public virtual async Task <CurrencyModel> PrepareCurrencyModelAsync([CanBeNull] TblCurrencies currency) { CurrencyModel result; if (currency == null) { result = new CurrencyModel(); } else { result = currency.Adapt <CurrencyModel>(); await currency.LoadAllLocalizedStringsToModelAsync(result); } return(result); }
public virtual async Task <int> AddAsync(TblCurrencies record) { if (await _dbContext.Languages.DeferredAny(p => p.IsoCode.Trim() == record.IsoCode.Trim()) .FromCacheAsync(CacheTags.Currency)) { throw new Exception($"The \"{record.IsoCode}\" ISO code already exist."); } _dbContext.Currencies.Add(record); await _dbContext.SaveChangesAsync(); QueryCacheManager.ExpireTag(CacheTags.Currency); _eventPublisher.EntityInserted(record); return(record.Id); }
public DefaultCurrencyChangeEvent(TblCurrencies record) { Record = record; }
public virtual void Initialize(AppDbContext db) { //Default Currency TblCurrencies usDollar = null, irRial = null; if (!db.Currencies.Any(p => p.IsMainCurrency)) { usDollar = new TblCurrencies() { IsoCode = "USD", DisplayOrder = 0, IsMainCurrency = true, Published = true, CurrencyName = "USD (US Dollar)", ExchangeRate = 0, DisplayFormat = "${0:N2}", ShortName = "USD" }; irRial = new TblCurrencies() { IsoCode = "IRR", DisplayOrder = 1, IsMainCurrency = false, Published = true, CurrencyName = "IRR (Iranian Rial)", ExchangeRate = 38000, DisplayFormat = "{0:#,###} ریال", ShortName = "Rial" }; db.Currencies.AddOrUpdate(usDollar); db.Currencies.AddOrUpdate(irRial); db.SaveChanges(); } else { usDollar = db.Currencies.FirstOrDefault(p => p.IsoCode.ToUpper().Trim() == "USD"); irRial = db.Currencies.FirstOrDefault(p => p.IsoCode.ToUpper().Trim() == "IRR"); } //Default Language TblLanguages enLang, faLang; if (!db.Languages.Any(p => p.IsDefault)) { using (var stream = new MemoryStream()) { Resources.English_16px.Save(stream, System.Drawing.Imaging.ImageFormat.Png); enLang = new TblLanguages() { IsoCode = "en", IsRtl = false, DisplayOrder = 0, IsDefault = true, LanguageName = "English", Published = true, Icon = stream.ToArray(), DefaultCurrency = usDollar, DefaultCurrencyId = usDollar?.Id }; stream.Seek(0, SeekOrigin.Begin); Resources.Iran_16px.Save(stream, System.Drawing.Imaging.ImageFormat.Png); faLang = new TblLanguages() { IsoCode = "fa", IsRtl = true, DisplayOrder = 1, IsDefault = false, LanguageName = "فارسی", Published = true, Icon = stream.ToArray(), DefaultCurrency = irRial, DefaultCurrencyId = irRial?.Id }; } db.Languages.AddOrUpdate(enLang); db.Languages.AddOrUpdate(faLang); db.SaveChanges(); if (irRial != null) { db.LocalizedProperty.AddOrUpdate(new TblLocalizedProperty() { EntityId = irRial.Id, LocaleKey = "CurrencyName", LocaleKeyGroup = "Tbl_Currencies", LocaleValue = "ریال ایران", LanguageId = faLang.Id }); db.LocalizedProperty.AddOrUpdate(new TblLocalizedProperty() { EntityId = irRial.Id, LocaleKey = "ShortName", LocaleKeyGroup = "Tbl_Currencies", LocaleValue = "ریال", LanguageId = faLang.Id }); db.SaveChanges(); } if (usDollar != null) { db.LocalizedProperty.AddOrUpdate(new TblLocalizedProperty() { EntityId = usDollar.Id, LocaleKey = "CurrencyName", LocaleKeyGroup = "Tbl_Currencies", LocaleValue = "دلار آمریکا", LanguageId = faLang.Id }); db.LocalizedProperty.AddOrUpdate(new TblLocalizedProperty() { EntityId = usDollar.Id, LocaleKey = "ShortName", LocaleKeyGroup = "Tbl_Currencies", LocaleValue = "دلار", LanguageId = faLang.Id }); db.SaveChanges(); } } else { faLang = db.Languages.FirstOrDefault(p => p.IsoCode.Trim() == "fa"); } //Countries List if (!db.Countries.Any()) { foreach (var country in Countries) { var dbCountry = new TblCountries() { CountryName = country.Key }; db.Countries.AddOrUpdate(dbCountry); db.SaveChanges(); if (faLang != null) { db.LocalizedProperty.AddOrUpdate(new TblLocalizedProperty() { EntityId = dbCountry.Id, LanguageId = faLang.Id, LocaleKeyGroup = "Tbl_Countries", LocaleKey = "CountryName", LocaleValue = country.Value }); } } } db.SaveChanges(); ImportLocalizedStrings(db); }