public static void TrackClockInOutTime(string userName) { var startDate = WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"]).Date; var endDate = startDate.AddDays(1); SetDefaultClockoutTimeStampToForgottenStamps(userName); using (var dbContext = new TimeTrackingEntities()) { var usersLatestRecord = (from utsh in dbContext.UserTimeTrackHistories where utsh.IsDeleted == false && utsh.UserName.ToLower().Equals(userName.ToLower()) && (utsh.StampDate >= startDate && utsh.StampDate < endDate) && utsh.ClockInTime.Length > 0 && (utsh.ClockOutTime == null || utsh.ClockOutTime.Length == 0) select utsh).OrderByDescending(c => c.StampDate).ThenByDescending(c => c.CreatedDate).FirstOrDefault(); if (usersLatestRecord != null) // User has clocked in, Clock user out { usersLatestRecord.ClockOutTime = string.Format("{0:t}", WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"])); usersLatestRecord.UpdatedBy = userName; usersLatestRecord.UpdatedDate = WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"]); usersLatestRecord.UserIP = WebHelpers.GetIpAddress(); } else // User hasn't clocked in yet, Clock user in { var userTimeStampHistory = new UserTimeTrackHistory { UserId = MembershipUserExtended.GetUserIdByUserName(userName), UserName = userName, ClockInTime = string.Format("{0:t}", WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"])), StampDate = WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"]), CreatedBy = userName, CreatedDate = WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"]), UserIP = WebHelpers.GetIpAddress(), IsDeleted = false }; dbContext.UserTimeTrackHistories.Add(userTimeStampHistory); } dbContext.SaveChanges(); } }
protected bool MigrateUserData(string userName) { var userNameIdDic = MembershipUserExtended.GetUserIdUserNameList(); try { var ravenUserHistory = RavenSession.Query <UserTimeStampsHistory>().Where(c => c.UserName == userName).ToList(); var efUHistoryList = UserTimeTrackHistory.GetUserTimeStampHistory(userName); if (ravenUserHistory.Count > 0) { if (efUHistoryList.Count > 0) { foreach (var efUserTimeStampHistory in from history in ravenUserHistory from timeStamp in history.History where !efUHistoryList.Any( c => c.ClockInTime.Equals(timeStamp.Start_time) && c.ClockOutTime.Equals(timeStamp.End_time)) select new UserTimeTrackHistory() { UserId = userNameIdDic[userName], UserName = userName, ClockInTime = DateTime.Parse(timeStamp.Start_time).TimeOfDay.ToString(), ClockOutTime = DateTime.Parse(timeStamp.End_time).TimeOfDay.ToString(), StampDate = DateTime.Parse(timeStamp.Stampdate), CreatedBy = HttpContext.User.Identity.Name, CreatedDate = DateTime.Now, UserIP = WebHelpers.GetIpAddress() + "~" + Request.UserHostName }) { efUserTimeStampHistory.Save(); } } else { foreach (var efUserTimeStampHistory in from history in ravenUserHistory from timeStamp in history.History select new UserTimeTrackHistory() { UserId = userNameIdDic[userName], UserName = userName, ClockInTime = DateTime.Parse(timeStamp.Start_time).TimeOfDay.ToString(), ClockOutTime = DateTime.Parse(timeStamp.End_time).TimeOfDay.ToString(), StampDate = DateTime.Parse(timeStamp.Stampdate), CreatedBy = HttpContext.User.Identity.Name, CreatedDate = DateTime.Now, UserIP = WebHelpers.GetIpAddress() + "~" + Request.UserHostName }) { efUserTimeStampHistory.Save(); } } } return(true); } catch (Exception ex) { return(false); } }