Beispiel #1
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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);
        }