Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
            });
        }
Ejemplo n.º 3
0
        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);
            });
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public void Consume(BrandLanguagesAssigned message)
 {
     _eventHandlers.Handle(message);
 }