public bool CheckUserDocumentReadable(string userId, int documentId, bool receivedDocument)
        {
            var userDepartment = new UserDepartment();

            userDepartment = _departmentRepository.GetUserMainOrganization(userId);
            if (userDepartment != null)
            {
                string listSubDepartmentId = userDepartment.ListSubDepartmentId;
                int    departmentId        = userDepartment.DepartmentId;
                List <SPCheckUserDocumentReadable_Result> listCheckUserDocumentReadable = new List <SPCheckUserDocumentReadable_Result>();
                listCheckUserDocumentReadable = _entities.SPCheckUserDocumentReadable(userId, documentId, receivedDocument, departmentId, listSubDepartmentId).ToList();
                if (listCheckUserDocumentReadable.Count > 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Example #2
0
        public async Task <ActionResult> Edit([Bind(Include = "UserName,Email,Id")] EditUserDepartmentViewModel editUser, params int[] selectedDepartments)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByIdAsync(editUser.Id);

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

                //删除现在所属部门
                var departments = user.Departments.ToList();
                departments.Each(t => _db.Set <UserDepartment>().Remove(t));

                //新增所属部门
                selectedDepartments = selectedDepartments ?? new int[] { };
                selectedDepartments.Each(departmentId =>
                {
                    var userDepartment = new UserDepartment {
                        ApplicationUserId = user.Id, DepartmentId = departmentId
                    };
                    _db.Set <UserDepartment>().Add(userDepartment);
                });

                _db.SaveChanges();

                return(RedirectToAction("Index"));
            }
            ModelState.AddModelError("", "操作失败。");
            return(View());
        }
Example #3
0
        public ActionResult Create([Bind(Include = "DepartmentName,Domain")] Department department)
        {
            try
            {
                //only super user can create departments
                if (IsSuperUser())
                {
                    using (var db = new CAMS_DatabaseEntities())
                    {
                        if (ModelState.IsValid)
                        {
                            db.Departments.Add(department);
                            db.SaveChanges();
                            UserDepartment userDepartment = new UserDepartment
                            {
                                UserId       = GetConnectedUser(),
                                DepartmentId = department.DepartmentId,
                                AccessType   = AccessType.Full
                            };
                            db.UserDepartments.Add(userDepartment);
                            db.SaveChanges();
                            ((Dictionary <int, AccessType>)Session["Accesses"]).Add(userDepartment.DepartmentId, userDepartment.AccessType);
                            return(RedirectToAction("Index"));
                        }

                        return(View(department));
                    }
                }
                return(RedirectAcordingToLogin());
            }
            catch
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
        }
Example #4
0
 // GET: Users/Delete/5
 public ActionResult Delete(int?userId, int?depId)
 {
     try
     {
         using (var db = new CAMS_DatabaseEntities())
         {
             if (userId == null || depId == null)
             {
                 return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
             }
             //only full access user for department can remove accesses to this departments
             if (IsFullAccess(depId.Value))
             {
                 UserDepartment userDep = db.UserDepartments.Where(x => x.DepartmentId == depId && x.UserId == userId).ToList().First();
                 if (userDep == null)
                 {
                     return(HttpNotFound());
                 }
                 db.Entry(userDep).Reference(e => e.User).Load();
                 db.Entry(userDep).Reference(e => e.Department).Load();
                 return(View(userDep));
             }
             return(RedirectAcordingToLogin());
         }
     }
     catch
     {
         return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
     }
 }
Example #5
0
        public async Task <bool> UpdateEmployeeDepartmentJobTitleAsync(string employeeId, int departmentId, int jobTitleId)
        {
            var departmentInfo = await this.GetDepartmentInfoAsync(employeeId, departmentId);

            var employee = await this.db
                           .Users
                           .Where(e => e.Id == employeeId)
                           .FirstOrDefaultAsync();

            employee.JobTitleId = jobTitleId;

            if (departmentInfo == null || departmentInfo.EmployeeEnrolledInDepartment)
            {
                return(false);
            }

            var employeeInDepartment = new UserDepartment
            {
                EmployeeId   = employeeId,
                DepartmentId = departmentId
            };

            await this.db.AddAsync(employeeInDepartment);

            await this.db.SaveChangesAsync();

            return(true);
        }
Example #6
0
        public async Task <IActionResult> AssignDepartmentsToUser([FromRoute] int iNumber, [FromQuery(Name = "role")] int?role, [FromBody] int[] departments)
        {
            ConnectUser user = await _em.Users.FindByIndexAsync(iNumber);

            if (user == null)
            {
                return(NotFound());
            }

            if (role >= 0 || role <= 2)
            {
                user.Role = (Roles)role;
            }

            await _em.UserDepartments.RemoveAll(user.Id);

            foreach (int departemtnId in departments)
            {
                if (!await _em.Departments.ExisteAsync(departemtnId))
                {
                    return(NotFound());
                }
                UserDepartment userDepartment = new UserDepartment()
                {
                    UserId = user.Id, DepartmentId = departemtnId
                };
                await _em.UserDepartments.AddAsync(userDepartment);
            }

            await _em.FlushAsync();

            return(Ok());
        }
        public void Remove(int id)
        {
            UserDepartment userDepartment = db.UserDepartments.Find(id);

            db.UserDepartments.Remove(userDepartment);
            db.SaveChanges();
        }
Example #8
0
        public void AddUserDepartment(bool currentDep,
                                      int departmentId,
                                      bool isDeleted,
                                      bool isDepartmentManager,
                                      int userId,
                                      DateTime validFrom,
                                      DateTime validTo)
        {
            using (IUnitOfWork work = UnitOfWork.Begin())
            {
                UserDepartment ud = _userDepartmentRepository.FindByUserId(userId).Where(d => d.DepartmentId == departmentId).SingleOrDefault();

                if (ud == null)
                {
                    ud = DomainObjectFactory.CreateUserDepartment();
                    _userDepartmentRepository.Add(ud);
                }

                ud.CurrentDep          = currentDep;
                ud.DepartmentId        = departmentId;
                ud.IsDeleted           = isDeleted;
                ud.IsDepartmentManager = isDepartmentManager;
                ud.UserId    = userId;
                ud.ValidFrom = validFrom;
                ud.ValidTo   = validTo;

                work.Commit();

                var userDepLogEntity = new UserDepartmentEventEntity(_userDepartmentRepository.FindById(ud.Id));

                _logService.CreateLog(CurrentUser.Get().Id, "web", flag, CurrentUser.Get().HostName, CurrentUser.Get().CompanyId,
                                      userDepLogEntity.GetCreateMessage());
            }
        }
        private async Task SetUserAndDepartmentMapAsync(Guid currentUserId, Guid userId, Guid?departmentId)
        {
            if (departmentId != null && !departmentId.Equals(Guid.Empty))
            {
                //TODO: we are allow one user have a one department, then we will limit the user to add multiple department.
                var userDepartmentEntities = await _userDepartmentReposiotry.GetAllListAsync(item => item.UserId.Equals(userId) && item.DepartmentId.Equals(departmentId.Value));

                if (userDepartmentEntities.Count > 0)
                {
                    var userDepartmentEntity = userDepartmentEntities.First();
                    userDepartmentEntity.DepartmentId = departmentId.Value;
                    await _userDepartmentReposiotry.UpdateAsync(userDepartmentEntity);
                }
                else
                {
                    UserDepartment userDepartMap = new UserDepartment()
                    {
                        CreateByUserId = currentUserId,
                        CreateTime     = DateTime.UtcNow,
                        DepartmentId   = departmentId.Value,
                        UserId         = userId
                    };
                    await _userDepartmentReposiotry.InsertAsync(userDepartMap);
                }
            }
        }
Example #10
0
        public ActionResult SelDeptList()
        {
            AjaxMsgModel ajaxMsg = new AjaxMsgModel()
            {
                Statu = "error", Msg = "加载失败!"
            };
            var            rows     = _deptBLL.LoadEntities(u => u.IsAble == true);
            UserDepartment ud_Model = new UserDepartment();

            int uid = int.Parse(Request["UserId"]);

            ud_Model = _udBLL.Find(uid);
            if (rows != null)
            {
                ajaxMsg.Statu = "ok";
                if (ud_Model == null)
                {
                    ajaxMsg.Msg = "";
                }
                else
                {
                    ajaxMsg.Msg = ud_Model.DepartmentId.ToString();
                }
                ajaxMsg.Data = rows;
            }
            return(Json(ajaxMsg, JsonRequestBehavior.AllowGet));
        }
        public ActionResult Edit(int id, UserDepartment _userDepartment)
        {
            if (getCurrentUser() == null)
            {
                return(RedirectToAction("Index", "Login"));
            }
            else
            {
                try
                {
                    UserDepartment userDepartment = iuserDepartment.GetUserDepartment(id);
                    userDepartment.ud_user_id   = _userDepartment.ud_user_id;
                    userDepartment.ud_depart_id = _userDepartment.ud_depart_id;
                    iuserDepartment.Update(userDepartment);

                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception ex)
                {
                    TempData["errorMessage"] = ex.Message;
                    ViewBag.UserList         = (iuser.GetUsers);
                    ViewBag.DepartmentList   = (idepartment.GetDepartments);
                    return(View());
                }
            }
        }
        private void removedepartments(HttpContext context)
        {
            string UserIDs = context.Request["UserIDList"];
            string RoleIDs = context.Request["RoleIDList"];

            int[] UserIDList = new int[] { };
            int[] RoleIDList = new int[] { };
            if (!string.IsNullOrEmpty(UserIDs))
            {
                UserIDList = Utility.JsonConvert.DeserializeObject <int[]>(UserIDs);
            }
            if (!string.IsNullOrEmpty(RoleIDs))
            {
                RoleIDList = Utility.JsonConvert.DeserializeObject <int[]>(RoleIDs);
            }
            if (UserIDList.Length == 0)
            {
                WebUtil.WriteJson(context, new { status = false, error = "请选择用户" });
                return;
            }
            if (RoleIDList.Length == 0)
            {
                WebUtil.WriteJson(context, new { status = false, error = "请选择部门" });
                return;
            }
            bool status = UserDepartment.Remove_UserDepartment(UserIDList, RoleIDList);

            WebUtil.WriteJson(context, new { status = status });
        }
        //Edit Department
        private void UpdateUserDepartment(string[] selectedDepartment, Users userToUpdate)
        {
            if (selectedDepartment == null)
            {
                userToUpdate.UsersDepartment = new List <UserDepartment>();
                return;
            }

            var selectedDepartmentHS = new HashSet <string>(selectedDepartment);
            var userDepartment       = new HashSet <int>
                                           (userToUpdate.UsersDepartment.Select(c => c.Departments.ID));

            foreach (var department in _context.Department)
            {
                if (selectedDepartmentHS.Contains(department.ID.ToString()))
                {
                    if (!userDepartment.Contains(department.ID))
                    {
                        userToUpdate.UsersDepartment.Add(new UserDepartment {
                            UsersID = userToUpdate.ID, DepartmentID = department.ID
                        });
                    }
                }
                else
                {
                    if (userDepartment.Contains(department.ID))
                    {
                        UserDepartment departmentToRemove = userToUpdate.UsersDepartment.SingleOrDefault(i => i.DepartmentID == department.ID);
                        _context.Remove(departmentToRemove);
                    }
                }
            }
        }
Example #14
0
 public ActionResult Edit([Bind(Include = "UserId, DepartmentId, AccessType")] UserDepartment UserDepartment)
 {
     try
     {
         using (var db = new CAMS_DatabaseEntities())
         {
             if (ModelState.IsValid)
             {
                 //only full access user for department can edit accesses to this departments
                 if (IsFullAccess(UserDepartment.DepartmentId))
                 {
                     db.Entry(UserDepartment).State = EntityState.Modified;
                     db.SaveChanges();
                     return(RedirectToAction("Index"));
                 }
                 return(RedirectAcordingToLogin());
             }
             return(View(UserDepartment));
         }
     }
     catch
     {
         return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
     }
 }
Example #15
0
        public ActionResult AddDept()
        {
            AjaxMsgModel ajaxMsg = new AjaxMsgModel()
            {
                Statu = "error", Msg = "新增失败!"
            };

            int?           deptId   = int.Parse(Request["sel_Deptment"]);
            int            uid      = int.Parse(Request["uId"]);
            bool           flag     = false;
            UserDepartment udObject = _udBLL.Find(uid);

            if (udObject == null)
            {
                udObject              = new UserDepartment();
                udObject.UserId       = uid;
                udObject.DepartmentId = deptId;
                flag = _udBLL.AddEntity(udObject) > 0;
            }
            else
            {
                udObject.DepartmentId = deptId;
                flag = _udBLL.UpdateEntity(udObject);
            }
            if (flag)
            {
                ajaxMsg.Statu = "ok";
                ajaxMsg.Msg   = "提交成功!";
            }
            //var json = Newtonsoft.Json.JsonConvert.SerializeObject(ajaxMsg);
            return(Json(ajaxMsg, JsonRequestBehavior.AllowGet));
        }
        public async Task <RESTResult> AddOrUpdateUserDepartmentAsync(Guid curretnUserId, Guid userId, Guid departmentId)
        {
            RESTResult result = new RESTResult
            {
                Code = RESTStatus.Success
            };
            var userDepartments = await _userDepartmentReposiotry.GetAllListAsync(item => item.UserId.Equals(userId));

            if (userDepartments.Count > 0)
            {
                //We should not allow the user have two department at the smae time temporarily
                var userDepartmentModel = userDepartments.FirstOrDefault();
                userDepartmentModel.DepartmentId   = departmentId;
                userDepartmentModel.ModifyByUserId = curretnUserId;
                userDepartmentModel.ModifyTime     = DateTime.Now;
                await _userDepartmentReposiotry.UpdateAsync(userDepartmentModel);

                result.Message = "Set department successful";
            }
            else
            {
                //TODO:Add new user role
                var userDepartmentEntity = new UserDepartment
                {
                    UserId         = userId,
                    DepartmentId   = departmentId,
                    CreateByUserId = curretnUserId,
                    CreateTime     = DateTime.Now
                };
                await _userDepartmentReposiotry.InsertAsync(userDepartmentEntity);

                result.Message = "Set department successful";
            }
            return(result);
        }
        public async Task <IActionResult> Edit(int id, [Bind("DepartmentId,DepartmentName")] UserDepartment userDepartment)
        {
            if (id != userDepartment.DepartmentId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(userDepartment);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!UserDepartmentExists(userDepartment.DepartmentId))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(PartialView("~/Areas/AppIdentity/Views/UserDepartment/CreateEdit.cshtml", userDepartment));
        }
Example #18
0
 public UserDepartment Create(UserDepartment model)
 {
     using (var db = new PermissionContext())
     {
         var userDepartments = db.UserDepartments.Add(model);
         db.SaveChanges();
         return(userDepartments);
     }
 }
Example #19
0
 public UserDepartment Update(UserDepartment model)
 {
     using (var db = new PermissionContext())
     {
         var userDepartments = db.UserDepartments.Find(model.Id);
         userDepartments = model;
         db.SaveChanges();
         return(userDepartments);
     }
 }
        public async Task <IActionResult> Create([Bind("DepartmentId,DepartmentName")] UserDepartment userDepartment)
        {
            if (ModelState.IsValid)
            {
                _context.Add(userDepartment);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(PartialView("~/Areas/AppIdentity/Views/UserDepartment/CreateEdit.cshtml", userDepartment));
        }
        // POST: odata/UserDepartments
        public IHttpActionResult Post(UserDepartment userDepartment)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            db.UserDepartments.Add(userDepartment);
            db.SaveChanges();

            return(Created(userDepartment));
        }
Example #22
0
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (IsFullAccessUser())
                {
                    using (var db = new CAMS_DatabaseEntities())
                    {
                        string     user_id      = Request.Form["UsersList"];
                        int        departmentId = Convert.ToInt32(Request.Form["Departments"].ToString());
                        AccessType accessType   = (AccessType)Convert.ToByte(Request.Form["AccessType"].ToString());
                        User       user;
                        int        n;
                        if (int.TryParse(Request.Form["UsersList"].ToString(), out n))
                        {
                            user = db.Users.Find(n);
                        }
                        else
                        {
                            user = AddUser(user_id);
                        }
                        var accL = db.UserDepartments.Where(e => e.UserId.Equals(user.UserId) && e.DepartmentId.Equals(departmentId)).ToList();
                        //update access
                        if (accL.Count > 0)
                        {
                            UserDepartment uD = accL.First();
                            uD.AccessType = accessType;
                        }
                        //new access
                        else
                        {
                            UserDepartment userDepartment = new UserDepartment
                            {
                                UserId       = user.UserId,
                                DepartmentId = departmentId,
                                AccessType   = accessType
                            };
                            db.UserDepartments.Add(userDepartment);
                        }
                        db.SaveChanges();

                        return(RedirectToAction("Index"));
                    }
                }

                return(RedirectAcordingToLogin());
            }
            catch
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
        }
 /// <summary>
 /// 插入
 /// </summary>
 /// <param name="item"></param>
 /// <returns></returns>
 public UserDepartment Insert(UserDepartment item)
 {
     //CRUD Operation in Connected mode
     using (var db = new WebFrameworksDB())
     {
         var result = db.UserDepartment.Add(item);
         if (db.SaveChanges() > 0)
         {
             return(result);
         }
     }
     return(null);
 }
        /// <summary>
        /// 依据id查询
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public UserDepartment GetById(int id)
        {
            UserDepartment result = null;

            DBHelper.NoLockInvokeDB(() =>
            {
                using (var db = new WebFrameworksDB())
                {
                    result = db.UserDepartment.FirstOrDefault(p => p.Id == id);
                }
            });
            return(result);
        }
