public static async Task<ChangesViewModel> CreateAsync(IStatusDataRepository statusDataRepository, DateTime date) { var ieChangeSetsTask = GetChangeSetsByBrowser(statusDataRepository, StatusDataType.InternetExplorer, date); var chromeChangeSetsTask = GetChangeSetsByBrowser(statusDataRepository, StatusDataType.Chromium, date); var webkitWebCoreChangeSetsTask = GetChangeSetsByBrowser(statusDataRepository, StatusDataType.WebKitWebCore, date); var webkitJavaScriptCoreChangeSetsTask = GetChangeSetsByBrowser(statusDataRepository, StatusDataType.WebKitJavaScriptCore, date); var mozillaChangeSetsTask = GetChangeSetsByBrowser(statusDataRepository, StatusDataType.Mozilla, date); await Utility.Measure(() => Task.WhenAll( ieChangeSetsTask, chromeChangeSetsTask, webkitWebCoreChangeSetsTask, webkitJavaScriptCoreChangeSetsTask, mozillaChangeSetsTask)); var ieChangeSets = ieChangeSetsTask.Result; var chromeChangeSets = chromeChangeSetsTask.Result; var webkitWebCoreChangeSets = webkitWebCoreChangeSetsTask.Result; var webkitJavaScriptCoreChangeSets = webkitJavaScriptCoreChangeSetsTask.Result; var mozillaChangeSets = mozillaChangeSetsTask.Result; return new ChangesViewModel() { ChangeSets = new ChangeSetsViewModel() { IeChangeSet = ieChangeSets.Any() ? ieChangeSets[0] : null, ChromeChangeSet = chromeChangeSets.Any() ? chromeChangeSets[0] : null, WebKitWebCoreChangeSet = webkitWebCoreChangeSets.Any() ? webkitWebCoreChangeSets[0] : null, WebKitJavaScriptCoreChangeSet = webkitJavaScriptCoreChangeSets.Any() ? webkitJavaScriptCoreChangeSets[0] : null, MozillaChangeSet = mozillaChangeSets.Any() ? mozillaChangeSets[0] : null, }, Date = date, }; }
private static async Task<ChangeSet[]> GetChangeSetsByBrowserAsync(IStatusDataRepository statusDataRepository, StatusDataType type) { var statusDataSet = (await statusDataRepository.GetPlatformStatusesRangeAsync(type, DateTime.UtcNow.AddMonths(-6), DateTime.UtcNow, take: 30)) .OrderByDescending(x => x.Date) .ToArray(); if (statusDataSet.Length < 2) { return new ChangeSet[0]; } return ChangeSet.GetChangeSetsFromPlatformStatuses(statusDataSet); }
private static async Task<ChangeSet[]> GetChangeSetsByBrowser(IStatusDataRepository statusDataRepository, StatusDataType type, DateTime date) { var statusDataSet = (await Utility.Measure(() => statusDataRepository.GetPlatformStatusesRangeAsync(type, date.AddMonths(-6), date, take: 2))) .OrderByDescending(x => x.Date) .Take(2) .ToArray(); if (statusDataSet.Length < 2) { return new ChangeSet[0]; } return ChangeSet.GetChangeSetsFromPlatformStatuses(statusDataSet); }
public static async Task<HomeIndexViewModel> CreateAsync(IStatusDataRepository statusDataRepository) { #if !FALSE var ieChangeSetsTask = GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.InternetExplorer); var chromeChangeSetsTask = GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.Chromium); var webkitWebCoreChangeSetsTask = GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.WebKitWebCore); var webkitJavaScriptCoreChangeSetsTask = GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.WebKitJavaScriptCore); var mozillaChangeSetsTask = GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.Mozilla); var lastUpdatedTask = statusDataRepository.GetLastUpdated(); await Task.WhenAll(ieChangeSetsTask, chromeChangeSetsTask, webkitWebCoreChangeSetsTask, webkitJavaScriptCoreChangeSetsTask, mozillaChangeSetsTask, lastUpdatedTask); var ieChangeSets = ieChangeSetsTask.Result; var chromeChangeSets = chromeChangeSetsTask.Result; var webkitWebCoreChangeSets = webkitWebCoreChangeSetsTask.Result; var webkitJavaScriptCoreChangeSets = webkitJavaScriptCoreChangeSetsTask.Result; var mozillaChangeSets = mozillaChangeSetsTask.Result; var lastUpdated = lastUpdatedTask.Result; #else var ieChangeSets = await GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.InternetExplorer); var chromeChangeSets = await GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.Chromium); var webkitWebCoreChangeSets = await GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.WebKitWebCore); var webkitJavaScriptCoreChangeSets = await GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.WebKitJavaScriptCore); var mozillaChangeSets = await GetChangeSetsByBrowserAsync(statusDataRepository, StatusDataType.Mozilla); var lastUpdated = await statusDataRepository.GetLastUpdated(); #endif return new HomeIndexViewModel() { IeChangeSetsByDate = ieChangeSets.ToDictionary(k => k.Date, v => v), ChromeChangeSetsByDate = chromeChangeSets.ToDictionary(k => k.Date, v => v), WebKitWebCoreChangeSetsByDate = webkitWebCoreChangeSets.ToDictionary(k => k.Date, v => v), WebKitJavaScriptCoreChangeSetsByDate = webkitJavaScriptCoreChangeSets.ToDictionary(k => k.Date, v => v), MozillaChangeSetsByDate = mozillaChangeSets.ToDictionary(k => k.Date, v => v), Dates = new [] { ieChangeSets, chromeChangeSets, webkitWebCoreChangeSets, webkitJavaScriptCoreChangeSets, mozillaChangeSets } .SelectMany(x => x) .Where(x => x.Changes.Any()) .Select(x => x.Date) .Distinct() .ToArray(), LastUpdatedAt = lastUpdated, }; }
public DataUpdateAgent(IStatusDataRepository repository) { _statusDataRepository = repository; }