コード例 #1
0
        public async Task <TheMostData> GetMostFavouriteDrinkData(DateTime start, DateTime end)
        {
            var favouritesActivities = await _activitiesRepository.Get(x =>
                                                                       x.Created > start && x.Created < end && x.Action == PerformedAction.AddedToFavourite);

            var mostFavouriteData = new TheMostData();

            if (favouritesActivities.Count == 0)
            {
                mostFavouriteData.Count = 0;
                mostFavouriteData.Name  = "none";
            }
            else
            {
                var data = favouritesActivities
                           .GroupBy(x => x.DrinkId)
                           .Select(x => new
                {
                    drinkId         = x.Key,
                    drinkName       = x.Select(x => x.DrinkName).First(),
                    favouritesCount = x.Count()
                })
                           .OrderByDescending(x => x.favouritesCount)
                           .First();
                mostFavouriteData.Name  = data.drinkName;
                mostFavouriteData.Count = data.favouritesCount;
            }
            return(mostFavouriteData);
        }
コード例 #2
0
        public async Task <TheMostData> GetMostVisitedDrinkData(string username)
        {
            var activities =
                await _activitiesRepository.Get(x => x.Username == username && x.Action == PerformedAction.VisitedDrink);

            var mostVisitedDrink = new TheMostData();

            if (activities.Count.Equals(0))
            {
                mostVisitedDrink.Count   = 0;
                mostVisitedDrink.Name    = "none";
                mostVisitedDrink.DrinkId = null;
            }
            else
            {
                var data = activities
                           .GroupBy(x => x.DrinkId)
                           .Select(x => new
                {
                    drinkId      = x.Key,
                    visitedCount = x.Count(),
                    drinkName    = x.Select(x => x.DrinkName).First()
                })
                           .OrderByDescending(x => x.visitedCount)
                           .First();
                mostVisitedDrink.Count   = data.visitedCount;
                mostVisitedDrink.Name    = data.drinkName;
                mostVisitedDrink.DrinkId = data.drinkId;
            }
            return(mostVisitedDrink);
        }
コード例 #3
0
        public async Task <TheMostData> GetMostActiveUser(DateTime start, DateTime end)
        {
            var allActivities = await _activitiesRepository.Get(x => x.Created > start && x.Created < end);

            var mostActiveUser = new TheMostData();

            if (allActivities.Count == 0)
            {
                mostActiveUser.Name  = "none";
                mostActiveUser.Count = 0;
            }
            else
            {
                var data = allActivities
                           .GroupBy(x => x.Username, activity => activity.Action)
                           .Select(x => new { username = x.Key, activitiesCount = x.Count() })
                           .OrderByDescending(x => x.activitiesCount)
                           .First();
                mostActiveUser.Name  = data.username;
                mostActiveUser.Count = data.activitiesCount;
            }
            return(mostActiveUser);
        }