public async Task <WeeklyHoursViewModel> GetViewModel(DateTime dt, int pageIndex = 1, int pageSize = 10) { var ci = System.Threading.Thread.CurrentThread.CurrentCulture; try { if (_listCollectionPage == null) { _listCollectionPage = await _reportHoursRepository.GetItemsAsync(dt, pageSize); } // Check to see if a new date is being requested if (_listCollectionPage.QueryDate != dt.ToString("yyyyMM")) { _listCollectionPage = await _reportHoursRepository.GetItemsAsync(dt, pageSize); } if ((pageIndex - _listCollectionPage.CurrentPageIndex) == 1) { // Move next _listCollectionPage = await _reportHoursRepository.GetNextItemsAsync(_listCollectionPage); } else if ((_listCollectionPage.CurrentPageIndex - pageIndex) == 1) { // Move previous _listCollectionPage = await _reportHoursRepository.GetPreviousItemsAsync(_listCollectionPage); } else if (pageIndex > 2) // Increment until we find the correct page. { while (_listCollectionPage.CurrentPageIndex < pageIndex) { _listCollectionPage = await _reportHoursRepository.GetNextItemsAsync(_listCollectionPage); } } // Create the DataTable MyWeeklyHoursDataTableData dataTableData = new MyWeeklyHoursDataTableData(); // This is the WeeklyHoursListData. List <WeeklyHoursListData> weeklyHrsListData = new List <WeeklyHoursListData>(); // Get an array tagging each item of the month with the Week number int[] dateWeekNumber = this.GetDayOfMonthWeekAssignmentArray(dt); var myWeekNumber = dateWeekNumber[dt.Day - 1]; var weeklyHrsList = new List <WeeklyHours>(); //var items = await this._reportHoursRepository.GetItemsAsync(dt); // Group Report hours by individual User data using DisplayName var monthDate = from item in _listCollectionPage.DataList group item by item.Fields.DisplayName into data select data; DateTime weekStartDate = dt; DateTime weekEndDate = weekStartDate; while (weekEndDate.DayOfWeek != DayOfWeek.Saturday) { weekEndDate = weekEndDate.AddDays(1); } //var groupings = monthDate.ToList().Where(k => DateTime.ParseExact(k.Contains, "yyyyMMdd", ci).Date >= LweekStEndDt["weekStDate"].Date && DateTime.ParseExact(k.Fields.Date, "yyyyMMdd", ci).Date <= LweekStEndDt["weekEndDate"].Date); // Process the data for each user foreach (var grouping in monthDate) { var thisGrouping = new WeeklyHoursListData(); int SundayMins = 0; int SundayHours = 0; int MondayMins = 0; int MondayHours = 0; int TuesdayMins = 0; int TuesdayHours = 0; int WednesdayMins = 0; int WednesdayHours = 0; int ThursdayMins = 0; int ThursdayHours = 0; int FridayMins = 0; int FridayHours = 0; int SaturdayMins = 0; int SaturdayHours = 0; var weekTotalMns = 0; var TotalMins = 0; var weekTotalHrs = 0; var TotalHours = 0; var weeklyHrs = new WeeklyHours(); var thisWeekData = grouping.Where(k => DateTime.ParseExact(k.Fields.Date, "yyyyMMdd", ci).Date >= weekStartDate.Date && DateTime.ParseExact(k.Fields.Date, "yyyyMMdd", ci).Date <= weekEndDate.Date); //var resultLastWeek = grouping.Where(k => DateTime.ParseExact(k.Fields.Date, "yyyyMMdd", ci).Date >= weekStartDate.Date && DateTime.ParseExact(k.Fields.Date, "yyyyMMdd", ci).Date <= LweekStEndDt["weekEndDate"].Date); //Add the computed object(for each employee) to the list of weekly hours for the HR weeklyHrsList.Add(weeklyHrs); weeklyHrs.EmpName = grouping.Key; //foreach (var item in grouping) foreach (var item in thisWeekData) { thisGrouping.ENm = item.Fields.DisplayName.ToString(); thisGrouping.MNm = item.Fields.ManagerDisplayName.ToString(); Dictionary <string, short> hrsMins = new Dictionary <string, short>(); //call to get Final hours for ReportHours Repository data hrsMins = HoursComputeHelper.GetFinalHrsMins(item); var totalHours = hrsMins["FinalTotalHrs"]; var totalMins = hrsMins["FinalTotalMins"]; if (weeklyHrs.MgrName == null) { weeklyHrs.MgrName = item.Fields.ManagerDisplayName; } var itemDate = DateTime.ParseExact(item.Fields.Date, "yyyyMMdd", ci); //var theWeekNumber = dateWeekNumber[itemDate.Day - 1]; //if (dateWeekNumber[itemDate.Day - 1] == myWeekNumber) //{ switch (itemDate.DayOfWeek) { case System.DayOfWeek.Sunday: weeklyHrs.SundayHours += totalHours; weeklyHrs.SundayMins += totalMins; break; case System.DayOfWeek.Monday: weeklyHrs.MondayHours += totalHours; weeklyHrs.MondayMins += totalMins; break; case System.DayOfWeek.Tuesday: weeklyHrs.TuesdayHours += totalHours; weeklyHrs.TuesdayMins += totalMins; break; case System.DayOfWeek.Wednesday: weeklyHrs.WednesdayHours += totalHours; weeklyHrs.WednesdayMins += totalMins; break; case System.DayOfWeek.Thursday: weeklyHrs.ThursdayHours += totalHours; weeklyHrs.ThursdayMins += totalMins; break; case System.DayOfWeek.Friday: weeklyHrs.FridayHours += totalHours; weeklyHrs.FridayMins += totalMins; break; default: weeklyHrs.SaturdayHours += totalHours; weeklyHrs.SaturdayMins += totalMins; break; } SundayMins = (short)(weeklyHrs.SundayMins % 60); SundayHours = (short)(weeklyHrs.SundayHours + (weeklyHrs.SundayMins / 60)); MondayMins = (short)(weeklyHrs.MondayMins % 60); MondayHours = (short)(weeklyHrs.MondayHours + (weeklyHrs.MondayMins / 60)); TuesdayMins = (short)(weeklyHrs.TuesdayMins % 60); TuesdayHours = (short)(weeklyHrs.TuesdayHours + (weeklyHrs.TuesdayMins / 60)); WednesdayMins = (short)(weeklyHrs.WednesdayMins % 60); WednesdayHours = (short)(weeklyHrs.WednesdayHours + (weeklyHrs.WednesdayMins / 60)); ThursdayMins = (short)(weeklyHrs.ThursdayMins % 60); ThursdayHours = (short)(weeklyHrs.ThursdayHours + (weeklyHrs.ThursdayMins / 60)); FridayMins = (short)(weeklyHrs.FridayMins % 60); FridayHours = (short)(weeklyHrs.FridayHours + (weeklyHrs.FridayMins / 60)); SaturdayMins = (short)(weeklyHrs.SaturdayMins % 60); SaturdayHours = (short)(weeklyHrs.SaturdayHours + (weeklyHrs.SaturdayMins / 60)); weekTotalMns = (SundayMins + MondayMins + TuesdayMins + WednesdayMins + ThursdayMins + FridayMins + SaturdayMins) % 60; TotalMins = (short)weekTotalMns; weekTotalHrs = (SundayHours + MondayHours + TuesdayHours + WednesdayHours + ThursdayHours + FridayHours + SaturdayHours) + (weekTotalMns / 60); TotalHours = (short)weekTotalHrs; // This is what the view needs. } // end for each grouping. var weeklySundayHrMns = SundayHours + "h " + SundayMins + "m"; var weeklyMondayHrMns = MondayHours + "h " + MondayMins + "m"; var weeklyTuesdayHrMns = TuesdayHours + "h " + TuesdayMins + "m"; var weeklyWednesdayHrMns = WednesdayHours + "h " + WednesdayMins + "m"; var weeklyThursdayHrMns = ThursdayHours + "h " + ThursdayMins + "m"; var weeklyFridayHrMns = FridayHours + "h " + FridayMins + "m"; var weeklySaturdayHrMns = SaturdayHours + "h " + SaturdayMins + "m"; var weeklylyTotalHrMns = TotalHours + "h " + TotalMins + "m"; thisGrouping.suHM = weeklySundayHrMns.ToString(); thisGrouping.MonHM = weeklyMondayHrMns.ToString(); thisGrouping.TuHM = weeklyTuesdayHrMns.ToString(); thisGrouping.weHM = weeklyWednesdayHrMns.ToString(); thisGrouping.ThHM = weeklyThursdayHrMns.ToString(); thisGrouping.frHM = weeklyFridayHrMns.ToString(); thisGrouping.SaHM = weeklySaturdayHrMns.ToString(); thisGrouping.TotHM = weeklylyTotalHrMns.ToString(); //Add the computed object(for each employee) to the list of monthly hours for the HR weeklyHrsListData.Add(thisGrouping); SundayMins = 0; SundayHours = 0; MondayMins = 0; MondayHours = 0; TuesdayMins = 0; TuesdayHours = 0; WednesdayMins = 0; WednesdayHours = 0; ThursdayMins = 0; ThursdayHours = 0; FridayMins = 0; FridayHours = 0; SaturdayMins = 0; SaturdayHours = 0; weekTotalMns = 0; TotalMins = 0; weekTotalHrs = 0; TotalHours = 0; } //dataTableData.draw = draw; dataTableData.recordsTotal = (pageIndex * pageSize) + weeklyHrsListData.Count + 1; int recordsFiltered = (pageIndex * pageSize) + weeklyHrsListData.Count + 1; dataTableData.recordsFiltered = recordsFiltered; dataTableData.data = weeklyHrsListData; var weeklyHoursViewModel = new WeeklyHoursViewModel { MyWeeklyHoursDataTableData = dataTableData, PaginationInfo = new PaginationInfoViewModel { CurrentPage = pageIndex, PageSize = pageSize, Next = "is-disabled", Previous = "is-disabled" } }; return(weeklyHoursViewModel); } catch (Exception ex) { _logger.LogError("Error getting the weekly hours view model: " + ex.Message); return(new WeeklyHoursViewModel()); } }
public async Task <IActionResult> WkLdReq(string date, string searchtext, int draw, int start = 0, int length = 10) { int pageIndex = 0; if (start != 0) { pageIndex = start / length + 1; } if (pageIndex == 0) { pageIndex = 1; } MyWeeklyHoursDataTableData dataTableData = new MyWeeklyHoursDataTableData(); if (User.Identity.IsAuthenticated) { WeeklyHoursViewModel myWeeklyHoursViewModel = new WeeklyHoursViewModel(); _userProfile = await _dataServiceClient.GetUserProfile(); ViewData["Email"] = _userProfile.Fields.Upn; ViewData["IsManager"] = _userProfile.Fields.IsManager; ViewData["IsHr"] = _userProfile.Fields.IsHr; ViewData["IsAdmin"] = _userProfile.Fields.IsAdmin; ViewData["UserImage"] = _userProfile.Fields.UserPicture; DateTime selDt = DateTime.Now.AddMonths(-1); if (date != null) { selDt = DateTime.Parse(date); int startDay = (int)selDt.DayOfWeek; int dayOfMonth = (int)selDt.Day; while ((startDay > 0) && (dayOfMonth > 1)) { selDt = selDt.AddDays(-1); startDay--; dayOfMonth--; } } string searchQuery = HttpContext.Request.Query["search[value]"].ToString(); WeeklyHoursViewModel weeklyHoursViewModel = new WeeklyHoursViewModel(); if (searchtext != null) { weeklyHoursViewModel = await _reportHoursService.GetSearchResults(selDt, searchtext, pageIndex, length); dataTableData = weeklyHoursViewModel.MyWeeklyHoursDataTableData; } else { weeklyHoursViewModel = await _reportHoursService.GetViewModel(selDt, pageIndex, length); dataTableData = weeklyHoursViewModel.MyWeeklyHoursDataTableData; } dataTableData.draw = draw; dataTableData.recordsTotal = (pageIndex * length) + dataTableData.data.Count + 1; int recordsFiltered = (pageIndex * length) + dataTableData.data.Count + 1; dataTableData.recordsFiltered = recordsFiltered; if (date == null) { myWeeklyHoursViewModel.SearchDate = myWeeklyHoursViewModel.fnGetLastMonthLastWeekSunDate(); // Start on Sunday. } else { int startDay = (int)selDt.DayOfWeek; int dayOfMonth = (int)selDt.Day; while ((startDay > 0) && (dayOfMonth > 1)) { selDt = selDt.AddDays(-1); startDay--; dayOfMonth--; } myWeeklyHoursViewModel.SearchDate = selDt; } myWeeklyHoursViewModel.UserInfo = _userProfile; return(Json(dataTableData)); } else { ErrorViewModel EVM = new ErrorViewModel(); return(View(EVM)); } }
public WeeklyHoursViewModel() { MyWeeklyHoursDataTableData = new MyWeeklyHoursDataTableData(); PaginationInfo = new PaginationInfoViewModel(); }