コード例 #1
0
        public static void SetDefaultClockoutTimeStampToForgottenStamps(string userName)
        {
            var startDate = WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"]).Date;

            using (var dbContext = new TimeTrackingEntities())
            {
                var userForgottenTimeOutStamps = (from utsh in dbContext.UserTimeTrackHistories
                                                  where utsh.IsDeleted == false &&
                                                  utsh.UserName.ToLower().Equals(userName.ToLower()) &&
                                                  utsh.StampDate < startDate &&
                                                  (utsh.ClockInTime.Length > 0 && (utsh.ClockOutTime == null || utsh.ClockOutTime.Length == 0))
                                                  select utsh).ToList();
                if (userForgottenTimeOutStamps.Any())
                {
                    var sDate = new DateTime();
                    foreach (var userForgottenTimeOutStamp in userForgottenTimeOutStamps)
                    {
                        var timeSpan = TimeSpan.Parse(WebConfigurationManager.AppSettings["AutomaticTimeOutLimit"]);
                        userForgottenTimeOutStamp.ClockOutTime = String.Format("{0:t}", sDate.Add(timeSpan));
                        userForgottenTimeOutStamp.UpdatedBy    = "sys";
                        userForgottenTimeOutStamp.UpdatedDate  = WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"]);
                    }
                }
                dbContext.SaveChanges();
            }
        }
コード例 #2
0
        public static MembershipUserExtended Update(string userName, string firstName, string lastName, string title, double?hourlyRate, string address, string city, string state, string zip, string phone)
        {
            using (var dbContext = new TimeTrackingEntities())
            {
                var extendedUser =
                    dbContext.ExtendedUserProfiles.FirstOrDefault(ur => ur.UserName == userName);

                if (extendedUser != null)
                {
                    extendedUser.FirstName  = firstName;
                    extendedUser.LastName   = lastName;
                    extendedUser.Title      = title;
                    extendedUser.HourlyRate = hourlyRate;
                    extendedUser.Address    = address;
                    extendedUser.City       = city;
                    extendedUser.State      = state;
                    extendedUser.Zip        = zip;
                    extendedUser.Phone      = phone;
                    extendedUser.CreatedBy  = HttpContext.Current.User == null || string.IsNullOrEmpty(HttpContext.Current.User.Identity.Name)
                                                 ? "sys"
                                                 : HttpContext.Current.User.Identity.Name;
                    extendedUser.CreatedDate = DateTime.Now;
                    dbContext.SaveChanges();
                    return(GetUser(userName, userIsOnline: false));
                }
                return(null);
            }
        }
コード例 #3
0
        /// <summary>
        /// Creates the Membership user and update Extended Membership user.
        /// </summary>
        /// <param name="userName">Name of the user.</param>
        /// <param name="password">The password.</param>
        /// <param name="email">The email.</param>
        /// <param name="firstName">The first name.</param>
        /// <param name="lastName">The last name.</param>
        /// <param name="title"></param>
        /// <param name="hourlyRate"></param>
        /// <param name="address"></param>
        /// <param name="city"></param>
        /// <param name="state"></param>
        /// <param name="zip"></param>
        /// <param name="phone"></param>
        /// <param name="createUserStatus"></param>

        /// <returns></returns>
        public static MembershipUserExtended CreateUser(string userName, string password, string email, string firstName, string lastName, string title, double?hourlyRate, string address, string city, string state, string zip, string phone, out MembershipCreateStatus createUserStatus)
        {
            if (password.Length < 6)
            {
                password = Membership.GeneratePassword(6, 0);
            }


            var user = Membership.CreateUser(userName, password, email, passwordQuestion: null, passwordAnswer: null, isApproved: true, providerUserKey: null, status: out createUserStatus);

            if (createUserStatus == MembershipCreateStatus.Success)
            {
                using (var dbContext = new TimeTrackingEntities())
                {
                    try
                    {
                        var extendedUserProfile = dbContext.ExtendedUserProfiles.FirstOrDefault(u => u.UserName == user.UserName);

                        if (extendedUserProfile == null)
                        {
                            extendedUserProfile = new ExtendedUserProfile
                            {
                                UserId       = GetUserIdByUserName(user.UserName),
                                UserName     = user.UserName,
                                FirstName    = firstName,
                                LastName     = lastName,
                                TempPassword = password,
                                Title        = title,
                                HourlyRate   = hourlyRate,
                                Address      = address,
                                City         = city,
                                State        = state,
                                Zip          = zip,
                                Phone        = phone,
                                CreatedBy    = HttpContext.Current.User == null || string.IsNullOrEmpty(HttpContext.Current.User.Identity.Name)
                                                                          ? "sys"
                                                                          : HttpContext.Current.User.Identity.Name,
                                CreatedDate = DateTime.Now
                            };
                            dbContext.ExtendedUserProfiles.Add(extendedUserProfile);
                            dbContext.SaveChanges();
                        }
                        else
                        {
                            if (user != null)
                            {
                                Update(user.UserName, firstName, lastName, title, hourlyRate, address, city, state, zip, phone);
                            }
                        }
                        return(GetUser(userName, userIsOnline: false));
                    }
                    catch (Exception ex)
                    {
                        createUserStatus = MembershipCreateStatus.UserRejected;
                    }
                }
            }
            return(null);
        }
