public async Task <IEnumerable <Subtheme> > Synchronize(string apiKey, Theme theme) { _messageHub.Publish(new SubthemeSynchronizerStart()); var subthemes = new List <Subtheme>(); try { var getSubthemesParameters = new ParameterTheme { ApiKey = apiKey, Theme = theme.Name }; var bricksetSubthemes = (await _bricksetApiService.GetSubthemes(getSubthemesParameters)).ToList(); _messageHub.Publish(new SubthemesAcquired { Theme = theme.Name, Count = bricksetSubthemes.Count }); foreach (var bricksetSubtheme in bricksetSubthemes) { _messageHub.Publish(new SynchronizingSubthemeStart { Theme = theme.Name, Subtheme = bricksetSubtheme.Subtheme }); try { var subtheme = bricksetSubtheme.ToSubtheme(); subtheme.Theme = theme; var persistedSubtheme = _subthemeRepository.Get(subtheme.Theme.Name, subtheme.Name); if (persistedSubtheme != null) { subtheme.Id = persistedSubtheme.Id; } _subthemeRepository.AddOrUpdate(subtheme); subthemes.Add(subtheme); } catch (Exception ex) { _messageHub.Publish(new SynchronizingSubthemeException { Theme = theme.Name, Subtheme = bricksetSubtheme.Subtheme, Exception = ex }); } _messageHub.Publish(new SynchronizingSubthemeEnd { Theme = theme.Name, Subtheme = bricksetSubtheme.Subtheme }); } } catch (Exception ex) { _messageHub.Publish(new SubthemeSynchronizerException { Theme = theme.Name, Exception = ex }); } _messageHub.Publish(new SubthemeSynchronizerEnd()); return(subthemes); }
public async Task <IEnumerable <Years> > GetYears(ParameterTheme getYearsParameters) { return((await BricksetHttpPostUrlEncodeAsync <ResultGetYears, ParameterTheme>(getYearsParameters).ConfigureAwait(false)).Years); }
public async Task <IEnumerable <Theme> > Synchronize(string apiKey) { _messageHub.Publish(new ThemeSynchronizerStart()); var themeList = new List <Theme>(); try { var getThemesParameters = new ParameterApiKey { ApiKey = apiKey }; var bricksetThemes = (await _bricksetApiService.GetThemes(getThemesParameters).ConfigureAwait(false)).ToList(); _messageHub.Publish(new ThemesAcquired { Count = bricksetThemes.Count }); foreach (var bricksetTheme in bricksetThemes) { _messageHub.Publish(new SynchronizingThemeStart { Theme = bricksetTheme.Theme }); try { var theme = bricksetTheme.ToTheme(); var getYearsParameters = new ParameterTheme { ApiKey = apiKey, Theme = bricksetTheme.Theme }; theme.SetCountPerYear = (await _bricksetApiService.GetYears(getYearsParameters).ConfigureAwait(false)) .ToYearSetCountEnumerable() .ToList(); var persistedTheme = _themeRepository.Get(theme.Name); if (persistedTheme != null) { theme.Id = persistedTheme.Id; } _themeRepository.AddOrUpdate(theme); themeList.Add(theme); } catch (Exception ex) { _messageHub.Publish(new SynchronizingThemeException { Theme = bricksetTheme.Theme, Exception = ex }); } _messageHub.Publish(new SynchronizingThemeEnd { Theme = bricksetTheme.Theme }); } } catch (Exception ex) { _messageHub.Publish(new ThemeSynchronizerException { Exception = ex }); } _messageHub.Publish(new ThemeSynchronizerEnd()); return(themeList); }