public async Task <IActionResult> Index() { var currentSemester = await semestersRepository.FindCurrentSemesterAsync(); var users = await usersRepository.GetUsersWithLinksAsync(); var usersViewModels = new List <UserViewModel>(users.Count); foreach (var item in users) { var eventsCount = (currentSemester != null) ? item.UserEvents.Count(ue => ue.Event.SemesterId == currentSemester.Id) : item.UserEvents.Count(); usersViewModels.Add(new UserViewModel() { Id = item.Id, Name = item.UserName, AchievementsCount = item.UserAchievements.Count(), EventsCount = eventsCount, Position = item.Position.GetDescription() }); } var viewModel = new UsersViewModel() { Users = usersViewModels.OrderByDescending(u => u.AchievementsCount).ThenByDescending(u => u.EventsCount) }; return(View(viewModel)); }
private async Task <IEnumerable <IOrderedEnumerable <AchievementProgressViewModel> > > GetAchievementsProgressInGroups(string login) { var user = await userManager.Users .Include(u => u.ParameterValues) .Include(u => u.UserAchievements) .FirstOrDefaultAsync(u => u.UserName == login); var groups = await achievementsGroupsRepository.GetAchievementsGroupsAsync(); var semester = await semestersRepository.FindCurrentSemesterAsync(); var progressGroups = new List <IOrderedEnumerable <AchievementProgressViewModel> >(); foreach (var group in groups.Where(g => g.Ahievements.Any())) { var progressGroup = new List <AchievementProgressViewModel>(); var filteredAchievements = semester == null ? group.Ahievements : group.Ahievements.Where( a => a.SemesterId == null || a.SemesterId == semester.Id || user.UserAchievements.Any(ua => ua.AchievementId == a.Id) ); foreach (var achievement in filteredAchievements) { var linkedParameterValue = user.ParameterValues.Where(pv => pv.ParameterId == achievement.ParameterId).FirstOrDefault(); var progress = new AchievementProgressViewModel() { AchievementId = achievement.Id, AchievementName = achievement.Name, AchievementDescription = achievement.Description, NumberInGroup = achievement.NumberInGroup, AchievementValue = achievement.AchievementValue, LinkedParameterValue = linkedParameterValue?.Value, IsReceived = user.UserAchievements.Any(ua => ua.AchievementId == achievement.Id), AchievementType = achievement.AchievementType }; progressGroup.Add(progress); } progressGroups.Add(progressGroup.OrderBy(ap => ap.NumberInGroup)); } return(progressGroups.Where(g => g.Any())); }
private async Task <IEnumerable <IOrderedEnumerable <Achievement> > > GetAchievementsInGroups() { var groups = await achievementsGroupsRepository.GetAchievementsGroupsAsync(); var currentSemester = await semestersRepository.FindCurrentSemesterAsync(); IEnumerable <IOrderedEnumerable <Achievement> > result; if (currentSemester != null) { result = groups?.Select(g => g.Ahievements.Where(a => a.SemesterId == null || a.SemesterId == currentSemester.Id).OrderBy(a => a.NumberInGroup)); } else { result = groups?.Select(g => g.Ahievements.OrderBy(a => a.NumberInGroup)); } return(result.Where(g => g.Any())); }
public async Task <IActionResult> Index() { var semester = await semestersRepository.FindCurrentSemesterAsync(); var events = semester != null ? (await eventsRepository.GetEventsAsync(semester.Id)).OrderBy(x => x.Date) : (await eventsRepository.GetEventsAsync()).OrderBy(x => x.Date); var futureEvents = events.Where(e => e.Date > DateTime.Now.Date); var pastEvents = events.Except(futureEvents); var viewModel = new EventsViewModel() { PastEvents = pastEvents, FutureEvents = futureEvents }; return(View(viewModel)); }