Example #25
0
        public ActionResult AddDepartment()
        {
            UserDepartment userDepartment = new UserDepartment();

            userDepartment.Departments = departmentManagement.GetAllDepartments();
            userDepartment.RolesList   = RoleManager.Roles.Where(x => !x.Name.Equals("Admin")).ToList().Select(x => new Core.ViewModel.SelectListItem()
            {
                Text  = x.Name,
                Value = x.Id
            });

            return(PartialView("_UserDepartment", userDepartment));
        }
        public async Task <IActionResult> Create([Bind("LastName,FirstName,Role,Department,Team")] Users users, string[] selectedRoles, string[] selectedDepartment, string[] selectedTeam)
        {
            if (selectedRoles != null)
            {
                users.UsersRole = new List <UserRoles>();
                foreach (var role in selectedRoles)
                {
                    var roleToAdd = new UserRoles {
                        UsersID = users.ID, RolesID = int.Parse(role)
                    };
                    users.UsersRole.Add(roleToAdd);
                }
            }

            if (selectedDepartment != null)
            {
                users.UsersDepartment = new List <UserDepartment>();
                foreach (var department in selectedDepartment)
                {
                    var departmentToAdd = new UserDepartment {
                        UsersID = users.ID, DepartmentID = int.Parse(department)
                    };
                    users.UsersDepartment.Add(departmentToAdd);
                }
            }

            if (selectedTeam != null)
            {
                users.UsersTeam = new List <UserTeam>();
                foreach (var team in selectedTeam)
                {
                    var teamToAdd = new UserTeam {
                        UsersID = users.ID, TeamID = int.Parse(team)
                    };
                    users.UsersTeam.Add(teamToAdd);
                }
            }


            if (ModelState.IsValid)
            {
                _context.Add(users);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }



            return(View(users));
        }
        // DELETE: odata/UserDepartments(5)
        public IHttpActionResult Delete([FromODataUri] int key)
        {
            UserDepartment userDepartment = db.UserDepartments.Find(key);

            if (userDepartment == null)
            {
                return(NotFound());
            }

            db.UserDepartments.Remove(userDepartment);
            db.SaveChanges();

            return(StatusCode(HttpStatusCode.NoContent));
        }
