public IActionResult EditTestResult(EditTestResultViewModel viewModel)
        {
            var progress = _database.ScorecardsInProgress.Find(viewModel.Result.ProgressID);

            progress.AddOrUpdateResult(viewModel.Test.ID, viewModel.Test.CategoryID, Strings.TestStatus.FromString(viewModel.SelectedStatus) ?? false, viewModel.Result.Notes);

            _database.ScorecardsInProgress.Update(progress);
            _database.SaveChanges();

            return(RedirectToAction("Progress", new { id = viewModel.Result.ProgressID, testID = viewModel.Test.ID }));
        }
        public IActionResult EditTestResult(Guid id, Guid testID)
        {
            var progress = _database.ScorecardsInProgress.Find(id);
            var test     = _database.ScorecardTests.Find(testID);

            var result = progress.GetResults().FirstOrDefault(r => r.TestID == testID);

            if (result == null)
            {
                result = new ScorecardTestResultModel
                {
                    ProgressID = progress.ID,
                    TestID     = testID,
                    CategoryID = test.CategoryID
                };
            }

            var statusOptions = new List <string>()
            {
                Strings.TestStatus.Passed,
                Strings.TestStatus.Failed,
                Strings.TestStatus.NotStarted,
            };

            statusOptions.Remove(Strings.TestStatus.GetString(result.Passed));

            var viewModel = new EditTestResultViewModel
            {
                Test           = test,
                Result         = result,
                StatusOptions  = new SelectList(statusOptions),
                SelectedStatus = Strings.TestStatus.GetString(result.Passed)
            };

            return(View(viewModel));
        }