public async Task<ActionResult> DeleteConfirmed(int id)
        {
            var request = new InstructorDelete.Request(
                SystemPrincipal.Name,
                new InstructorDelete.CommandModel { InstructorId = id });

            await DomainServices.DispatchAsync(request);
            return RedirectToAction("Index");
        }
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            var request = new InstructorDelete.Request(
                SystemPrincipal.Name,
                new InstructorDelete.CommandModel {
                InstructorId = id
            });

            await DomainServices.DispatchAsync(request);

            return(RedirectToAction("Index"));
        }
        // Delete instructor
        public static InstructorDelete.Response Handle(IRepository repository, InstructorDelete.Request request)
        {
            var container = new EntityStateWrapperContainer();
            var depts     = repository.GetEntities <Department>(p => p.InstructorID == request.CommandModel.InstructorId);

            foreach (var dept in depts)
            {
                container.Add(dept.SetInstructorId(null));
            }

            var deletedInstructor = repository.GetEntity <Instructor>(
                p => p.ID == request.CommandModel.InstructorId,
                new EagerLoadingQueryStrategy <Instructor>(
                    p => p.OfficeAssignment));

            container.Add(deletedInstructor.Delete());
            var validationDetails = repository.Save(container);

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