Example #28
0
 /// <summary>
 /// 添加用户部门
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool Create(UserDepartmentModel model)
 {
     try
     {
         var userIds       = model.UserIds.Split(',');
         var departmentIds = model.DepartmentIds.Split(',');
         foreach (var item in userIds)
         {
             var gid  = Guid.Parse(item);
             var user = userDal.Find(gid);
             if (user == null)
             {
                 throw new Exception("无法识别用户ID");
             }
             else
             {
                 var isScussce = dal.DelByUserId(gid);
                 if (!isScussce)
                 {
                     throw new Exception("出现程序错误,请联系管理员!");
                 }
             }
         }
         foreach (var uid in userIds)
         {
             var userId = Guid.Parse(uid);
             foreach (var did in departmentIds)
             {
                 var departmentId   = Guid.Parse(did);
                 var userDepartment = new UserDepartment
                 {
                     Id           = Guid.NewGuid(),
                     UserId       = userId,
                     DepartmentId = departmentId
                 };
                 var result = dal.Create(userDepartment);
                 if (result == null)
                 {
                     throw new Exception("循环添加出现程序错误,请联系管理员!");
                 }
             }
         }
         return(true);
     }
     catch (Exception)
     {
         throw new Exception("出现程序错误,请联系管理员!");
     }
 }
