public ActionResult Create( [DataSourceRequest] DataSourceRequest request, ViewModelType model) { if (!this.IsModelAndContestValid(model)) { return(this.GridOperation(request, model)); } if (!this.contestsData.IsOnlineById(model.ContestId)) { this.ModelState.AddModelError( string.Empty, string.Format(Resource.Can_create_only_in_online_contest, nameof(ContestType.OnlinePracticalExam))); return(this.GridOperation(request, model)); } if (this.contestsData.IsActiveById(model.ContestId)) { this.ModelState.AddModelError(string.Empty, Resource.Active_contest_cannot_add_problem_group); return(this.GridOperation(request, model)); } var problemGroup = model.GetEntityModel(); problemGroup.Type = model.Type.GetValidTypeOrNull(); model.Id = (int)this.BaseCreate(problemGroup); return(this.GridOperation(request, model)); }
public ActionResult Update([DataSourceRequest] DataSourceRequest request, ViewModelType model) { var existingProblemGroup = this.GetByIdAsNoTracking(model.Id); if (existingProblemGroup == null || !this.IsModelAndContestValid(model)) { return(this.GridOperation(request, model)); } if (existingProblemGroup.OrderBy != model.OrderBy && !this.contestsData.IsOnlineById(model.ContestId)) { this.ModelState.AddModelError( string.Empty, string.Format( Resource.Can_edit_orderby_only_in_online_contest, ContestType.OnlinePracticalExam.GetDescription())); return(this.GridOperation(request, model)); } var newProblemGroup = model.GetEntityModel(existingProblemGroup); newProblemGroup.Type = model.Type.GetValidTypeOrNull(); this.BaseUpdate(newProblemGroup); return(this.GridOperation(request, model)); }
private bool IsModelAndContestValid(ViewModelType model) { if (string.IsNullOrWhiteSpace(model.ContestName)) { this.ModelState.AddModelError(nameof(model.ContestName), Resource.Contest_required); return(false); } if (!this.contestsData.ExistsById(model.ContestId)) { this.ModelState.AddModelError(nameof(model.ContestName), Resource.Contest_does_not_exist); return(false); } if (!this.CheckIfUserHasContestPermissions(model.ContestId)) { this.ModelState.AddModelError(string.Empty, GeneralResource.No_privileges_message); } return(this.ModelState.IsValid); }
public ActionResult Destroy([DataSourceRequest] DataSourceRequest request, ViewModelType model) { if (!this.IsModelAndContestValid(model)) { return(this.GridOperation(request, model)); } if (this.contestsData.IsActiveById(model.ContestId)) { this.ModelState.AddModelError(string.Empty, Resource.Active_contest_cannot_delete_problem_group); return(this.GridOperation(request, model)); } var result = this.problemGroupsBusiness.DeleteById(model.Id); if (result.IsError) { this.ModelState.AddModelError(string.Empty, result.Error); } return(this.GridOperation(request, model)); }