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));
            }
        }
Example #2
0
        /*
         * 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));
            }
        }