Пример #1
0
        private static async Task <Rating> GetDocumentAsync(string ratingId)
        {
            var documentClientDetails = await DocumentDbClientFactory.GetRatingsClientAsync();

            var docUri = UriFactory.CreateDocumentUri("IceCreamApp", "Ratings", ratingId);

            return(await documentClientDetails.DocumentClient.ReadDocumentAsync <Rating>(docUri));
        }
Пример #2
0
        private static async Task <Rating> CreateRatingAsync(Rating rating)
        {
            var documentClientDetails = await DocumentDbClientFactory.GetRatingsClientAsync();

            var document = await documentClientDetails.DocumentClient.CreateDocumentAsync(documentClientDetails.DocumentCollectionLink, rating);

            return((Rating)((dynamic)document.Resource));
        }
Пример #3
0
        private static async Task ProcessSentiments()
        {
            var fetchRatingsTask  = FetchRatingsAsync();
            var fetchProductsTask = FetchProductsAsync();

            await Task.WhenAll(fetchRatingsTask, fetchProductsTask);

            var ratings  = fetchRatingsTask.Result;
            var products = fetchProductsTask.Result;

            var sentimentScores = products.GroupJoin(ratings, pi => pi.productid, r => r.ProductId, (pi, r) => new SentimentReportingItem()
            {
                Id                  = pi.productid,
                ProductId           = pi.productid,
                ProductName         = pi.productname,
                TotalRatings        = r.Count(),
                TotalSentimentScore = r.Sum(item => item.SentimentScore),
            });

            foreach (var sentimentScore in sentimentScores)
            {
                await UpsertDocumentAsync(sentimentScore, "SentimentScore", sentimentScore.Id);
            }

            async Task <IEnumerable <Rating> > FetchRatingsAsync()
            {
                var documentClientDetails = await DocumentDbClientFactory.GetRatingsClientAsync();

                var ratingsQuery = documentClientDetails.DocumentClient
                                   .CreateDocumentQuery <Rating>(documentClientDetails.DocumentCollectionLink)
                                   .AsDocumentQuery();

                var fetchedRatings = new List <Rating>();

                while (ratingsQuery.HasMoreResults)
                {
                    var results = await ratingsQuery.ExecuteNextAsync <Rating>();

                    fetchedRatings.AddRange(results);
                }

                return(fetchedRatings);
            }

            async Task <IEnumerable <ProductInfo> > FetchProductsAsync()
            {
                using (var response = await ApiHttpClient.GetAsync($"https://serverlessohlondonproduct.azurewebsites.net/api/GetProducts"))
                {
                    if (!response.IsSuccessStatusCode)
                    {
                        return(new List <ProductInfo>());
                    }

                    return(await response.Content.ReadAsAsync <IEnumerable <ProductInfo> >());
                }
            }
        }
Пример #4
0
        private static async Task <IEnumerable <Rating> > GetDocumentsAsync(string userId)
        {
            var documentClientDetails = await DocumentDbClientFactory.GetRatingsClientAsync();

            var ratingsQuery = documentClientDetails.DocumentClient.CreateDocumentQuery <Rating>(documentClientDetails.DocumentCollectionLink)
                               .Where(r => r.UserId == userId)
                               .AsDocumentQuery();

            var ratings = new List <Rating>();

            while (ratingsQuery.HasMoreResults)
            {
                var results = await ratingsQuery.ExecuteNextAsync <Rating>();

                ratings.AddRange(results);
            }

            return(ratings);
        }