コード例 #4
0
        public void TimeSheetdeleteById(int id)
        {
            var ts = _ttContext.TimeSheets.Where(x => x.Id == id).FirstOrDefault();

            if (ts != null)
            {
                if (ts.TimeInOuts != null)
                {
                    var lst = ts.TimeInOuts.ToList();
                    for (int i = 0; i < lst.Count; i++)
                    {
                        //  ts.TimeInOuts.Remove(ts.TimeInOuts.ToList()[i]);
                        _ttContext.TimeInOuts.Remove(lst[i]);
                    }
                }
                _ttContext.TimeSheets.Remove(ts);
                _ttContext.SaveChanges();
            }
        }
コード例 #5
0
        public static bool DeleteTimeTrackRecord(int timeTrackId, string loggedInUserName)
        {
            using (var dbContext = new TimeTrackingEntities())
            {
                var userTimeTrackRecord =
                    dbContext.UserTimeTrackHistories.FirstOrDefault(utsh => utsh.TimeTrackId == timeTrackId);

                if (userTimeTrackRecord != null && userTimeTrackRecord.TimeTrackId > 0)
                {
                    dbContext.UserTimeTrackHistories.Remove(userTimeTrackRecord);
                    dbContext.SaveChanges();
                    return(true);
                }
                return(false);
            }
        }
コード例 #6
0
 public int Save()
 {
     using (var dbContext = new TimeTrackingEntities())
     {
         var utth = new UserTimeTrackHistory
         {
             UserId       = UserId,
             UserName     = UserName,
             ClockInTime  = ClockInTime,
             ClockOutTime = ClockOutTime,
             StampDate    = StampDate,
             UserIP       = UserIp,
             IsDeleted    = IsDeleted,
             CreatedBy    = CreatedBy,
             CreatedDate  = CreatedDate
         };
         dbContext.UserTimeTrackHistories.Add(utth);
         dbContext.SaveChanges();
         return(utth.TimeTrackId);
     }
 }
コード例 #7
0
        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();
            }
        }
コード例 #8
0
        private void SubmitBtn_Click(object sender, RoutedEventArgs e)
        {
            User newUser = new User {
                UserName      = userNameTextBox.Text,
                FirstName     = firstNameTextBox.Text,
                LastName      = lastNameTextBox.Text,
                Email         = emailTextBox.Text,
                Phone         = phoneTextBox.Text,
                CreatedDate   = DateTime.Now,
                LastLoginDate = DateTime.Now
            };


            if (passwordTextBox.Text.Equals(verifyPasswordTextBox.Text))
            {
                newUser.Password = passwordTextBox.Text;
                context.Users.Add(newUser);
                context.SaveChanges();
                var userList = new UsersList();
                userList.userDataGrid.Items.Refresh();
                this.Close();
            }
        }
