private List<UserStatistics> GetUserStatisticForCategory()
{
var participants = context.UserEvents.Where(x => x.Event.CategoryId == categoryId).GroupBy(x => x.User.Name).ToList();
var winners = context.Winners.Where(x => x.CatogoryId == categoryId).ToList();
var statistics = new List<UserStatistics>();
foreach (var participant in participants)
{
var wins = winners.Where(x => x.User.Name.Equals(participant.Key)).Count();
var numberOfParticipations = participant.Count() + wins;
var losses = numberOfParticipations - wins;
statistics.Add(
new UserStatistics {
Name = participant.Key,
Wins = wins,
NumberOfParticipations = numberOfParticipations,
Losses = losses
});
}
var groupWinners = winners.GroupBy(x => x.User.Name).ToList();
foreach (var winner in groupWinners)
{
if (statistics.Where(x => x.Name.Equals(winner.Key)).Count() == 0)
{
var wins = winner.Count();
var numberOfParticipations = wins;
var losses = 0;
statistics.Add(
new UserStatistics
{
Name = winner.Key,
Wins = wins,
NumberOfParticipations = numberOfParticipations,
Losses = losses
});
}
}
return statistics;
}