/// <summary> /// /// </summary> public void Logout() { using (TransactionScope trn = new TransactionScope()) { using (PeakDbContext dbContext = new PeakDbContext()) { ActiveSession activeSession = dbContext.ActiveSessions.FirstOrDefault(x => x.SessionKey == PxSession.Current.Principal.Authentication.Token); TerminatedSession sessionToTerminate = new TerminatedSession(activeSession); sessionToTerminate.TerminationType = SessionTerminationType.Logout; sessionToTerminate.TerminationDate = DateTime.Now; dbContext.ActiveSessions.Remove(activeSession); dbContext.TerminatedSessions.Add(sessionToTerminate); dbContext.SaveChanges(); } trn.Complete(); } }
public void Excecute(DateTime scheduledTime) { using (PeakDbContext dbContext = new PeakDbContext()) { DateTime expiredTime = DateTime.Now.AddMinutes(-PxConfigurationManager.PxConfig.Session.DefaultExpireDuration); var expiredSessions = dbContext.ActiveSessions.Where(x => x.OpenDate <= expiredTime).ToList(); dbContext.ActiveSessions.RemoveRange(expiredSessions); foreach (var expiredSession in expiredSessions) { TerminatedSession terminatedSession = new TerminatedSession() { Ip = expiredSession.Ip, OpenDate = expiredSession.OpenDate, TerminationDate = DateTime.Now, SessionKey = expiredSession.SessionKey, TerminationType = Dal.Enums.SessionTerminationType.Expire, BrowserUserAgent = expiredSession.BrowserUserAgent, UserId = expiredSession.UserId }; dbContext.TerminatedSessions.Add(terminatedSession); } dbContext.SaveChanges(); } }