Carrotware.CMS.Core.SiteNavHelperReal.GetPageCrumbNavByContent C# (CSharp) Method

GetPageCrumbNavByContent() private method

private GetPageCrumbNavByContent ( vw_carrot_Content content, bool bActiveOnly ) : List
content vw_carrot_Content
bActiveOnly bool
return List
        private List<SiteNav> GetPageCrumbNavByContent(vw_carrot_Content content, bool bActiveOnly)
        {
            Guid siteID = Guid.Empty;
            Guid rootContentID = Guid.Empty;
            Guid? parentContentID = null;
            int iOrder = 1000000;

            List<SiteNav> lstContent = new List<SiteNav>();

            if (content != null) {
                rootContentID = content.Root_ContentID;
                siteID = content.SiteID;
                parentContentID = content.Parent_ContentID;
                SiteNav sn = new SiteNav(content);
                sn.NavOrder = iOrder + 100;
                lstContent.Add(sn);
            }

            if (rootContentID != Guid.Empty) {
                Guid? gLast = parentContentID;

                while (gLast.HasValue) {
                    SiteNav nav = GetPageNavigation(siteID, gLast.Value, false);
                    gLast = null;

                    if (nav != null) {
                        nav.NavOrder = iOrder;
                        lstContent.Add(nav);
                        iOrder--;

                        gLast = nav.Parent_ContentID;
                    }
                }
            }

            SiteNav home = FindHome(siteID, false);
            home.NavOrder = 0;

            if (!lstContent.Where(x => x.Root_ContentID == home.Root_ContentID).Any()) {
                lstContent.Add(home);
            }

            return lstContent.OrderBy(x => x.NavOrder).Where(x => x.PageActive == true && x.IsRetired == false && x.IsUnReleased == false || bActiveOnly == false).ToList();
        }