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