@using ContentModels = Umbraco.Web.PublishedModels;
@using Umbraco.Web;
@inherits Umbraco.Web.Macros.PartialViewMacroPage
@{
    var startNodeId = Model.MacroParameters["startNodeId"] != null ? Model.MacroParameters["startNodeId"] : Model.Content.Id;


    var numberOfPosts = 3;
    if (Model.MacroParameters["numberOfPosts"] != null)
    {
        int.TryParse((string)Model.MacroParameters["numberOfPosts"], out numberOfPosts);
    }


}
@if (startNodeId != null)
{
    @* Get the starting page *@
    var startNode = Umbraco.Content(startNodeId);

    if (startNode == null)
    {
        <div class="blogposts">
            <h1>There are no posts at this time, try again later.</h1>
        </div>

        return;
    }

    //Gets all blogposts to calculate pages
    var blogposts = startNode.Children.OrderBy(x => x.CreateDate).ToList();
    var pageCount = (int)Math.Ceiling((double)blogposts.Count / (double)numberOfPosts);
    //gets the page from the querystring and sets it to one if it is out of range
    var page = 1;
    if (!string.IsNullOrEmpty(Request.QueryString["page"]))
    {
        int.TryParse(Request.QueryString["page"], out page);
        if (page <= 0 || page > pageCount)
        {
            page = 1;
        }
    }
    //Gets the blogposts for the current page
    var pagedBlogposts = blogposts.Skip((page - 1) * numberOfPosts).Take(numberOfPosts).ToList();

    if (pagedBlogposts.Count > 0)
    {
        <div class="blogposts">

            @foreach (ContentModels.Blogpost post in pagedBlogposts)
            {
                <a href="@post.Url" class="blogpost">
                    <div class="blogpost-meta">
                        <small class="blogpost-date">@post.CreateDate.ToShortDateString()</small>
                        <small class="blogpost-cat">
                            @Html.Partial("~/Views/Partials/CategoryLinks.cshtml", post.Categories)
                        </small>
                    </div>
                    <h3 class="blogpost-title">@post.PageTitle</h3>
                    <div class="blogpost-excerpt">@post.Excerpt</div>
                </a>
            }
        </div>
    }

    if (blogposts.Count > numberOfPosts)
    {
        <div class="pagination">
            <nav class="nav-bar nav-bar--center">
                @if (page <= 1)
                {
                    <span class="nav-link nav-link--black nav-link--disabled">Prev</span>
                }
                else
                {
                    <a class="nav-link nav-link--black" href="@(Model.Content.Url + "?page=" + (page - 1))">Prev</a>
                }

                @for (int i = 1; i <= pageCount; i++)
                {
                    <a class="nav-link nav-link--black @(page == i ? " nav-link--active" : null)" href="@(Model.Content.Url + "?page=" + i)">@i</a>
                }
                @if (page == pageCount)
                {
                    <span class="nav-link nav-link--black nav-link--disabled">Next</span>
                }
                else
                {
                    <a class="nav-link nav-link--black" href="@(Model.Content.Url + "?page=" + (page + 1))">Next</a>
                }

            </nav>
        </div>
    }
}

