public async Task <ActionResult> Edit(int?id)
        {
            var position = await PositionManager.FindEntityByIdAsync(id ?? 0);

            if (position == null)
            {
                return(HttpNotFound());
            }

            ViewBag.Positions = await PositionManager.GetAllEntities().ToListAsync();

            var departs = await DepartmentManager.GetAllEntities().ToListAsync();

            ViewBag.selectListDepart = new SelectList(departs, "Id", "Name");

            var offices = await OfficeManager.GetOfficesForDepartment(departs.ElementAtOrDefault(0)).ToListAsync();

            ViewBag.selectListOffice = new SelectList(offices, "Id", "Name");

            var teachers = await UserManager.GetNoPositionTeachersAsync();

            ViewBag.selectListTeacher = new SelectList(teachers, "Id", "Name");

            var model = new PositionEditViewModel
            {
                Id          = position.Id,
                Description = position.Description,
                Name        = position.Name,
                UserId      = position.HeadUser.Teacher.Id,
                OfficeId    = position.Office.Id
            };

            return(View(model));
        }
        public async Task <ActionResult> Edit(PositionEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                var departs = await DepartmentManager.GetAllEntities().ToListAsync();

                ViewBag.selectListDepart = new SelectList(departs, "Id", "Name");

                var offices = await OfficeManager.GetOfficesForDepartment(departs.ElementAtOrDefault(0)).ToListAsync();

                ViewBag.selectListOffice = new SelectList(offices, "Id", "Name");

                var teachers = await UserManager.GetNoPositionTeachersAsync();

                ViewBag.selectListTeacher = new SelectList(teachers, "Id", "Name");



                var position = await PositionManager.FindEntityByIdAsync(model.Id);

                if (position != null)
                {
                    var user = await UserManager.FindByIdAsync(model.UserId);

                    if (user == null)
                    {
                        ModelState.AddModelError("", "用户不存在");
                        return(View(model));
                    }
                    var office = await OfficeManager.FindEntityByIdAsync(model.OfficeId);

                    if (office == null)
                    {
                        ModelState.AddModelError("", "部门不存在");
                        return(View(model));
                    }
                    position.Name        = model.Name;
                    position.Description = model.Description;
                    position.HeadUser    = user.TeacherInfo;
                    position.Office      = office;
                    await PositionManager.UpdateEntityAsync(position);

                    user.TeacherInfo.Position = position;
                    await UserManager.UpdateAsync(user);

                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError("", "目标不存在");
                }
            }
            return(View(model));
        }
        public async Task <ActionResult> Delete(int?id)
        {
            if (ModelState.IsValid)
            {
                var position = await PositionManager.FindEntityByIdAsync(id ?? 0);

                if (position != null)
                {
                    var user = await UserManager.FindByIdAsync(position.HeadUser.Teacher.Id);

                    user.TeacherInfo.Position = null;
                    await UserManager.UpdateAsync(user);

                    await PositionManager.DeleteEntityAsync(position);
                }
            }
            return(RedirectToAction("Index"));
        }