public ActionResult LoadMyTimesheet(TimeSheetQueryModel TimeSheetQueryModelObj) { string errorMessage = string.Empty; List <TimeSheetModel> timeSheetModelList = GetEmployeeTimeSheet(TimeSheetQueryModelObj, out errorMessage, "My"); ViewBag.RequestLevelPerson = "My"; return(PartialView("TimeSheetPartial", timeSheetModelList)); }
public ActionResult ExportTimeSheetToExcel(TimeSheetQueryModel TimeSheetQueryModelObj, string RequestLevelPerson) { string errorMessage = string.Empty; string startDate = TimeSheetQueryModelObj.DateRange.Substring(0, 10); string endDate = TimeSheetQueryModelObj.DateRange.Substring(12); //TimeSheetQueryModelObj.FromDate = startDate; if (startDate != "") { try { TimeSheetQueryModelObj.FromDate = DateTime.Parse(startDate, new CultureInfo("en-GB", true)); TimeSheetQueryModelObj.ToDate = DateTime.Parse(endDate, new CultureInfo("en-GB", true)); } catch (Exception) { throw; } } List <TimeSheetModel> timeSheetModelList = GetEmployeeTimeSheet(TimeSheetQueryModelObj, out errorMessage, RequestLevelPerson); List <TimeSheetModel> excelData = timeSheetModelList.ToList(); if (excelData.Count > 0) { List <string> columns = new List <string>() { "Date", "Shift", "In Time", "Out Time", "Working Hours", "Status", "Requests", "Day", "Late In", "Early Out", "Name", "Reporting Manager" }; string fileName = string.Format("Timesheet_{0}{1}", DateTime.Now.ToString("ddMMyyyyHHmmss"), ".xlsx"); //if (RequestLevelPerson == "My") //{ // EmployeeProfile profile = (EmployeeProfile)Session["Profile"]; // fileName = string.Format("{0}{1}{2}{3}", profile.FirstName, profile.LastName, DateTime.Now.ToString("ddMMyyyyHHmmss"), ".xlsx"); //} //else //{ //fileName = string.Format("TimeSheet_{0}{1}", DateTime.Now.ToString("ddMMyyyyHHmmss"), ".xlsx"); //} byte[] filecontent = ExcelExportHelper.ExportTimesheetExcel(excelData, "", true, columns.ToArray()); return(File(filecontent, ExcelExportHelper.ExcelContentType, fileName)); } else { using (var Client = new LeaveClient()) { var result = Client.GetYearsFromLeaveBalance(); ViewBag.YearsInLeaveBal = result; } ViewBag.RequestLevelPerson = RequestLevelPerson; EmployeeAttendanceQueryModel data = new EmployeeAttendanceQueryModel { ErrorMsg = "Excel file is not generated as no data returned." }; return(View("~/Views/Attendance/TimeSheet.cshtml", data)); } }
public List <TimeSheetModel> GetEmployeeTimeSheet(TimeSheetQueryModel TimeSheetQueryModelObj, out string errorMessage, string requestLevelPerson) { errorMessage = string.Empty; ITimesheetHelper EmployeeAttendanceHelperObj = new TimesheetClient(); DateTime currentDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); if (string.IsNullOrEmpty(TimeSheetQueryModelObj.Name)) { EmployeeProfile profile = (EmployeeProfile)Session["Profile"]; TimeSheetQueryModelObj.UserID = profile.UserId; if (TimeSheetQueryModelObj.FromDate == DateTime.MinValue) { // For Last 30 days Attendance TimeSheetQueryModelObj.FromDate = currentDate.AddDays(-30); TimeSheetQueryModelObj.ToDate = currentDate; } else { TimeSheetQueryModelObj.ToDate = TimeSheetQueryModelObj.ToDate; } } else if (!string.IsNullOrEmpty(TimeSheetQueryModelObj.Name)) { if (TimeSheetQueryModelObj.FromDate == DateTime.MinValue) { TimeSheetQueryModelObj.FromDate = currentDate.AddDays(-30); TimeSheetQueryModelObj.ToDate = currentDate; } else { TimeSheetQueryModelObj.ToDate = TimeSheetQueryModelObj.ToDate; } requestLevelPerson = "My"; } if (TimeSheetQueryModelObj.ToDate >= DateTime.Now) { TimeSheetQueryModelObj.ToDate = currentDate; } List <TimeSheetModel> timeSheetModelList = new List <TimeSheetModel>(); if (requestLevelPerson == "My") { timeSheetModelList = EmployeeAttendanceHelperObj.GetMyTimeSheet(TimeSheetQueryModelObj.UserID, TimeSheetQueryModelObj.FromDate, TimeSheetQueryModelObj.ToDate); } else { timeSheetModelList = EmployeeAttendanceHelperObj.GetMyTeamTimeSheet(TimeSheetQueryModelObj.UserID, TimeSheetQueryModelObj.FromDate, TimeSheetQueryModelObj.ToDate, TimeSheetQueryModelObj.MyDirectEmployees); } return(timeSheetModelList); }
public ActionResult LoadMyTeamTimesheet(TimeSheetQueryModel TimeSheetQueryModelObj) { string errorMessage = string.Empty; TimesheetClient tsClient = new TimesheetClient(); List <TimeSheetModel> timeSheetModelList = new List <TimeSheetModel>(); if (tsClient.IsUserHR(TimeSheetQueryModelObj.UserID) == false) { timeSheetModelList = GetEmployeeTimeSheet(TimeSheetQueryModelObj, out errorMessage, "Team"); if (!string.IsNullOrEmpty(errorMessage)) { return(new HttpStatusCodeResult(400, "Given Username does not exists")); } } ViewBag.RequestLevelPerson = "Team"; return(PartialView("TimeSheetPartial", timeSheetModelList)); }
//public void ProcessMonthlyReport() //{ // DateTime lastMonth = DateTime.Now.Date.AddMonths(-1).AddDays(1); // GetTimesheetReportData(lastMonth.Date, DateTime.Now.Date); //} public void GetTimesheetReportData(DateTime FromDate, DateTime ToDate) { TimeSheetQueryModel TimeSheetQueryModelObj = new TimeSheetQueryModel(); ITimesheetHelper EmployeeAttendanceHelperObj = new TimesheetClient(); IList <DailyTimeNotMaintainedModel> lstTimeSheetDailyNotMaintained = new List <DailyTimeNotMaintainedModel>(); IList <WeeklyTimeNotMaintainedModel> lstTimeSheetWeeklyNotMaintained = new List <WeeklyTimeNotMaintainedModel>(); string errorMessage = string.Empty; IList <long> lstUsers; try { TimeSheetQueryModelObj.FromDate = FromDate; TimeSheetQueryModelObj.ToDate = ToDate; TimeSheetQueryModelObj.UserID = EmployeeAttendanceHelperObj.GetHrUserId(); TimeSheetQueryModelObj.MyDirectEmployees = false; List <TimeSheetModel> timeSheetModelList = EmployeeAttendanceHelperObj.GetMyTeamTimeSheet(TimeSheetQueryModelObj.UserID, TimeSheetQueryModelObj.FromDate, TimeSheetQueryModelObj.ToDate, TimeSheetQueryModelObj.MyDirectEmployees); timeSheetModelList = timeSheetModelList.OrderBy(x => x.userID).ToList(); IList <WeeklyDateBlocksModel> lstWeeklyDates = BuildWeeklyDateBlocks(TimeSheetQueryModelObj.FromDate, TimeSheetQueryModelObj.ToDate); lstUsers = timeSheetModelList.Select(x => x.userID).Distinct().ToList(); DailyTimeNotMaintainedModel dayMdl; foreach (var item in timeSheetModelList) { if (!IsOneDayTimeMaintained(item)) { dayMdl = new DailyTimeNotMaintainedModel { WorkingDay = item.WorkingDate, WorkingDayText = item.WorkingDate.DayOfWeek.ToString(), Shift = item.Shift, InTime = item.InTime.Hour + ":" + item.InTime.ToString("mm") + ":" + item.InTime.ToString("ss"), OutTime = item.OutTime.Hour + ":" + item.OutTime.ToString("mm") + ":" + item.OutTime.ToString("ss"), TotalDayWorkingHoursFormatted = item.WorkingHours.ToString("hh") + ":" + item.WorkingHours.ToString("mm") + ":" + item.WorkingHours.ToString("ss"), Status = item.Status, Request = item.Requests, UserId = item.userID }; lstTimeSheetDailyNotMaintained.Add(dayMdl); } } WeeklyTimeNotMaintainedModel weekMdl; TimeSpan totalWeekTime = TimeSpan.Zero; TimeSpan calculatedWeekTime = TimeSpan.Zero; decimal officialPermission = 0; decimal personalPermission = 0; decimal leaveDayQty = 0; decimal workFromHome = 0; bool isWeeklyMet = true; int minHours = (int.Parse)(minWeekTime.Split(':')[0]); int minMins = (int.Parse)(minWeekTime.Split(':')[1]); TimeSpan expectedWeekTime = new TimeSpan(minHours, minMins, 00); foreach (var item in lstUsers) { foreach (var week in lstWeeklyDates) { totalWeekTime = TimeSpan.Zero; calculatedWeekTime = TimeSpan.Zero; officialPermission = 0; personalPermission = 0; leaveDayQty = 0; workFromHome = 0; isWeeklyMet = true; CalculateTimeForAWeek(timeSheetModelList.Where(x => x.WorkingDate.Date >= week.WeekDayStartDate.Date && x.WorkingDate.Date <= week.WeekDayEndDate && x.userID == item).ToList(), out totalWeekTime, out calculatedWeekTime, out officialPermission, out personalPermission, out leaveDayQty, out workFromHome); if (calculatedWeekTime.Ticks < expectedWeekTime.Ticks) { isWeeklyMet = false; } weekMdl = new WeeklyTimeNotMaintainedModel { DateRange = string.Format("{0} {1} - {2} {3}", week.WeekDayStartDate.Day, week.WeekDayStartDate.ToString("MMM"), week.WeekDayEndDate.Day, week.WeekDayEndDate.ToString("MMM")), WorkFromHomeQty = workFromHome, Permissions = "Permission(O: " + officialPermission + "hrs, " + "P: " + personalPermission + "hrs)", TotalWeekWorkingHoursFormatted = ((totalWeekTime.Days) * 24 + totalWeekTime.Hours) + ":" + totalWeekTime.ToString("mm") + ":" + totalWeekTime.ToString("ss"), Requests = leaveDayQty, IsWeeklyTimeMet = isWeeklyMet, UserId = item }; lstTimeSheetWeeklyNotMaintained.Add(weekMdl); } } //Get unique UserIds from both above lists string body = string.Empty; ITimesheetHelper timesheetClient = new TimesheetClient(); IList <long> lstFinalUsers = lstTimeSheetDailyNotMaintained.Select(x => x.UserId).Distinct().ToList(); IList <long> lstFinalWeekwiseUsers = lstTimeSheetWeeklyNotMaintained.Select(x => x.UserId).Distinct().ToList(); lstFinalUsers = lstFinalUsers.Union(lstFinalWeekwiseUsers).ToList(); IList <UserEmailListModel> lstUserEmail = timesheetClient.GetUserEmailData(); List <string> ccEmailaddresses = new List <string>(); foreach (var userId in lstFinalUsers) { if (lstUserEmail.Where(p => p.UserId == userId).Count() > 0 && lstUserEmail.Where(p => p.UserId == userId && !String.IsNullOrEmpty(p.EmployeeEmailAddress)).Count() > 0 && lstUserEmail.FirstOrDefault(x => x.UserId == userId).SkipTimesheetCompliance == false) { ccEmailaddresses = new List <string>(); body = PrepareEmployeeEmailBody(lstTimeSheetDailyNotMaintained.Count > 0 ? lstTimeSheetDailyNotMaintained.Where(x => x.UserId == userId).ToList() : null, lstTimeSheetWeeklyNotMaintained.Count > 0 ? lstTimeSheetWeeklyNotMaintained.Where(x => x.UserId == userId).ToList() : null); if (body != "NoEmail") { ccEmailaddresses.Add(lstUserEmail.Where(x => x.UserId == userId).FirstOrDefault().ReportingToEmailAddress); SendEmail(body, lstUserEmail.Where(x => x.UserId == userId).FirstOrDefault().EmployeeEmailAddress, ccEmailaddresses, "LMS Timesheet Weekly Discrepancy Alert", lstUserEmail.Where(x => x.UserId == userId).FirstOrDefault().FirstName + " " + lstUserEmail.Where(x => x.UserId == userId).FirstOrDefault().LastName); } } } } catch (Exception) { throw; } }