コード例 #9
0
        private void SaveBtn_Click(object sender, RoutedEventArgs e)
        {
            var userId = 0;

            if (timeEntryUserIDTextBox.Text != null)
            {
                var user = context.Users.Where(us => (us.UserName == timeEntryUserIDTextBox.Text)).FirstOrDefault();
                userId = user.UserID;
            }

            TimeTrackingApp.Model.TimeEntry newTimeEntry = new TimeTrackingApp.Model.TimeEntry
            {
                TimeEntryDuration    = decimal.Parse(timeEntryDurationTextBox.Text),
                TimeEntryDescription = timeEntryDescriptionTextBox.Text,
                TimeEntryDate        = Convert.ToDateTime(timeEntryDateDatePicker.Text),
                TimeEntryUserID      = userId,
                TimeEntryCreated     = DateTime.Now
            };

            context.TimeEntries.Add(newTimeEntry);
            context.SaveChanges();
            this.Close();
        }
コード例 #10
0
        public static TimeTrackErrorViewModel UpdateClockInOutTime(int timeTrackId, string stampDate, string selectedUser, string clockInTime, string clockOutTime, string updatedBy)
        {
            using (var dbContext = new TimeTrackingEntities())
            {
                var startDate = DateTime.Parse(stampDate);
                var endDate   = startDate.AddDays(1);
                var userTimeTrackRecordForStampedDate = dbContext.UserTimeTrackHistories
                                                        .Where(utsh => utsh.IsDeleted == false && utsh.UserName.ToLower().Equals(selectedUser.ToLower()) && (utsh.StampDate >= startDate && utsh.StampDate < endDate))
                                                        .ToList();

                var userTimeTrackRecord   = userTimeTrackRecordForStampedDate.FirstOrDefault(utsh => utsh.TimeTrackId == timeTrackId);
                var indexOfSelectedRecord = userTimeTrackRecordForStampedDate.IndexOf(userTimeTrackRecord);


                var errorMessage = new StringBuilder();
                var errorCount   = 0;
                var sDate        = new DateTime();

                if (userTimeTrackRecord != null)
                {
                    DateTime updatedClockInDateTime;
                    DateTime updatedClockOutDateTime;
                    if (DateTime.TryParse(clockInTime, out updatedClockInDateTime) && DateTime.TryParse(clockOutTime, out updatedClockOutDateTime))
                    {
                        var updatedClockInTime  = updatedClockInDateTime.TimeOfDay;
                        var updatedClockOutTime = updatedClockOutDateTime.TimeOfDay;

                        // CHECK IF userTimeTrackRecord object has CloclOutTime set. IF NOT SET IT WITH PROVIDED ClockOutTime
                        if (string.IsNullOrEmpty(userTimeTrackRecord.ClockOutTime))
                        {
                            userTimeTrackRecord.ClockOutTime = String.Format("{0:t}", sDate.Add(updatedClockOutTime));
                        }

                        var previousTimeTrackClockOutTimeRecord = string.Empty;
                        var nextTimeTrackClockInTimeRecord      = string.Empty;

                        if (indexOfSelectedRecord > 0 && (indexOfSelectedRecord - 1) >= 0)
                        {
                            previousTimeTrackClockOutTimeRecord =
                                userTimeTrackRecordForStampedDate[indexOfSelectedRecord - 1].ClockOutTime;
                        }

                        if ((indexOfSelectedRecord + 1) < userTimeTrackRecordForStampedDate.Count)
                        {
                            nextTimeTrackClockInTimeRecord =
                                userTimeTrackRecordForStampedDate[indexOfSelectedRecord + 1].ClockInTime;
                        }

                        if (updatedClockOutTime.CompareTo(updatedClockInTime) == -1)
                        {
                            errorMessage.Append("Updated Clock Out time can not be earlier than Updated Clock In time.");
                            errorCount += 1;
                        }
                        else if (!updatedClockInTime.Equals(DateTime.Parse(userTimeTrackRecord.ClockInTime).TimeOfDay))
                        {
                            if ((!string.IsNullOrEmpty(previousTimeTrackClockOutTimeRecord) &&
                                 updatedClockInTime.CompareTo(
                                     DateTime.Parse(previousTimeTrackClockOutTimeRecord).TimeOfDay) == -1) ||
                                (!string.IsNullOrEmpty(nextTimeTrackClockInTimeRecord) &&
                                 updatedClockInTime.CompareTo(DateTime.Parse(nextTimeTrackClockInTimeRecord).TimeOfDay) ==
                                 1))
                            {
                                // error clock in time cannot be earlier then previous checkout time and can not be later then next clockout time
                                errorMessage.Append(
                                    "Updated Clock In time can not be earlier than previous clock out time or later than earlier clock in time");
                                errorCount += 1;
                            }
                        }
                        else if (!updatedClockOutTime.Equals(DateTime.Parse(userTimeTrackRecord.ClockOutTime).TimeOfDay))
                        {
                            // Clock Out time has changed
                            if ((!string.IsNullOrEmpty(previousTimeTrackClockOutTimeRecord) &&
                                 updatedClockOutTime.CompareTo(
                                     DateTime.Parse(previousTimeTrackClockOutTimeRecord).TimeOfDay) == -1) ||
                                (!string.IsNullOrEmpty(nextTimeTrackClockInTimeRecord) &&
                                 updatedClockOutTime.CompareTo(
                                     DateTime.Parse(nextTimeTrackClockInTimeRecord).TimeOfDay) == 1))
                            {
                                errorMessage.Append(
                                    "Updated Clock Out time can not be earlier than previous clock out time or later than earlier clock in time");
                                errorCount += 1;
                            }
                        }
                        else if (
                            !updatedClockInTime.Equals(DateTime.Parse(userTimeTrackRecord.ClockInTime).TimeOfDay) &&
                            (!updatedClockOutTime.Equals(
                                 DateTime.Parse(userTimeTrackRecord.ClockOutTime).TimeOfDay)))
                        {
                            // Both clock in and out time has been changed
                            if (
                                updatedClockInTime.CompareTo(
                                    DateTime.Parse(previousTimeTrackClockOutTimeRecord).TimeOfDay) == -1 ||
                                updatedClockInTime.CompareTo(
                                    DateTime.Parse(nextTimeTrackClockInTimeRecord).TimeOfDay) == 1)
                            {
                                errorMessage.Append(
                                    "Updated Clock Out time can not be earlier than previous clock out time or later than earlier clock in time");
                                errorCount += 1;
                            }
                            if (
                                updatedClockOutTime.CompareTo(
                                    DateTime.Parse(previousTimeTrackClockOutTimeRecord).TimeOfDay) == -1 ||
                                updatedClockOutTime.CompareTo(
                                    DateTime.Parse(nextTimeTrackClockInTimeRecord).TimeOfDay) == 1)
                            {
                                errorMessage.Append(
                                    "Updated Clock Out time can not be earlier than previous clock out time or later than earlier clock in time");
                                errorCount += 1;
                            }
                        }

                        if (errorCount == 0)
                        {
                            userTimeTrackRecord.ClockInTime  = String.Format("{0:t}", sDate.Add(updatedClockInTime));
                            userTimeTrackRecord.ClockOutTime = String.Format("{0:t}", sDate.Add(updatedClockOutTime));
                            userTimeTrackRecord.UpdatedBy    = updatedBy;
                            userTimeTrackRecord.UpdatedDate  = WebHelpers.GetCurrentDateTimeByTimeZoneId(WebConfigurationManager.AppSettings["UserTimeZoneId"]);
                            dbContext.SaveChanges();
                        }
                        return(new TimeTrackErrorViewModel(GetTimeTrackFromUserTimeTrackHistory(dbContext.UserTimeTrackHistories.FirstOrDefault(utsh => utsh.TimeTrackId == timeTrackId)), errorMessage.ToString()));
                    }
                    return(new TimeTrackErrorViewModel(GetTimeTrackFromUserTimeTrackHistory(dbContext.UserTimeTrackHistories.FirstOrDefault(utsh => utsh.TimeTrackId == timeTrackId)), "Please provide a valid Clock In/Clock Out time."));
                }
                return(new TimeTrackErrorViewModel(GetTimeTrackFromUserTimeTrackHistory(dbContext.UserTimeTrackHistories.FirstOrDefault(utsh => utsh.TimeTrackId == timeTrackId)), string.Empty));
            }
        }