Пример #1
0
        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()));
        }
Пример #3
0
        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()));
        }
Пример #4
0
        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));
        }