public async Task<ActionResult> Edit(ModifyInstructorAndCoursesViewModel viewModel)
        {
            var request = new InstructorModifyAndCourses.Request(SystemPrincipal.Name, viewModel.CommandModel);
            var response = DomainServices.Dispatch(request);

            if (response.HasValidationIssues)
            {
                ModelState.AddRange(response.ValidationDetails);
                await PopulateAssignedCourseData(viewModel.SelectedCourses);
                return View(viewModel);
            }

            return RedirectToAction("Index");
        }
        public async Task <ActionResult> Edit(ModifyInstructorAndCoursesViewModel viewModel)
        {
            var request  = new InstructorModifyAndCourses.Request(SystemPrincipal.Name, viewModel.CommandModel);
            var response = DomainServices.Dispatch(request);

            if (response.HasValidationIssues)
            {
                ModelState.AddRange(response.ValidationDetails);
                await PopulateAssignedCourseData(viewModel.SelectedCourses);

                return(View(viewModel));
            }

            return(RedirectToAction("Index"));
        }
        // Modify instructor with course
        public static InstructorModifyAndCourses.Response Handle(IRepository repository, InstructorModifyAndCourses.Request request)
        {
            var commandModel = request.CommandModel;
            var instructor   = repository.GetEntity <Instructor>(
                p => p.ID == commandModel.InstructorId,
                new EagerLoadingQueryStrategy <Instructor>(
                    p => p.Courses,
                    p => p.OfficeAssignment));

            var container         = instructor.Modify(repository, request.CommandModel);
            var validationDetails = repository.Save(container);

            return(new InstructorModifyAndCourses.Response(validationDetails));
        }