AssessmentAnywhere.Controllers.AssessmentEditorController.Update C# (CSharp) Метод

Update() приватный Метод

private Update ( System.Guid id, UpdateModel model ) : System.Web.Mvc.ActionResult
id System.Guid
model UpdateModel
Результат System.Web.Mvc.ActionResult
        public ActionResult Update(Guid id, UpdateModel model)
        {
            var assessment = this.assessmentsRepo.Open(id);

            model.Validate(this.ModelState);

            if (!ModelState.IsValid)
            {
                bool hasBoundaries;
                var boundaries = this.gradeBoundariesRepo.TryOpen(id, out hasBoundaries);
                var viewModel = hasBoundaries ? new EditModel(id, model, boundaries) : new EditModel(id, model);

                return this.View("Edit", viewModel);
            }

            if (model.Name != assessment.Name)
            {
                assessment.SetName(model.Name);
                this.assessmentIndex.Set(id, model.Name);
            }

            // Check for total marks update.
            if (model.TotalMarks != assessment.TotalMarks)
            {
                assessment.SetTotalMarks(model.TotalMarks);
            }

            // Check for updates
            int? lastSelectedResult = null;
            if (model.Results != null)
            {
                foreach (var modelResult in model.Results)
                {
                    var assessmentResult = assessment.Results.Single(r => r.Id == modelResult.RowId);

                    if (modelResult.Forenames != assessmentResult.Forenames
                        || modelResult.Surname != assessmentResult.Surname)
                    {
                        assessment.SetCandidateNames(assessmentResult.Id, modelResult.Surname, modelResult.Forenames);
                    }

                    if (modelResult.Result != assessmentResult.Result)
                    {
                        lastSelectedResult = model.Results.IndexOf(modelResult);
                        assessment.SetCandidateResult(assessmentResult.Id, modelResult.Result);
                    }
                }
            }

            // Check for new row
            if (!string.IsNullOrWhiteSpace(model.NewRow.Surname) && !string.IsNullOrWhiteSpace(model.NewRow.Forenames))
            {
                var newCandidateId = assessment.AddCandidate(model.NewRow.Surname, model.NewRow.Forenames);
                if (model.NewRow.Result.HasValue)
                {
                    assessment.SetCandidateResult(newCandidateId, model.NewRow.Result.Value);
                }
            }

            return this.RedirectToAction("Edit", new { id, lastSelectedResult });
        }