Ejemplo n.º 1
0
        // 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);
        }