Пример #1
0
        public void Handle(WalletTemplateUpdated @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));
            }

            var brandPlayers = bonusRepository.Players.Where(p => p.Brand.Id == brand.Id);

            foreach (var walletTemplate in @event.NewWalletTemplates)
            {
                var walletTemplateData = new WalletTemplate
                {
                    Id       = walletTemplate.Id,
                    IsMain   = walletTemplate.IsMain,
                    Products = walletTemplate.ProductIds.Select(id => new Product {
                        ProductId = id
                    }).ToList()
                };
                brand.WalletTemplates.Add(walletTemplateData);

                foreach (var brandPlayer in brandPlayers)
                {
                    brandPlayer.Wallets.Add(new Wallet
                    {
                        Player   = brandPlayer,
                        Template = walletTemplateData
                    });
                }
            }

            foreach (var walletTemplateDto in @event.RemainedWalletTemplates)
            {
                var walletTemplate = brand.WalletTemplates.Single(wt => wt.Id == walletTemplateDto.Id);

                walletTemplate.Products.Clear();
                walletTemplate.Products.AddRange(walletTemplateDto.ProductIds.Select(id => new Product {
                    ProductId = id
                }));
                walletTemplate.IsMain = walletTemplate.IsMain;
            }

            bonusRepository.SaveChanges();
        }
Пример #2
0
 public void Consume(WalletTemplateUpdated message)
 {
     _brandSubscriber.Handle(message);
 }
 public void Consume(WalletTemplateUpdated message)
 {
     _eventHandlers.Handle(message);
 }
Пример #4
0
 public void Handle(WalletTemplateUpdated @event)
 {
     AddActivityLog(AdminActivityLogCategory.Brand, "Wallet Updated", @event, @event.EventCreatedBy, null);
 }