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); }
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); }
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); }