public ActionResult ChangeHead(int id)
        {
            var department = _context
                             .Departments
                             .Include(d => d.DepartmentHead)
                             .Include(d => d.Instructors)
                             .Single(d => d.Id == id);

            var viewModel = new ChangeDepartmentHeadViewModel
            {
                OldDepartmentHead          = department.DepartmentHead,
                OldDepartmentHeadAccountId = department.DepartmentHead.AccountId,
                DepartmentHeadId           = department.DepartmentHeadId,
                Instructors = department.Instructors,
                Name        = department.Name
            };

            return(View(viewModel));
        }
        public async Task <ActionResult> ChangeHead(ChangeDepartmentHeadViewModel model)
        {
            if (ModelState.IsValid)
            {
                var departmentInDb = _context.Departments.Single(d => d.Id == model.Id);


                // find the old department head and remove him from the department head role
                var userStore   = new UserStore <ApplicationUser>(new ApplicationDbContext());
                var userManager = new ApplicationUserManager(userStore);

                var result = await userManager.RemoveFromRoleAsync(model.OldDepartmentHeadAccountId, RoleName.IsADepartmentHead);

                if (result.Succeeded)
                {
                    departmentInDb.DepartmentHeadId = model.DepartmentHeadId;
                }
            }

            return(View());
        }