public bool AddRewards(int id, CreateRewardsBindingModel model, string userId)
        {
            var contest = this.Data.Contests.Find(id);

            if (contest == null)
            {
                throw new NotFoundException("Contest not found");
            }

            if (contest.Status != ContestStatus.Active)
            {
                throw new BadRequestException("Cannot add reward to inactive contest.");
            }

            for (int i = 0; i < model.Name.Length; i++)
            {
                if (model.Place[i] < 1 || (contest.TopNPlaces != null && model.Place[i] > contest.TopNPlaces))
                {
                    throw new BadRequestException("Reward for unknown place");
                }

                contest.Rewards.Add(new Reward()
                {
                    ContestId = contest.Id,
                    Name = model.Name[i],
                    Description = model.Description[i],
                    Place = model.Place[i],
                    ImageUrl = model.ImageUrl[i]
                });
            }

            this.Data.SaveChanges();

            return true;
        }
        public ActionResult AddRewards(int id, CreateRewardsBindingModel model)
        {
            if (model == null)
            {
                this.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return this.Json(new {ErrorMessage = "Missing data"});
            }

            try
            {
                this._service.AddRewards(id, model, this.User.Identity.GetUserId());

                return this.RedirectToAction("PreviewContest", new { id = id });

            }
            catch (NotFoundException exception)
            {
                return this.HttpNotFound(exception.Message);
            }
            catch (BadRequestException exception)
            {
                this.Response.StatusCode = (int) HttpStatusCode.BadRequest;
                return this.Json(new {ErrorMessage = exception.Message});
            }
        }