public async Task<ActionResult> Put(int id, ContestModel contest) { var userId = User.Identity.GetUserId(); Expression<Func<Contest, bool>> wherePredicate; if (User.IsInRole("Admin")) { wherePredicate = c => c.Id == id && c.State == TypeOfEnding.Ongoing; } else { wherePredicate = c => c.Id == id && c.OwnerId == userId && c.State == TypeOfEnding.Ongoing; } var contestDb = await this.Data.Contests.All().Where(wherePredicate).FirstOrDefaultAsync(); if (contestDb == null) { ModelState.AddModelError("", "This contest does not exist"); return View("add", contest); } contestDb.Title = contest.Title; contestDb.Description = contest.Description; contestDb.DeadlineStrategy = contest.DeadlineStrategy; contestDb.LastUpdated = DateTime.Now; contestDb.MaxParticipationsCount = contest.MaxParticipationsCount; contestDb.ParticipationEndTime = contest.ParticipationEndTime; contestDb.ParticipationStrategy = contest.ParticipationStrategy; contestDb.PossibleWinnersCount = contest.PossibleWinnersCount; contestDb.VotingStrategy = contest.VotingStrategy; await this.Data.SaveChangesAsync(); TempData["msg"] = "The contest was edited"; return RedirectToAction("GetUserContests", "User"); }
public ActionResult Post(ContestModel contest) { if (!ModelState.IsValid) { return View("add", contest); } if (contest.ParticipationEndTime == null && contest.MaxParticipationsCount == null) { ModelState.AddModelError("", "You have to choose end date or max pariticpations count"); return View("add", contest); } var userId = User.Identity.GetUserId(); var newContest = new Contest() { Title = contest.Title, Description = contest.Description, CreatedOn = DateTime.Now, DeadlineStrategy = contest.DeadlineStrategy, MaxParticipationsCount = contest.MaxParticipationsCount, OwnerId = userId, ParticipationEndTime = contest.ParticipationEndTime, ParticipationStrategy = contest.ParticipationStrategy, PossibleWinnersCount = contest.PossibleWinnersCount, State = TypeOfEnding.Ongoing, VotingStrategy = contest.VotingStrategy, LastUpdated = DateTime.Now }; this.Data.Contests.Add(newContest); this.Data.SaveChanges(); return RedirectToAction("Index", "Prize", new { ContestId = newContest.Id, countOfPrizes = newContest.PossibleWinnersCount }); }