private void RetrieveWindowsStoreData(LuisMessage message) { Task.Run(async () => { var connector = new ConnectorClient(); var client = new Sparkiy.WindowsStore.Analytics.Client.AnalyticsClient(); await client.AuthorizeAsync(Keys.WindowsStoreAnalyticsId, Keys.WindowsStoreAnalyticsKey); var appNames = message.Luis.Entities.Where(e => e.Type == "StoreApp"); foreach (var entity in appNames) { // TODO Resolve application id from database string appId = string.Empty; if (entity.Entity == "sparkiy") appId = "9NBLGGH10R5Z"; else if (entity.Entity == "quantastic") appId = "9WZDNCRDRKSB"; else { connector.Messages.SendMessage( message.CreateReplyMessage($"I don't know an app named {entity.Entity}.", "en")); continue; } var storeResponse = (await client.GetAppAcquisitionsAsync(appId, DateTime.MinValue, DateTime.MaxValue, 1000, 0, true)).ToList(); var lastWeekDate = DateTime.Now.ToUniversalTime().Subtract(TimeSpan.FromDays(7)).ToUniversalTime().Date; var totalAcquisitionsCount = storeResponse .Sum(a => a.AcquisitionQuantity) .ToString(CultureInfo.InvariantCulture); var dayAcquisitionsCount = storeResponse .Where(a => a.Date >= lastWeekDate) .Sum(a => a.AcquisitionQuantity) .ToString(CultureInfo.InvariantCulture); connector.Messages.SendMessage( message.CreateReplyMessage( $"{entity.Entity} has total {totalAcquisitionsCount} (+{dayAcquisitionsCount} last 7 days) acquisitions", "en")); } }); }