private PageDTO GetDTO(Page page, User user) { var childPages = new List <PagePreviewDTO>(); foreach (var cp in page.ChildPages) { if (PageRules.CanRead(user, cp)) { childPages.Add(GetPreviewDTO(cp)); } } var res = new PageDTO { ChildPages = childPages, Id = page.Id, Name = page.Name, Published = page.Published, Text = page.Text, Access = new DTO.AccessDTO { CanDelete = PageRules.CanDelete(user, page), CanRead = PageRules.CanRead(user, page), CanUpdate = PageRules.CanEdit(user, page) } }; if (page.ParentPage != null) { res.ParentId = page.ParentPage.Id; res.ParentName = page.ParentPage.Name; } else { res.ParentId = -1; } return(res); }