private void ForceLogout(BCEnterpriseContext db, int roleId, EnterpriseData.Common.LoginStatus status, string description) { var loginStateList = (from ur in db.UserRoles where ur.RoleID == roleId && !ur.Deleted join uls in db.UserLoginStates on ur.UserID equals uls.UserID select uls).ToList(); var dbNowTime = ML.BC.EnterpriseData.Model.Extend.DBTimeHelper.DBNowTime(db); loginStateList.ForEach(n => { var loginLog = new UserLoginLog { UserID = n.UserID, UserName = n.UserName, IP = n.LoginIP, Device = n.Device, Time = dbNowTime, Description = description, Status = (int)status }; db.UserLoginLogs.Add(loginLog); db.UserLoginStates.Remove(n); }); db.SaveChanges(); }
private void ForceLogout(BCEnterpriseContext db, string userId, EnterpriseData.Common.LoginStatus status, string description) { var loginStateList = db.UserLoginStates.Where(n => n.UserID == userId).ToList(); var dbNowTime = ML.BC.EnterpriseData.Model.Extend.DBTimeHelper.DBNowTime(db); loginStateList.ForEach(n => { var loginLog = new UserLoginLog { UserID = n.UserID, UserName = n.UserName, IP = n.LoginIP, Device = n.Device, Time = dbNowTime, Description = description, Status = (int)status }; db.UserLoginLogs.Add(loginLog); db.UserLoginStates.Remove(n); }); db.SaveChanges(); }
private void LoginLogWrite(BCEnterpriseContext db, UserLoginState userLoginState, EnterpriseData.Common.LoginStatus status, string description) { if (userLoginState == null) { return; } var loginLog = new UserLoginLog { UserID = userLoginState.UserID, UserName = userLoginState.UserName, Device = userLoginState.Device, IP = userLoginState.LoginIP, Status = (int)status, Description = description }; if (status == EnterpriseData.Common.LoginStatus.Login && userLoginState.LoginTime.HasValue) { loginLog.Time = userLoginState.LoginTime.Value; } else { loginLog.Time = ML.BC.EnterpriseData.Model.Extend.DBTimeHelper.DBNowTime(db); } LoginLogWrite(db, loginLog); }
public List <UserLoginLogDto> SearchUserLoginLog(DateTime?beginTime, DateTime?endTime, string userName, string enterpriseName, EnterpriseData.Common.LoginStatus status, int pageNumber, int pageSize, out int amount) { try { using (var db = new BCEnterpriseContext()) { var temp = new Department() { Name = "", }; var entlist = db.Enterprises.Where(x => x.Name.Contains(enterpriseName) || (enterpriseName ?? "") == "").Select(n => n.EnterpriseID).ToList(); var userlist = db.FrontUsers.Where(x => entlist.Contains(x.EnterpiseID) && (x.Name.Contains(userName) || (userName ?? "") == "")).Select(n => new EnterpriseUsers { DepartmentName = "", EnterpriseName = "", UserID = n.UserID, UserName = n.Name, DepartmentID = n.DepartmentID, EnterpriseID = n.EnterpiseID }).ToList(); foreach (var user in userlist) { user.DepartmentName = (db.Departments.FirstOrDefault(m => m.DepartmentID == (user.DepartmentID ?? -5)) ?? temp).Name; user.EnterpriseName = db.Enterprises.FirstOrDefault(m => m.EnterpriseID == user.EnterpriseID).Name; } var uidlist = userlist.Select(x => x.UserID).ToList(); var list = db.UserLoginLogs.Where(x => x.Time <(endTime ?? DateTime.MaxValue) && x.Time> (beginTime ?? DateTime.MinValue) && uidlist.Contains(x.UserID) && ((int)status == x.Status || status == EnterpriseData.Common.LoginStatus.GetAll)); int pagecount; amount = list.Count(); if (pageSize > 0) { pagecount = (list.Count() + pageSize - 1) / pageSize; } else { pagecount = 0; } if (pageNumber > pagecount) { pageNumber = pagecount; } if (pageNumber < 1) { pageNumber = 1; } var relist = list.OrderByDescending(x => x.Time).Skip(pageSize * (pageNumber - 1)).Take(pageSize).ToList().Select(m => new UserLoginLogDto { UserLoginLogID = m.UserLoginLogID, EnterpriseName = userlist.FirstOrDefault(x => x.UserID == m.UserID).EnterpriseName, DepartmentName = userlist.FirstOrDefault(x => x.UserID == m.UserID).DepartmentName, UserID = m.UserID, Status = (LoginStatus)m.Status, Description = m.Description, Time = m.Time, UserName = userlist.FirstOrDefault(x => x.UserID == m.UserID).UserName, IP = m.IP, Device = m.Device }).ToList(); return(relist); } } catch (Exception e) { throw e; } }