コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
 public WeeklyHoursViewModel()
 {
     MyWeeklyHoursDataTableData = new MyWeeklyHoursDataTableData();
     PaginationInfo             = new PaginationInfoViewModel();
 }