public void Consume(BrandLanguagesAssigned message) { var brand = _repository.Brands .Include(x => x.Languages) .Single(x => x.Id == message.BrandId); RemoveBrandLanguagesAndMessageTemplates(brand, message); AddBrandLanguagesAndMessageTemplates(brand, message); _repository.SaveChanges(); }
private void AddBrandLanguagesAndMessageTemplates(Data.Brand brand, BrandLanguagesAssigned message) { brand.DefaultLanguageCode = message.DefaultLanguageCode; var newLanguages = message.Languages.Where(x => brand.Languages.All(y => y.Code != x.Code)); newLanguages.ForEach(newLanguage => { var language = _repository.Languages.Single(x => x.Code == newLanguage.Code); brand.Languages.Add(language); AddDefaultMessageTemplates(brand, language); }); }
private void RemoveBrandLanguagesAndMessageTemplates(Data.Brand brand, BrandLanguagesAssigned message) { var oldLanguages = brand.Languages.Where(x => message.Languages.All(y => y.Code != x.Code)).ToArray(); oldLanguages.ForEach(oldLanguage => { var messageTemplates = _repository.MessageTemplates.Where(x => x.BrandId == brand.Id && x.LanguageCode == oldLanguage.Code); messageTemplates.ForEach(messageTemplate => _repository.MessageTemplates.Remove(messageTemplate)); brand.Languages.Remove(oldLanguage); }); }
public void Handle(BrandLanguagesAssigned brandLanguagesAssignedEvent) { var repository = _container.Resolve <IReportRepository>(); if (brandLanguagesAssignedEvent.Languages.Any(l => repository.LanguageRecords.All(lr => lr.Code != l.Code))) { //todo: create more detailed message throw new RegoException(LanguageRecordsWereNotFoundMessage); } UpdateAssignedInBrand(repository, brandLanguagesAssignedEvent.Languages.Select(c => c.Code), _container.Resolve <BrandQueries>().GetBrandOrNull(brandLanguagesAssignedEvent.BrandId).Licensee.Name, brandLanguagesAssignedEvent.BrandName); }
public void Consume(BrandLanguagesAssigned message) { _eventHandlers.Handle(message); }