public async Task<ActionResult> Create(CreateInstructorWithCoursesViewModel viewModel)
        {
            var request = new InstructorCreateWithCourses.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> Create(CreateInstructorWithCoursesViewModel viewModel)
        {
            var request  = new InstructorCreateWithCourses.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"));
        }
        // Update instructor with course
        public static InstructorCreateWithCourses.Response Handle(IRepository repository, InstructorCreateWithCourses.Request request)
        {
            // Validation now performed in the dispacther decorators (See AutoValidate<T> in the DomainBootstrapper class)

            var container = new EntityStateWrapperContainer();

            container.AddEntity(InstructorFactory.Create(repository, request.CommandModel));
            var validationDetails = repository.Save(container);

            var instructorId = default(int?);

            if (!validationDetails.HasValidationIssues)
            {
                instructorId = container.FindEntity <Instructor>().ID;
            }

            return(new InstructorCreateWithCourses.Response(validationDetails, instructorId));
        }