public static void RecordActivity(string pageName, string description) { if (LogInManager.IsAllowToRecordActivity) { UsersActivityLogRepository usersActivityLogRepository = new UsersActivityLogRepository(); UserRepository userRepository = new UserRepository(); DateTime recordedOn = DateTime.Now; UsersActivityLogVM usersActivityLog = new UsersActivityLogVM(); usersActivityLog.UserId = LogInManager.LoggedInUser.Id; usersActivityLog.Url = Utility.GetCurrentPageURL(); usersActivityLog.PageName = pageName; usersActivityLog.Description = description; usersActivityLog.IpAddress = Utility.GetIpAddress_V3(); usersActivityLog.CreatedBy = LogInManager.LoggedInUserId; usersActivityLog.IsActive = true; usersActivityLog.RecordedOn = recordedOn; usersActivityLog.SessionId = LogInManager.LoggedInUserSessionId; string newGUID = usersActivityLogRepository.AddUsersActivityLog(usersActivityLog); if (pageName == Pages.LOGOUT) { //Update Flag IsLoggedIn = false. userRepository.UpdateIsLoggedInFlag(LogInManager.LoggedInUser.Id, false); var activities = usersActivityLogRepository.GetUsersActivityLogBySessionId(LogInManager.LoggedInUserSessionId); if (activities != null && activities.Count > 0) { //Get Login Activity. var loginActivity = activities.Where(m => m.PageName == Pages.LOGIN).FirstOrDefault(); if (loginActivity != null) { DateTime logoutTime = recordedOn; var loginTime = loginActivity.RecordedOn.HasValue ? loginActivity.RecordedOn.Value : logoutTime.AddMinutes(-1); //Calculate logged in duration seconds. TimeSpan span = logoutTime.Subtract(loginTime); double? loggedInDurationInSeconds = Math.Abs(Math.Round(span.TotalSeconds, 0)); //Update logged in duration in seconds. usersActivityLogRepository.UpdateLoggedInDurationInUsersActivity(Guid.Parse(newGUID), loggedInDurationInSeconds, LogInManager.LoggedInUserId); } } } } }
public string AddUsersActivityLog(UsersActivityLogVM usersActivityLog) { string usersActivityId = string.Empty; SqlParameter[] parameters = { new SqlParameter { ParameterName = "@UserId", Value = usersActivityLog.UserId }, new SqlParameter { ParameterName = "@Url", Value = usersActivityLog.Url }, new SqlParameter { ParameterName = "@PageName", Value = usersActivityLog.PageName }, new SqlParameter { ParameterName = "@Description", Value = usersActivityLog.Description }, new SqlParameter { ParameterName = "@IpAddress", Value = usersActivityLog.IpAddress }, new SqlParameter { ParameterName = "@RecordedOn", Value = usersActivityLog.RecordedOn }, new SqlParameter { ParameterName = "@SessionId", Value = usersActivityLog.SessionId }, new SqlParameter { ParameterName = "@IsActive", Value = usersActivityLog.IsActive }, new SqlParameter { ParameterName = "@CreatedBy", Value = usersActivityLog.CreatedBy } }; usersActivityId = Convert.ToString(DALHelper.ExecuteScalar("AddUsersActivityLog", parameters)); return(usersActivityId); }
public static void UpdateLogOutTimeBySessionId(string sessionId) { UsersActivityLogRepository usersActivityLogRepository = new UsersActivityLogRepository(); UserRepository userRepository = new UserRepository(); var activities = usersActivityLogRepository.GetUsersActivityLogBySessionId(sessionId); if (activities != null && activities.Count > 0) { //Get Login Activity. var loginActivity = activities.Where(m => m.PageName == Pages.LOGIN).FirstOrDefault(); //Check Login Activity Exist. if (loginActivity != null) { //Get Logout Activity which tracked after current login. var logoutActivity = activities.Where(m => m.PageName == Pages.LOGOUT && m.RecordedOn.Value > loginActivity.RecordedOn.Value).FirstOrDefault(); //Check Logout Activity Exist then update logged in duration. if (logoutActivity != null) { //Check Logout Activity already updated with logged in duration. If No then update logged in duration. if (logoutActivity.LoggedInDurationInSeconds.HasValue == false) { var userId = logoutActivity.CreatedBy.Value; var userGUID = logoutActivity.UserId; DateTime logoutTime = logoutActivity.RecordedOn.Value; var loginTime = loginActivity.RecordedOn.HasValue ? loginActivity.RecordedOn.Value : logoutTime.AddMinutes(-1); //Calculate logged in duration seconds. TimeSpan span = logoutTime.Subtract(loginTime); double? loggedInDurationInSeconds = Math.Abs(Math.Round(span.TotalSeconds, 0)); //Update logged in duration in seconds. usersActivityLogRepository.UpdateLoggedInDurationInUsersActivity(logoutActivity.Id, loggedInDurationInSeconds, userId); //Update Flag IsLoggedIn = false. userRepository.UpdateIsLoggedInFlag(userGUID, false); } } else { //If Logout Activity not exist then create logout activity and then calcualte logged in duration. DateTime recordedOn = DateTime.Now; var userId = loginActivity.CreatedBy.Value; var userGUID = loginActivity.UserId; var environment = Utility.GetConfigValue("Environment"); var siteDomainURL = Utility.GetSiteDomainURL(environment); //Add logout activity. UsersActivityLogVM usersActivityLog = new UsersActivityLogVM(); usersActivityLog.UserId = loginActivity.UserId; usersActivityLog.Url = string.Format("{0}{1}", siteDomainURL, "Account/SignOut"); usersActivityLog.PageName = Pages.LOGOUT; usersActivityLog.Description = "Loggedout successfully."; usersActivityLog.IpAddress = loginActivity.IpAddress; usersActivityLog.CreatedBy = userId; usersActivityLog.IsActive = true; usersActivityLog.RecordedOn = recordedOn; usersActivityLog.SessionId = sessionId; string newGUID = usersActivityLogRepository.AddUsersActivityLog(usersActivityLog); //Calculate logged in duration and update value. DateTime logoutTime = recordedOn; var loginTime = loginActivity.RecordedOn.HasValue ? loginActivity.RecordedOn.Value : logoutTime.AddMinutes(-1); //Calculate logged in duration seconds. TimeSpan span = logoutTime.Subtract(loginTime); double? loggedInDurationInSeconds = Math.Abs(Math.Round(span.TotalSeconds, 0)); //Update logged in duration in seconds. usersActivityLogRepository.UpdateLoggedInDurationInUsersActivity(Guid.Parse(newGUID), loggedInDurationInSeconds, userId); //Update Flag IsLoggedIn = false. userRepository.UpdateIsLoggedInFlag(userGUID, false); } } } }