public List <ApprenticeshipVacancy> Find(ApprenticeshipVacancyQuery query, out int totalResultsCount) { _logger.Debug("Calling database to find apprenticeship vacancies"); var liveStatus = _mapper.Map <ProviderVacancyStatuses, string>(ProviderVacancyStatuses.Live); var coreQuery = @" FROM Vacancy.Vacancy WHERE Vacancy.VacancyStatusCode = 'LIV' -- TODO: Probably would want to parameterise from constant " + (string.IsNullOrWhiteSpace(query.FrameworkCodeName) ? "" : "AND Vacancy.FrameworkCodeName = @FrameworkCodeName") + @" " + (query.LiveDate.HasValue ? "AND Vacancy.PublishedDateTime >= @LiveDate" : "") + @" " + (query.LatestClosingDate.HasValue ? "AND Vacancy.ClosingDate <= @LiveDate" : ""); // Vacancy.PublishedDateTime >= @LiveDate was Vacancy.DateSubmitted >= @LiveDate // TODO: Vacancy.DateSubmitted should be DateLive (or DatePublished)??? var data = _getOpenConnection.QueryMultiple <int, Vacancy.Vacancy>(@" SELECT COUNT(*) " + coreQuery + @" SELECT * " + coreQuery + @" ORDER BY Vacancy.VacancyReferenceNumber OFFSET ((@CurrentPage - 1) * @PageSize) ROWS FETCH NEXT @PageSize ROWS ONLY ", query); totalResultsCount = data.Item1.Single(); var dbVacancies = data.Item2; _logger.Debug("Found {0} apprenticeship vacanc(ies)", dbVacancies.Count); return(new List <ApprenticeshipVacancy>()); }