async Task ProcessDimensions(List <Data.Model.TrendingTopic> trendingTopicsToAdd) { var trendingTopics = trendingTopicsToAdd .Select(i => new TrendingTopic { IsPromoted = i.IsPromoted, Name = Sanitize(i.Text) }) .ToList(); var geographies = trendingTopicsToAdd .Select(i => i.Country) .Distinct() .Select(i => new Geography { Name = i }).ToList(); await _dwhRepository.UpsertAsync(geographies); await _dwhRepository.UpsertAsync(trendingTopics); }
async Task ProcessDimensionsAsync(List <RAWMessage> message) { var channels = message.Select(chat => GetChannelFrom(chat)).ToList(); var conversationTracks = message.Select(chat => GetConversationTrackFrom(chat)).ToList(); var languages = message.Where(i => !string.IsNullOrWhiteSpace(i.SourceLanguage)) .Select(chat => GetSourceLanguageFrom(chat)).ToList(); var messageTypes = message.Select(chat => GetMessageTypeFrom(chat)).ToList(); var userFroms = message.Select(chat => GetUserFrom(chat)).ToList(); var userTos = message.Select(chat => GetUserTo(chat)).ToList(); var requestWords = message.SelectMany(chat => chat.Request .Split(new string[] { " ", ",", "." }, StringSplitOptions.RemoveEmptyEntries) .Select(i => new Data.DWH.Model.Dimensions.SingleWord { Text = SaniziteWord(i) }) .ToList()).ToList(); var responseWords = message.SelectMany(chat => chat.Response .Split(new string[] { " ", ",", "." }, StringSplitOptions.RemoveEmptyEntries) .Select(i => new Data.DWH.Model.Dimensions.SingleWord { Text = SaniziteWord(i) }) .ToList()).ToList(); var wordsToUpsert = requestWords.Concat(responseWords).ToList(); var usersToUpsert = userTos.Concat(userFroms).ToList(); await _dwhRepository.UpsertAsync(channels); await _dwhRepository.UpsertAsync(conversationTracks); await _dwhRepository.UpsertAsync(languages); await _dwhRepository.UpsertAsync(messageTypes); await _dwhRepository.UpsertAsync(usersToUpsert); await _dwhRepository.UpsertAsync(wordsToUpsert); }