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()); }
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()); }
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()); }
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()); }
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()); }