Example #29
0
        public void UpdateUserDepartment(int userId, int departmentId, DateTime validFrom, DateTime validTo, bool isDelete)
        {
            using (IUnitOfWork work = UnitOfWork.Begin())
            {
                UserDepartment userDepartment = _userDepartmentRepository.FindByUserId(userId).Where(ud => ud.DepartmentId == departmentId).SingleOrDefault();

                if (userDepartment == null)
                {
                    userDepartment = DomainObjectFactory.CreateUserDepartment();
                    _userDepartmentRepository.Add(userDepartment);
                    userDepartment.UserId              = userId;
                    userDepartment.DepartmentId        = departmentId;
                    userDepartment.ValidFrom           = validFrom;
                    userDepartment.ValidTo             = validTo;
                    userDepartment.CurrentDep          = false;
                    userDepartment.IsDepartmentManager = userDepartment.IsDepartmentManager && !isDelete;
                    userDepartment.IsDeleted           = isDelete;

                    work.Commit();

                    var userDepLogEntity =
                        new UserDepartmentEventEntity(_userDepartmentRepository.FindById(userDepartment.Id));

                    _logService.CreateLog(CurrentUser.Get().Id, "web", flag, CurrentUser.Get().HostName, CurrentUser.Get().CompanyId,
                                          userDepLogEntity.GetCreateMessage());
                }
                else
                {
                    var userDepLogEntity =
                        new UserDepartmentEventEntity(userDepartment);
                    userDepartment.UserId              = userId;
                    userDepartment.DepartmentId        = departmentId;
                    userDepartment.ValidFrom           = validFrom;
                    userDepartment.ValidTo             = validTo;
                    userDepartment.CurrentDep          = false;
                    userDepartment.IsDepartmentManager = userDepartment.IsDepartmentManager && !isDelete;
                    userDepartment.IsDeleted           = isDelete;

                    work.Commit();

                    userDepLogEntity.SetNewUserDepartment(_userDepartmentRepository.FindById(userDepartment.Id));
                    _logService.CreateLog(CurrentUser.Get().Id, "web", flag, CurrentUser.Get().HostName, CurrentUser.Get().CompanyId,
                                          userDepLogEntity.GetEditMessage());
                }
            }
        }
