Ejemplo n.º 1
0
        public async Task <IActionResult> OnGetAsync(int id)
        {
            var defaultRedirections = new DefaultRedirections(this);

            if (!User.Identity.IsAuthenticated)
            {
                return(defaultRedirections.ToLoginPage(HttpContext.Request.Path));
            }

            var task = await _context.Tasks.FindAsync(id);

            SolveTaskViewModel = MapToSolveTaskViewModel(task);
            TaskId             = task.Id;
            TempData.Keep(nameof(TaskId));

            var taskCreatorId = task.Contest.IdentityUser.Id;
            var currentUserId = _userManager.GetUserId(User);

            if (currentUserId == taskCreatorId || task.Contest.Status == Contest.ContestState.NotStarted)
            {
                return(defaultRedirections.ToAccessDeniedPage(HttpContext.Request.Path));
            }

            return(Page());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> OnGetAsync(int id)
        {
            var defaultRedirections = new DefaultRedirections(this);

            if (!User.Identity.IsAuthenticated)
            {
                return(defaultRedirections.ToLoginPage(HttpContext.Request.Path));
            }

            var task = await _context.Tasks.FindAsync(id);

            var contestOwnerId = task.Contest.IdentityUser.Id;
            var currentUserId  = _userManager.GetUserId(User);

            if (currentUserId != contestOwnerId)
            {
                return(defaultRedirections.ToAccessDeniedPage(HttpContext.Request.Path));
            }

            FormTask = MapToEditTaskViewModel(task);
            TaskId   = id;
            TempData.Keep(nameof(TaskId));

            UpdateScorePolicies();

            return(Page());
        }
Ejemplo n.º 3
0
        public async System.Threading.Tasks.Task <IActionResult> OnGetAsync(int id)
        {
            var defaultRedirections = new DefaultRedirections(this);

            if (!User.Identity.IsAuthenticated)
            {
                return(defaultRedirections.ToLoginPage(HttpContext.Request.Path));
            }

            var contest = await _context.Contests.FindAsync(id);

            var contestOwnerId = contest.IdentityUser.Id;
            var currentUserId  = _userManager.GetUserId(User);

            if (currentUserId != contestOwnerId)
            {
                return(defaultRedirections.ToAccessDeniedPage(HttpContext.Request.Path));
            }

            ContestViewModel = CreateContestViewModel(contest);
            StatusButtons    = CreateStatusButtons(contest.Status);
            FormTask         = new AddTaskViewModel();
            TasksToDisplay   = contest.Tasks.Select(MapToDisplayViewModel).ToList();

            ContestId = id;
            TempData.Keep(nameof(ContestId));

            UpdateContestSolutions();
            UpdateScorePolicies();

            return(Page());
        }
Ejemplo n.º 4
0
        public async System.Threading.Tasks.Task <IActionResult> OnGetAsync(int id)
        {
            var defaultRedirections = new DefaultRedirections(this);

            if (!User.Identity.IsAuthenticated)
            {
                return(defaultRedirections.ToLoginPage(HttpContext.Request.Path));
            }

            var contest = await _context.Contests.FindAsync(id);

            Contest = MapToDisplayViewModel(contest);

            var currentUserId = _userManager.GetUserId(User);

            if (currentUserId == Contest.OwnerId)
            {
                return(defaultRedirections.ToAccessDeniedPage(HttpContext.Request.Path));
            }

            return(Page());
        }
Ejemplo n.º 5
0
        public async Task <IActionResult> OnGetAsync(int id)
        {
            var defaultRedirections = new DefaultRedirections(this);

            if (!User.Identity.IsAuthenticated)
            {
                return(defaultRedirections.ToLoginPage(HttpContext.Request.Path));
            }

            ContestId = id;
            var contestsUsersQuery = ContestsUsersQuery.Create(id);
            var contestsUsers      = await _contestsUsersQueryHandler.HandleAsync(contestsUsersQuery);

            var contest = await _context.Contests.FindAsync(id);

            var contestOwnerId = contest.IdentityUser.Id;
            var currentUserId  = _userManager.GetUserId(User);

            if (!contestsUsers.UserIds.Append(contestOwnerId).Contains(currentUserId) || contest.Status != Contest.ContestState.Completed)
            {
                return(defaultRedirections.ToAccessDeniedPage(HttpContext.Request.Path));
            }

            UsersResults = new List <UserResultsViewModel>();

            IEnumerable <string> usersToIterateOver = contestOwnerId == currentUserId ?
                                                      contestsUsers.UserIds : new[] { currentUserId };

            var ranking = await ContestRanking(contestsUsers.UserIds);

            foreach (var userId in usersToIterateOver)
            {
                var userResults = await AggregateUserResults(userId, ranking);

                UsersResults.Add(userResults);
            }

            return(Page());
        }