public MonthlyHoursViewModel() { MyMonthlyHoursDataTableData = new MyMonthlyHoursDataTableData(); PaginationInfo = new PaginationInfoViewModel(); }
public async Task <MyMonthlyHoursViewModel> 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 { // Other page //_listCollectionPage = await _reportHoursRepository.GetPageItemsAsync(_listCollectionPage, pageIndex); } // Create the DataTable MyMonthlyHoursDataTableData dataTableData = new MyMonthlyHoursDataTableData(); // This is the MonthlyHoursListData. List <MonthlyHoursListData> mh = new List <MonthlyHoursListData>(); // Get an array tagging each item of the month with the Week number int[] dateWeekNumber = this.GetDayOfMonthWeekAssignmentArray(dt); //var monthlyHrsList = new List<MonthlyHours>(); // variables to compute total hours per week. int week1TotHrs = 0; int week1TotMins = 0; int week2TotHrs = 0; int week2TotMins = 0; int week3TotHrs = 0; int week3TotMins = 0; int week4TotHrs = 0; int week4TotMins = 0; int week5TotHrs = 0; int week5TotMins = 0; int monthTotalHrs = 0; int monthTotalMins = 0; // Populate MonthlyHoursList // Group Monthly Report hours by individual User data using DisplayName var groupings = from item in _listCollectionPage.DataList group item by item.Fields.DisplayName into data select data.Distinct(); //var monthlyHours = new MonthlyHours(); // Process the data for each user foreach (var grouping in groupings) { var thisGrouping = new MonthlyHoursListData(); //logic for handling duplicate records coming for the IW var count = grouping.Count(); var noOfDays = DateTime.DaysInMonth(dt.Year, dt.Month); int diff = 0; if (count > noOfDays) { diff = count - noOfDays; } var reportHoursforIW = grouping.Skip(diff); // Compute the total for each week of the month by processing daily records foreach (var item in reportHoursforIW) { thisGrouping.EmpName = item.Fields.DisplayName.ToString(); thisGrouping.ManagerName = item.Fields.ManagerDisplayName.ToString(); var itemDate = DateTime.ParseExact(item.Fields.Date, "yyyyMMdd", ci); ConcurrentDictionary <string, short> hrsMins = new ConcurrentDictionary <string, short>(); //call to get Final hours for ReportHours Repository data hrsMins = HoursComputeHelper.GetFinalHrsMins(item); var totalHours = hrsMins["FinalTotalHrs"]; var totalMins = hrsMins["FinalTotalMins"]; if ((itemDate.Day - 1) < DateTime.DaysInMonth(dt.Year, dt.Month)) { var theWeekNumber = dateWeekNumber[itemDate.Day - 1]; switch (dateWeekNumber[itemDate.Day - 1]) { case 1: week1TotHrs += totalHours; week1TotMins += totalMins; break; case 2: week2TotHrs += totalHours; week2TotMins += totalMins; break; case 3: week3TotHrs += totalHours; week3TotMins += totalMins; break; case 4: week4TotHrs += totalHours; week4TotMins += totalMins; break; case 5: week5TotHrs += totalHours; week5TotMins += totalMins; break; } } else { week5TotHrs += totalHours; week5TotMins += totalMins; } } //Logic to adjust values 60 min = hrs++ week1TotHrs = (week1TotHrs + (week1TotMins / 60)); week1TotMins = (week1TotMins % 60); week2TotHrs = (week2TotHrs + (week2TotMins / 60)); week2TotMins = (week2TotMins % 60); week3TotHrs = (week3TotHrs + (week3TotMins / 60)); week3TotMins = (week3TotMins % 60); week4TotHrs = (week4TotHrs + (week4TotMins / 60)); week4TotMins = (week4TotMins % 60); week5TotHrs = (week5TotHrs + (week5TotMins / 60)); week5TotMins = (week5TotMins % 60); monthTotalMins = (week1TotMins + week2TotMins + week3TotMins + week4TotMins + week5TotMins); monthTotalHrs = (week1TotHrs + week2TotHrs + week3TotHrs + week4TotHrs + week5TotHrs) + (monthTotalMins / 60); monthTotalMins = monthTotalMins % 60; // Create display string. var week1TotalHrMns = week1TotHrs + "h " + week1TotMins + "m"; var week2TotalHrMns = week2TotHrs + "h " + week2TotMins + "m"; var week3TotalHrMns = week3TotHrs + "h " + week3TotMins + "m"; var week4TotalHrMns = week4TotHrs + "h " + week4TotMins + "m"; var week5TotalHrMns = week5TotHrs + "h " + week5TotMins + "m"; //var monthlyTotalHrMns = monthTotalHrs + "h " + monthTotalMins + "m"; thisGrouping.Week1TotalHrMns = week1TotalHrMns; thisGrouping.Week2TotalHrMns = week2TotalHrMns; thisGrouping.Week3TotalHrMns = week3TotalHrMns; thisGrouping.Week4TotalHrMns = week4TotalHrMns; thisGrouping.Week5TotalHrMns = week5TotalHrMns; //thisGrouping.MonthlyTotalHrMns = monthlyTotalHrMns; monthTotalMins = (week1TotMins + week2TotMins + week3TotMins + week4TotMins + week5TotMins); monthTotalHrs = (week1TotHrs + week2TotHrs + week3TotHrs + week4TotHrs + week5TotHrs) + (monthTotalMins / 60); monthTotalMins = monthTotalMins % 60; var monthlyTotalHrMns = monthTotalHrs + "h " + monthTotalMins + "m"; thisGrouping.MonthlyTotalHrMns = monthlyTotalHrMns; //Add the computed object(for each employee) to the list of monthly hours for the HR mh.Add(thisGrouping); // initializing the values to 0 for the next employee week1TotHrs = 0; week1TotMins = 0; week2TotHrs = 0; week2TotMins = 0; week3TotHrs = 0; week3TotMins = 0; week4TotHrs = 0; week4TotMins = 0; week5TotHrs = 0; week5TotMins = 0; } // end for each grouping. //dataTableData.draw = draw; dataTableData.recordsTotal = (pageIndex * pageSize) + mh.Count + 1; int recordsFiltered = (pageIndex * pageSize) + mh.Count + 1; dataTableData.recordsFiltered = recordsFiltered; dataTableData.Data = mh; var monthlyHoursViewModel = new MyMonthlyHoursViewModel { MyMonthlyHoursDataTableData = dataTableData, RequestRevision = "is-disabled", PaginationInfo = new PaginationInfoViewModel { CurrentPage = pageIndex, PageSize = pageSize, Next = "is-disabled", Previous = "is-disabled" } }; return(monthlyHoursViewModel); } catch (Exception ex) { return(new MyMonthlyHoursViewModel()); } }
public async Task <IActionResult> MonthlyHoursLoadRequest(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; } MyMonthlyHoursDataTableData dataTableData = new MyMonthlyHoursDataTableData(); if (User.Identity.IsAuthenticated) { MyMonthlyHoursViewModel myMonthlyHoursViewModel = new MyMonthlyHoursViewModel(); _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; // on first call, datepicker may not pass date. // If date == null, default to last month. DateTime selDt = DateTime.Now.AddMonths(-1); if (date != null) { selDt = DateTime.Parse(date); } string searchQuery = HttpContext.Request.Query["search[value]"].ToString(); MyMonthlyHoursViewModel monthlyHoursViewModel = new MyMonthlyHoursViewModel(); // Generate TEST data... //List<MonthlyHoursListData> mh = new List<MonthlyHoursListData>(); //for (int i = 0; i < length; i++) //{ // //return View(); // MonthlyHoursListData t = new MonthlyHoursListData(); // t.EmpName = "test" + i + start; // t.ManagerName = "Anil"; // t.Week1TotalHrMns = i.ToString(); // t.Week2TotalHrMns = i+1.ToString(); // t.Week3TotalHrMns = i+2.ToString(); // t.Week4TotalHrMns = i+3.ToString(); // t.Week5TotalHrMns = i+4.ToString(); // t.MonthlyTotalHrMns = i+5.ToString(); // mh.Add(t); //} if (searchtext != null) { monthlyHoursViewModel = await _reportHoursService.GetSearchResults(selDt, searchtext, pageIndex, length); dataTableData = monthlyHoursViewModel.MyMonthlyHoursDataTableData; } else { monthlyHoursViewModel = await _reportHoursService.GetViewModel(selDt, pageIndex, length); dataTableData = monthlyHoursViewModel.MyMonthlyHoursDataTableData; } dataTableData.draw = draw; dataTableData.recordsTotal = (pageIndex * length) + dataTableData.Data.Count + 1; int recordsFiltered = (pageIndex * length) + dataTableData.Data.Count + 1; dataTableData.recordsTotal = int.MaxValue; dataTableData.recordsFiltered = recordsFiltered; if (date == null) { myMonthlyHoursViewModel.SearchDate = myMonthlyHoursViewModel.fnGetLastMonthEndDate(); } else { myMonthlyHoursViewModel.SearchDate = selDt; } myMonthlyHoursViewModel.UserInfo = _userProfile; // Output TEST data... //dataTableData.Data = mh; return(Json(dataTableData)); } else { ErrorViewModel EVM = new ErrorViewModel(); return(View(EVM)); } }