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();
        }
예제 #3
0
        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);
        }
예제 #4
0
 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;
     }
 }