Orc.NuGetExplorer.PagingService.GetPagesCount C# (CSharp) Method

GetPagesCount() private method

private GetPagesCount ( Pager pager, int &leftPages, int &rightPages ) : int
pager Pager
leftPages int
rightPages int
return int
        private int GetPagesCount(Pager pager, out int leftPages, out int rightPages)
        {
            Argument.IsNotNull(() => pager);

            leftPages = 0;
            rightPages = 0;

            var rightItems = pager.ItemsCount - pager.ItemIndex;
            var leftItems = pager.ItemsCount - rightItems;

            var totalRightPages = (int) Math.Ceiling(rightItems/(double) pager.ItemsPerPage) - 1;
            var totalLeftPages = (int) Math.Ceiling(leftItems/(double) pager.ItemsPerPage);

            var totalPagesCount = totalRightPages + totalLeftPages;
            var currentPage = totalLeftPages + 1;
            pager.CurrentPage = currentPage.ToString(CultureInfo.InvariantCulture);

            var leftAdding = true;
            var pageCouner = 0;
            while (pageCouner < pager.VisiblePages - 1 && pageCouner < totalPagesCount)
            {
                if (totalLeftPages.Equals(0))
                {
                    leftAdding = false;
                }

                if (totalRightPages.Equals(0))
                {
                    leftAdding = true;
                }

                if (totalLeftPages > 0 && leftAdding)
                {
                    leftAdding = false;
                    leftPages++;
                    totalLeftPages--;
                    pageCouner++;
                    continue;
                }

                if (totalRightPages > 0 && !leftAdding)
                {
                    leftAdding = true;
                    rightPages++;
                    totalRightPages--;
                    pageCouner++;
                }
            }
            return currentPage;
        }