public void Can_log_Brand_Currencies_Assigned() { var @event = new BrandCurrenciesAssigned(); _serviceBus.PublishMessage(@event); AssertAdminActivityLog(@event, AdminActivityLogCategory.Brand); }
public void Handle(BrandCurrenciesAssigned @event) { var bonusRepository = _container.Resolve <IBonusRepository>(); var brand = bonusRepository.Brands.SingleOrDefault(b => b.Id == @event.BrandId); if (brand == null) { throw new RegoException(string.Format(NoBrandFormat, @event.BrandId)); } brand.Currencies.Clear(); foreach (var currency in @event.Currencies) { brand.Currencies.Add(new Currency { Code = currency }); } bonusRepository.SaveChanges(); }
public void Can_remove_CurrencyExchanges_after_change_BaseCurrency() { const string newBaseCurrency = "UAH"; var brand = Container.Resolve <BrandTestHelper>().CreateBrand(isActive: true); var @event = new BrandCurrenciesAssigned { BrandId = brand.Id, Currencies = new[] { newBaseCurrency }, DefaultCurrency = newBaseCurrency, BaseCurrency = newBaseCurrency }; _eventBus.Publish(@event); var currencyExchanges = _paymentRepository.CurrencyExchanges.ToArray(); var currencies = _paymentRepository.BrandCurrencies.ToArray(); Assert.AreEqual(1, currencyExchanges.Count()); Assert.AreEqual(newBaseCurrency, currencyExchanges[0].CurrencyToCode); Assert.AreEqual(1, currencyExchanges[0].CurrentRate); }
public void Can_add_and_remove_BrandCurrencies_and_No_Duplicates() { var brand = Container.Resolve <BrandTestHelper>().CreateBrand(isActive: true); var brandDefaultCurrency = brand.DefaultCurrency; var brandBaseCurrency = brand.BaseCurrency; var brandCurrencies = _paymentRepository.BrandCurrencies.Select(x => x.CurrencyCode).ToList(); var newBrandCurrencies = brandCurrencies.ToList(); newBrandCurrencies.Add("UAH"); var @event = new BrandCurrenciesAssigned { BrandId = brand.Id, Currencies = newBrandCurrencies.ToArray(), DefaultCurrency = brandDefaultCurrency, BaseCurrency = brandBaseCurrency }; _eventBus.Publish(@event); Assert.AreEqual(brandCurrencies.Count() + 1, _paymentRepository.BrandCurrencies.Count()); newBrandCurrencies.Remove("UAH"); @event = new BrandCurrenciesAssigned { BrandId = brand.Id, Currencies = newBrandCurrencies.ToArray(), DefaultCurrency = brandDefaultCurrency, BaseCurrency = brandBaseCurrency }; _eventBus.Publish(@event); Assert.AreEqual(brandCurrencies.Count(), _paymentRepository.BrandCurrencies.Count()); }
public void Consume(BrandCurrenciesAssigned message) { var paymentRepository = _container.Resolve <IPaymentRepository>(); //reassign Base currency var paymentBrand = paymentRepository.Brands.Single(x => x.Id == message.BrandId); var oldBaseCurrencyCode = paymentBrand.BaseCurrencyCode; if (oldBaseCurrencyCode != message.BaseCurrency) { //remove old Currency Exchanges var oldCurrencyExchanges = paymentRepository.CurrencyExchanges .Where(x => x.BrandId == message.BrandId) .ToArray(); foreach (var oldCurrencyExchange in oldCurrencyExchanges) { paymentRepository.CurrencyExchanges.Remove(oldCurrencyExchange); } paymentRepository.SaveChanges(); //remove old Currencies var oldCurrencies = paymentRepository.BrandCurrencies .Where(x => x.BrandId == message.BrandId) .ToArray(); foreach (var oldCurrency in oldCurrencies) { paymentRepository.BrandCurrencies.Remove(oldCurrency); } paymentRepository.SaveChanges(); //add new currencies foreach (var newCurrency in message.Currencies) { var brandCurrency = new Data.BrandCurrency { BrandId = message.BrandId, CurrencyCode = newCurrency }; paymentRepository.BrandCurrencies.AddOrUpdate(brandCurrency); } paymentRepository.SaveChanges(); //Set Base Currency paymentBrand.BaseCurrencyCode = message.BaseCurrency; paymentRepository.SaveChanges(); //add new base currency exchange var baseCurrencyExchange = new Data.CurrencyExchange { BrandId = message.BrandId, CurrencyToCode = message.BaseCurrency, IsBaseCurrency = true, CurrentRate = 1, //todo: need to update CreatedBy = "System", DateCreated = DateTimeOffset.Now.ToBrandOffset(paymentBrand.TimezoneId), }; paymentRepository.CurrencyExchanges.AddOrUpdate(baseCurrencyExchange); paymentRepository.SaveChanges(); return; } //remove not exist Currency Exchanges var notExistCurrencyExchanges = paymentRepository.CurrencyExchanges .Where(x => x.BrandId == message.BrandId && !message.Currencies.Contains(x.CurrencyToCode)) .ToArray(); foreach (var oldCurrencyExchange in notExistCurrencyExchanges) { paymentRepository.CurrencyExchanges.Remove(oldCurrencyExchange); } paymentRepository.SaveChanges(); //remove not exist Currencies var notExistCurrencies = paymentRepository.BrandCurrencies .Where(x => x.BrandId == message.BrandId && !message.Currencies.Contains(x.CurrencyCode)) .ToArray(); foreach (var oldCurrency in notExistCurrencies) { paymentRepository.BrandCurrencies.Remove(oldCurrency); } paymentRepository.SaveChanges(); //add new currencies var existingCurrencies = paymentRepository.BrandCurrencies .Where(x => x.BrandId == message.BrandId).Select(c => c.CurrencyCode).ToArray(); var newCurrencies = message.Currencies.Where(c => !existingCurrencies.Contains(c)).ToArray(); foreach (var newCurrency in newCurrencies) { var brandCurrency = new Data.BrandCurrency { BrandId = message.BrandId, CurrencyCode = newCurrency }; paymentRepository.BrandCurrencies.AddOrUpdate(brandCurrency); } paymentRepository.SaveChanges(); }
public void Consume(BrandCurrenciesAssigned message) { _eventHandlers.Handle(message); }
public void Consume(BrandCurrenciesAssigned message) { _brandSubscriber.Handle(message); }
public void Handle(BrandCurrenciesAssigned @event) { AddActivityLog(AdminActivityLogCategory.Brand, @event); }