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