Example #30
0
        public void NoNotificationTest()
        {
            User user = new User();
            NotificationViewModel vm = new NotificationViewModel(user, new NotificationsController());

            Assert.AreEqual(0, vm.Notifications.Count, "user have no notification properties");


            user.DisconnectedPeriod = 2;
            Computer comp = new Computer();
            Lab      lab  = new Lab();

            comp.Lab = lab;
            lab.Computers.Add(comp);
            Department dep = new Department();

            dep.Labs.Add(lab);
            lab.Department = dep;
            UserDepartment ud = new UserDepartment();

            ud.Department = dep;
            ud.User       = user;
            user.UserDepartments.Add(ud);
            Activity act1 = new Activity();

            act1.Mode  = ActivityType.Off;
            act1.Login = DateTime.Now.Date.AddDays(-1);
            comp.Activities.Add(act1);
            act1.Computer = comp;

            Assert.AreEqual(0, vm.Notifications.Count, "computer disconnected only 1 day");

            act1.Login  = DateTime.Now.Date.AddDays(-3);
            act1.Logout = DateTime.Now.Date;
            Assert.AreEqual(0, vm.Notifications.Count, "computer is connected");

            user.NotActivePeriod = 2;
            Activity act2 = new Activity();

            act2.Mode  = ActivityType.User;
            act2.Login = DateTime.Now.Date.AddDays(-1);
            comp.Activities.Add(act2);
            act2.Computer = comp;

            Assert.AreEqual(0, vm.Notifications.Count, "last user activity day ago");
        }
        public async Task<ActionResult> Edit([Bind(Include = "UserName,Email,Id")]EditUserDepartmentViewModel editUser, params int[] selectedDepartments)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByIdAsync(editUser.Id);
                if (user == null)
                {
                    return HttpNotFound();
                }

                //删除现在所属部门
                var departments = user.Departments.ToList();
                departments.Each(t => _db.Set<UserDepartment>().Remove(t));
                
                //新增所属部门
                selectedDepartments = selectedDepartments ?? new int[] { };                
                selectedDepartments.Each(departmentId =>
                {
                    var userDepartment = new UserDepartment { ApplicationUserId = user.Id, DepartmentId = departmentId };
                    _db.Set<UserDepartment>().Add(userDepartment);
                });

                _db.SaveChanges();

                return RedirectToAction("Index");
            }
            ModelState.AddModelError("", "操作失败。");
            return View();
        }