protected virtual PageReference GetDatePageRef(IHasDateContainer hasDateContainerPage, PageData dateContainerRoot, DateTime published, IContentRepository contentRepository)
        {
            foreach (var yearContainer in contentRepository.GetChildren<PageData>(dateContainerRoot.ContentLink))
            {
                if (yearContainer.Name == published.Year.ToString())
                {
                    PageReference result;
                    foreach (PageData monthContainer in contentRepository.GetChildren<PageData>(yearContainer.ContentLink))
                    {
                        if (monthContainer.Name == published.Month.ToString())
                        {
                            result = monthContainer.PageLink;
                            return result;
                        }
                    }

                    result = CreateDateContainer(hasDateContainerPage, yearContainer.PageLink, published.Month.ToString(), new DateTime(published.Year, published.Month, 1));
                    return result;
                }
            }
            PageReference parent = CreateDateContainer(hasDateContainerPage, dateContainerRoot.ContentLink, published.Year.ToString(), new DateTime(published.Year, 1, 1));
            return CreateDateContainer(hasDateContainerPage, parent, published.Month.ToString(), new DateTime(published.Year, published.Month, 1));
        }
 protected virtual PageReference CreateDateContainer(IHasDateContainer hasDateContainerPage, ContentReference parent, string name, DateTime startPublish)
 {
     var dateContainer = hasDateContainerPage.ConstructDateContainer(parent, name, startPublish);
     return _contentRepository.Save(dateContainer, SaveAction.Publish, AccessLevel.Publish).ToPageReference();
 }