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 <WeeklyHoursViewModel> GetWeeklyReportHours(DateTime dt, int pageIndex, int pageSize = 10) { var ci = System.Threading.Thread.CurrentThread.CurrentCulture; // 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 groupings = from item in _listCollectionPage.DataList group item by item.Fields.DisplayName into data select data; // Process the data for each user foreach (var grouping in groupings) { var weeklyHrs = new WeeklyHours(); //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) { 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; } } } } return(new WeeklyHoursViewModel() { WeeklyHrs = weeklyHrsList }); }
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> Weekly(string dt) * { * if (User.Identity.IsAuthenticated) * { * // Get UserProfile details * _userProfile = await _dataServiceClient.GetUserProfile(User, HttpContext); * 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.AddDays(-DateTime.Now.Day); * if (dt != null) * { * selDt = Convert.ToDateTime(dt.ToString()); * } * * * var viewModel = await _dataServiceClient.GetWeeklyReportHours( * User, * HttpContext, * selDt); * viewModel.ComputeTotalHrs(); * viewModel.SelectedDate = selDt; * return View(viewModel); * } * else * { * ErrorViewModel EVM = new ErrorViewModel(); * * return View(EVM); * } * } */ //public async Task<IActionResult> Weekly(string dt) public async Task <IActionResult> Weekly(string selMonthDt, string empNameFilter = default(string), int pageId = 0, int pageSize = 10, ListCollectionPage <ReportHours> reportHours = null, int status = 0) { var ci = System.Threading.Thread.CurrentThread.CurrentCulture; if (User.Identity.IsAuthenticated) { // Get UserProfile details if (_userProfile == null) { _userProfile = await _userProfileRepository.GetItemAsync(); } 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.AddDays(-DateTime.Now.Day); int startDay = (int)selDt.DayOfWeek; int dayOfMonth = (int)selDt.Day; while ((startDay > 0) && (dayOfMonth > 1)) { selDt = selDt.AddDays(-1); startDay--; dayOfMonth--; } if (selMonthDt != null) { selDt = Convert.ToDateTime(selMonthDt.ToString()); startDay = (int)selDt.DayOfWeek; dayOfMonth = (int)selDt.Day; while ((startDay > 0) && (dayOfMonth > 1)) { selDt = selDt.AddDays(-1); startDay--; dayOfMonth--; } } //DateTime date = Convert.ToDateTime(selMonthDt); // Get an array tagging each item of the month with the Week number int[] dateWeekNumber = _dataServiceClient.GetDayOfMonthWeekAssignmentArray(selDt); // Get an array tagging each item of the month with the Week number var myWeekNumber = dateWeekNumber[selDt.Day - 1]; var weeklyHrsList = new List <WeeklyHours>(); WeeklyHoursViewModel weeklyViewModel = new WeeklyHoursViewModel(); ListCollectionPage <ReportHours> weeklyTemp = null; //if (Request.Query.Count != 0) //{ //var json = Request.Query["reportHours"]; //weeklyTemp = JsonConvert.DeserializeObject<ListCollectionPage<ReportHours>>(json); //} if (status == 0) { reportHours = await _dataServiceClient.GetWeeklyPageView(selDt, empNameFilter, pageId, pageSize, null, 0); } else if (status == 1) { reportHours = await _dataServiceClient.GetWeeklyPageView(selDt, empNameFilter, pageId, pageSize, reportHours, 1); } else if (status == 2) { reportHours = await _dataServiceClient.GetWeeklyPageView(selDt, empNameFilter, pageId, pageSize, reportHours, 2); } /* * if (teamHours == null) * { * myTeamsHoursViewModel.UserInfo = _userProfile; * return View(myTeamsHoursViewModel); * } */ ViewData["ReportHoursCollection"] = reportHours; IList <ReportHours> reportHoursList = reportHours.DataList; // Group Monthly Report hours by individual User data using DisplayName var groupings = from item in reportHoursList group item by item.Fields.DisplayName into data select data; // Process the data for each user foreach (var grouping in groupings) { var weeklyHrs = new WeeklyHours(); //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) { 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.Saturday: 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; } } } } if (selMonthDt == null) { weeklyViewModel.SelectedDate = fnGetLastMonthLastWeekSunDate(); // Start on Sunday. } else { weeklyViewModel.SelectedDate = selDt; } //weeklyViewModel.u = _userProfile; //WeeklyHrs = weeklyHrsList; weeklyViewModel.WeeklyHrs = weeklyHrsList; return(View(weeklyViewModel)); } else { ErrorViewModel EVM = new ErrorViewModel(); return(View(EVM)); } }
public async Task <TeamHoursViewModel> GetViewModel(DateTime date, int pageIndex = 1, int pageSize = 10) { var ci = System.Threading.Thread.CurrentThread.CurrentCulture; bool userSubmitted = false; bool mgrSubmitted = false; bool submitToHR = false; try { if (_listCollectionPage == null) { _listCollectionPage = await _teamHoursRepository.GetItemsAsync(date, pageSize); } // Exit from search //if (!String.IsNullOrEmpty(_listCollectionPage.SearchQuery)) _listCollectionPage = await _teamHoursRepository.GetItemsAsync(date, pageSize); // Check to see if a new date is being requested if (_listCollectionPage.QueryDate != date.ToString("yyyyMM")) { _listCollectionPage = await _teamHoursRepository.GetItemsAsync(date, pageSize); } if ((pageIndex - _listCollectionPage.CurrentPageIndex) == 1) { // Move next _listCollectionPage = await _teamHoursRepository.GetNextItemsAsync(_listCollectionPage); } else if ((_listCollectionPage.CurrentPageIndex - pageIndex) == 1) { // Move previous _listCollectionPage = await _teamHoursRepository.GetPreviousItemsAsync(_listCollectionPage); } else if (pageIndex > 2) // Increment until we find the correct page. { while (_listCollectionPage.CurrentPageIndex < pageIndex) { _listCollectionPage = await _teamHoursRepository.GetNextItemsAsync(_listCollectionPage); } } //var saveResults = await _graphSharePointService.CreateSiteListItemAsync(analyticsSiteList, dailyOTHoursRootObject.ToString()); // Create the DataTable MyTeamDataTableData dataTableData = new MyTeamDataTableData(); List <TeamHoursListData> th = new List <TeamHoursListData>(); foreach (var item in _listCollectionPage.DataList) { var computedHours = item.Fields.EmailHours + item.Fields.MeetingHours + item.Fields.OtherHours + ((item.Fields.EmailMinutes + item.Fields.MeetingMinutes + item.Fields.OtherMinutes) / 60); var computedMinutes = (item.Fields.EmailMinutes + item.Fields.MeetingMinutes + item.Fields.OtherMinutes) % 60; /* * var AdjustedHours = item.Fields.EmailAdjustedHours + item.Fields.MeetingAdjustedHours + item.Fields.OtherAdjustedHours + * ((item.Fields.EmailAdjustedMinutes + item.Fields.MeetingAdjustedMinutes + item.Fields.OtherAdjustedMinutes) / 60); * var AdjustedMinutes = (item.Fields.EmailAdjustedMinutes + item.Fields.MeetingAdjustedMinutes + item.Fields.OtherAdjustedMinutes) % 60; */ ConcurrentDictionary <string, short> hrsMins = new ConcurrentDictionary <string, short>(); //call to get Final hours for ReportHours Repository data hrsMins = HoursComputeHelper.GetFinalTeamHrsMins(item); var AdjustedHours = hrsMins["FinalTotalHrs"]; var AdjustedMinutes = hrsMins["FinalTotalMins"]; string status = ""; string actionLinks = ""; if (item.Fields.TeamHoursItemState.ToString() == ItemState.Submitted.ToString()) { mgrSubmitted = true; status = item.Fields.ItemState.ToString(); actionLinks += "<span class='recheckHrs icon-noaction'> <i class='ms-Icon ms-Icon--DelveAnalytics font20' title='Request Revision'></i></span>"; } else if (item.Fields.ItemState.ToString() == ItemState.Submitted.ToString()) { userSubmitted = true; status = item.Fields.ItemState.ToString(); actionLinks += "<span class='recheckHrs'> <i class='ms-Icon ms-Icon--DelveAnalytics font20 Pointer' title='Request Revision'></i></span>"; } else if (item.Fields.ItemState.ToString() == ItemState.RequiresRevision.ToString()) { status = "Requires Revision"; actionLinks += "<span class='recheckHrs icon-noaction'> <i class='ms-Icon ms-Icon--DelveAnalytics font20' title='Request Revision'></i></span>"; } else if (item.Fields.ItemState.ToString() == ItemState.NotSubmitted.ToString()) { status = "Not Submitted"; actionLinks += "<span class='recheckHrs icon-noaction'> <i class='ms-Icon ms-Icon--DelveAnalytics font20' title='Request Revision'></i></span>"; } else if (item.Fields.ItemState.ToString() == ItemState.SubmittedBySystem.ToString()) { userSubmitted = true; status = "Submitted By System"; actionLinks += "<span class='recheckHrs'> <i class='ms-Icon ms-Icon--DelveAnalytics font20 Pointer' title='Request Revision'></i></span>"; } else { status = item.Fields.ItemState.ToString(); actionLinks += "<span class='recheckHrs icon-noaction'> <i class='ms-Icon ms-Icon--DelveAnalytics font20' title='Request Revision'></i></span>"; } if (userSubmitted && !mgrSubmitted) // Enable Submit Button. { submitToHR = true; } // reset the 2 local variables - never reset submitToHR. userSubmitted = false; mgrSubmitted = false; var t = new TeamHoursListData { Name = item.Fields.DisplayName, ComputedHours = computedHours + "h " + computedMinutes + "m", AdjustedHours = AdjustedHours + "h " + AdjustedMinutes + "m", ObjectIdentifier = item.Fields.ObjectIdentifier, Status = status, Action = actionLinks, Id = item.Id, Date = item.Fields.Date, SubmittedDate = item.Fields.TeamHoursSubmittedDate }; th.Add(t); } dataTableData.recordsTotal = (pageIndex * pageSize) + th.Count + 1; int recordsFiltered = (pageIndex * pageSize) + th.Count + 1; dataTableData.recordsFiltered = recordsFiltered; dataTableData.data = th; dataTableData.SubmittedDate = (dataTableData.data.Exists(x => x.SubmittedDate != DateTime.MinValue) ? dataTableData.data.FirstOrDefault().SubmittedDate.ToShortDateString() : DateTime.MinValue.ToShortDateString()); //dataTableData.SubmitEnable = (dataTableData.data.Exists(x => x.SubmittedDate == DateTime.MinValue) ? true : false); dataTableData.SubmitEnable = (dataTableData.data.Exists(x => x.Status == ItemState.Submitted.ToString()) ? true : false); dataTableData.SubmitToHR = submitToHR; var teamHoursViewModel = new TeamHoursViewModel { MyTeamDataTableData = dataTableData, RequestRevision = "is-disabled", EditTeamHours = "is-disabled", }; return(teamHoursViewModel); } catch (Exception ex) { return(new TeamHoursViewModel()); } }