public ActionResult Create([DataSourceRequest] DataSourceRequest request, ViewModelType model) { if (!model.ContestId.HasValue) { this.ModelState.AddModelError(nameof(model.ContestId), string.Empty); return(this.GridOperation(request, model)); } var contestId = this.contestsData .GetByIdQuery(model.ContestId.Value) .Select(c => c.Id) .FirstOrDefault(); if (contestId == default(int)) { this.ModelState.AddModelError(nameof(model.ContestId), string.Empty); return(this.GridOperation(request, model)); } if (!this.UserHasContestRights(contestId)) { this.ModelState.AddModelError(nameof(model.ContestId), Resource.Cannot_attach_contest); return(this.GridOperation(request, model)); } model.Id = (int)this.BaseCreate(model.GetEntityModel()); return(this.GridOperation(request, model)); }
public ActionResult Update([DataSourceRequest] DataSourceRequest request, ViewModelType model) { if (!model.Id.HasValue) { return(this.GridOperation(request, model)); } var examGroup = model.GetEntityModel(this.GetByIdAsNoTracking(model.Id.Value)); if (examGroup.ContestId.HasValue) { if (!this.contestsData.ExistsById(examGroup.ContestId.Value)) { this.ModelState.AddModelError(nameof(model.ContestId), string.Empty); return(this.GridOperation(request, model)); } if (!this.UserHasContestRights(examGroup.ContestId.Value)) { this.ModelState.AddModelError(nameof(model.ContestId), Resource.Cannot_attach_contest); return(this.GridOperation(request, model)); } } this.BaseUpdate(examGroup); return(this.GridOperation(request, model)); }
public ActionResult Destroy([DataSourceRequest] DataSourceRequest request, ViewModelType model) { if (model.ContestId != null) { if (!this.UserHasContestRights(model.ContestId.Value)) { this.ModelState.AddModelError(string.Empty, GeneralResource.No_privileges_message); return(this.GridOperation(request, model)); } if (this.contestsData.IsActiveById(model.ContestId.Value)) { this.ModelState.AddModelError(string.Empty, Resource.Cannot_delete_group_with_active_contest); return(this.GridOperation(request, model)); } } this.BaseDestroy(model.Id); return(this.GridOperation(request, model)); }