/// <inheritdoc/>
        public async Task <IPagedList <Contract> > GetContractRemindersAsync(DateTime currentDateTimeMinusNumberOfDays, int pageNumber, int pageSize, ContractSortOptions sort, SortDirection order)
        {
            //return all contracts that need reminders sent.
            var query = _repository
                        .GetMany(q =>
                                 ((q.LastEmailReminderSent == null && currentDateTimeMinusNumberOfDays >= q.CreatedAt) ||
                                  (q.LastEmailReminderSent != null && currentDateTimeMinusNumberOfDays >= q.LastEmailReminderSent)) &&
                                 q.Status == (int)ContractStatus.PublishedToProvider);

            var sortedContracts = query.OrderByDynamic(sort.ToString(), order);

            return(await sortedContracts.ToPagedList(pageNumber, pageSize));
        }
        public void OrderByDynamic_UKPRN_Desc_Test()
        {
            //Arrange
            ContractSortOptions sort  = ContractSortOptions.UKPRN;
            SortDirection       order = SortDirection.Desc;
            var contracts             = GetContracts().AsQueryable();

            var mockDbSet = new DbSetMock <Contract>(contracts, (c, _) => c.Id, true);

            var mockRepo = Mock.Of <IRepository <Contract> >(MockBehavior.Strict);

            Mock.Get(mockRepo)
            .Setup(r => r.GetMany(It.IsAny <Expression <Func <Contract, bool> > >()))
            .Returns(mockDbSet.Object);

            //Act
            var result = mockDbSet.Object.OrderByDynamic(sort.ToString(), order).ToList();

            //Assert
            result.FirstOrDefault().Id.Should().Be(10);
        }