public async Task ShouldGetDeptHistoriesForEachEmployee(int employeeID, int numberOfRecords)
        {
            var departmentHistoryParameters = new DepartmentHistoryParameters {
                PageNumber = 1, PageSize = 10
            };
            var records = await _deptHistoryRepo.GetDepartmentHistories(employeeID, departmentHistoryParameters);

            var count = records.Count;

            Assert.Equal(count, numberOfRecords);
        }
        public async Task <IActionResult> GetDeptHistories(int employeeID, [FromQuery] DepartmentHistoryParameters deptHistoryParameters)
        {
            var deptHistories = await _repository.DepartmentHistory.GetDepartmentHistories(employeeID, deptHistoryParameters);

            var metadata = new
            {
                deptHistories.TotalCount,
                deptHistories.PageSize,
                deptHistories.CurrentPage,
                deptHistories.TotalPages,
                deptHistories.HasNext,
                deptHistories.HasPrevious
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

            return(Ok(deptHistories));
        }
        public async Task <PagedList <EmployeeDepartmentHistory> > GetDepartmentHistories(int employeeID, DepartmentHistoryParameters deptHistoryParameters)
        {
            if (await IsValidEmployeeID(employeeID))
            {
                var pagedList = await PagedList <EmployeeDepartmentHistory> .ToPagedList(
                    DbContext.EmployeeDepartmentHistory
                    .AsNoTracking()
                    .Where(hist => hist.BusinessEntityID == employeeID)
                    .OrderBy(hist => hist.StartDate)
                    .AsQueryable(),
                    deptHistoryParameters.PageNumber,
                    deptHistoryParameters.PageSize);

                return(pagedList);
            }
            else
            {
                var msg = $"Error: '{employeeID}' is not a valid employee ID.";
                RepoLogger.LogError(CLASSNAME + ".GetDepartmentHistories " + msg);
                throw new AdventureWorksInvalidEntityIdException(msg);
            }
        }