コード例 #1
0
        public IActionResult OnGet(TournamentSortState sortState = TournamentSortState.StatusAsc)
        {
            var userId      = User.FindFirst(ClaimTypes.NameIdentifier).Value;
            var tournaments = tournamentRepository.GetActiveStudentTournament(userId, sortState);

            List <StudentTournamentModel> studentTournaments = new List <StudentTournamentModel>();

            if (tournaments != null)
            {
                foreach (var item in tournaments)
                {
                    studentTournaments.Add(new StudentTournamentModel
                    {
                        Id               = item.TournamentId,
                        Name             = item.Name,
                        DueDate          = item.DueDate,
                        LecturerFullName = item.Owner.FirstName + " " + item.Owner.SecondName,
                        Status           = item.Status
                    });
                }
            }

            ViewModel = new StudentTournamentIndexViewModel
            {
                Tournaments   = studentTournaments,
                SortViewModel = new TournamentIndexSortViewModel(sortState)
            };

            return(Page());
        }
コード例 #2
0
        public IActionResult OnGet(int p = 1, TournamentSortState sortState = TournamentSortState.CreatedAtAsc)
        {
            int size = 15;
            IEnumerable <Tournament> tournaments;

            if (User.IsInRole("Admin"))
            {
                tournaments = repository.GetTournaments(p, size, sortState);
            }
            else
            {
                var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value;
                tournaments = repository.GetTournaments(userId, p, size, sortState);
            }

            var count = tournaments.Count();

            ViewModel = new TournamentIndexViewModel
            {
                SortViewModel = new TournamentIndexSortViewModel(sortState),
                PageViewModel = new PageViewModel(count, p, size),
                Tournaments   = tournaments
            };

            return(Page());
        }
コード例 #3
0
        public TournamentIndexSortViewModel(TournamentSortState sortState)
        {
            DueDate = sortState == TournamentSortState.DueDateAsc ? TournamentSortState.DueDateDesc : TournamentSortState.DueDateAsc;
            Status  = sortState == TournamentSortState.StatusAsc ? TournamentSortState.StatusDesc : TournamentSortState.StatusAsc;

            Current = sortState;
        }
コード例 #4
0
        public TournamentIndexSortViewModel(TournamentSortState sortState)
        {
            DueDate   = sortState == TournamentSortState.DueDateAsc ? TournamentSortState.DueDateDesc : TournamentSortState.DueDateAsc;
            CreatedAt = sortState == TournamentSortState.CreatedAtAsc ? TournamentSortState.CreatedAtDesc : TournamentSortState.CreatedAtAsc;
            Status    = sortState == TournamentSortState.StatusAsc ? TournamentSortState.StatusDesc : TournamentSortState.StatusAsc;
            Owner     = sortState == TournamentSortState.OwnerAsc ? TournamentSortState.OwnerDesc : TournamentSortState.OwnerAsc;

            Current = sortState;
        }
コード例 #5
0
        public IEnumerable <Tournament> GetActiveStudentTournament(string userId, TournamentSortState sortState)
        {
            IQueryable <Tournament> tournaments = GetStudentQuery(userId);

            tournaments = tournaments.Where(x => x.Status == TournamentStatus.Active || x.Status == TournamentStatus.Completed);
            tournaments = ApplySort(tournaments, sortState);

            return(tournaments.ToList());
        }
コード例 #6
0
        /// <summary>
        /// Returns all tournamnets. For Admin use
        /// </summary>
        /// <param name="p"></param>
        /// <param name="size"></param>
        /// <param name="sortState"></param>
        /// <returns></returns>
        public IEnumerable <Tournament> GetTournaments(int p, int size, TournamentSortState sortState)
        {
            IQueryable <Tournament> tournaments = GetLecturerQuery();

            tournaments = ApplySort(tournaments, sortState);

            var items = Paginate(tournaments, p, size);

            return(items);
        }
コード例 #7
0
        private IQueryable <Tournament> ApplySort(IQueryable <Tournament> tournaments, TournamentSortState sortState)
        {
            switch (sortState)
            {
            case TournamentSortState.DueDateAsc:
                tournaments = tournaments.OrderBy(x => x.DueDate);
                break;

            case TournamentSortState.DueDateDesc:
                tournaments = tournaments.OrderByDescending(x => x.DueDate);
                break;

            case TournamentSortState.CreatedAtAsc:
                tournaments = tournaments.OrderBy(x => x.CreatedAt);
                break;

            case TournamentSortState.CreatedAtDesc:
                tournaments = tournaments.OrderByDescending(x => x.CreatedAt);
                break;

            case TournamentSortState.StatusAsc:
                tournaments = tournaments.OrderBy(x => x.Status);
                break;

            case TournamentSortState.StatusDesc:
                tournaments = tournaments.OrderByDescending(x => x.Status);
                break;

            case TournamentSortState.OwnerAsc:
                tournaments = tournaments.OrderBy(x => x.Owner.FirstName);
                break;

            case TournamentSortState.OwnerDesc:
                tournaments = tournaments.OrderByDescending(x => x.Owner.FirstName);
                break;
            }

            return(tournaments);
        }