// Returns up to 25 results from the database based on page number. public Page GetPageData(int pageNumber, bool fullData, bool hardCount) { if (pageNumber < 1) // Please pass in a real page number. { return(null); } int count = SQLConnection.ReadPersonTableCount(hardCount); if (count < 1) { return(null); } Page page = new Page() { ActivePage = pageNumber }; if (count < (defaultTake + 1)) // No need to run logic when we only have 25 records. { page.TotalPages = 1; page.ActivePage = 1; foreach (PersonData personData in databaseContext.PersonData.ToList()) { page.Results.Add(new MultiModel() { ID = personData.ID, PersonDataTable = personData }); } return(page); } page.TotalPages = ((count - 1) / defaultTake) + 1; // The above checks ensures this does not go badly. if (pageNumber >= page.TotalPages) { page.ActivePage = page.TotalPages; } if (fullData) { if (pageNumber == 1) { page.Results = GetFullResults(0, defaultTake); } else { page.Results = GetFullResults(calculateSkip(pageNumber), defaultTake); } return(page); } List <PersonData> pagedPersonData = null; if (pageNumber == 1) { pagedPersonData = GetPersonResults(0, defaultTake); } else { pagedPersonData = GetPersonResults(calculateSkip(pageNumber), defaultTake); } try { foreach (PersonData personData in pagedPersonData) { page.Results.Add(new MultiModel() { ID = personData.ID, PersonDataTable = personData }); } } catch (Exception Ex) { LogWriter.Exception("Error getting page data. Page Number: " + pageNumber, Ex); } return(page); }