/// <summary> /// Handles the Delete event of the rGrid control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs"/> instance containing the event data.</param> protected void rGrid_Delete(object sender, RowEventArgs e) { var rockContext = new RockContext(); var pageService = new PageService(rockContext); var pageViewService = new PageViewService(rockContext); var siteService = new SiteService(rockContext); var page = pageService.Get(e.RowKeyId); if (page != null) { string errorMessage = string.Empty; if (!pageService.CanDelete(page, out errorMessage)) { mdDeleteWarning.Show(errorMessage, ModalAlertType.Alert); return; } foreach (var site in siteService.Queryable()) { if (site.DefaultPageId == page.Id) { site.DefaultPageId = null; site.DefaultPageRouteId = null; } if (site.LoginPageId == page.Id) { site.LoginPageId = null; site.LoginPageRouteId = null; } if (site.RegistrationPageId == page.Id) { site.RegistrationPageId = null; site.RegistrationPageRouteId = null; } } foreach (var pageView in pageViewService.GetByPageId(page.Id)) { pageView.Page = null; pageView.PageId = null; } pageService.Delete(page); rockContext.SaveChanges(); Rock.Web.Cache.PageCache.Flush(page.Id); if (_page != null) { _page.FlushChildPages(); } } BindGrid(); }
protected void rGrid_Delete(object sender, RowEventArgs e) { var rockContext = new RockContext(); var pageService = new PageService(rockContext); var pageViewService = new PageViewService(rockContext); var siteService = new SiteService(rockContext); var page = pageService.Get((int)rGrid.DataKeys[e.RowIndex]["id"]); if (page != null) { string errorMessage = string.Empty; if (!pageService.CanDelete(page, out errorMessage)) { //errorMessage = "The page is the parent page of another page."; mdDeleteWarning.Show(errorMessage, ModalAlertType.Alert); return; } foreach (var site in siteService.Queryable()) { if (site.DefaultPageId == page.Id) { site.DefaultPageId = null; site.DefaultPageRouteId = null; } if (site.LoginPageId == page.Id) { site.LoginPageId = null; site.LoginPageRouteId = null; } if (site.RegistrationPageId == page.Id) { site.RegistrationPageId = null; site.RegistrationPageRouteId = null; } } // TODO: Could be thousands of page views. Can we set this up as cascade? foreach (var pageView in pageViewService.GetByPageId(page.Id)) { pageViewService.Delete(pageView); } pageService.Delete(page); rockContext.SaveChanges(); Rock.Web.Cache.PageCache.Flush(page.Id); if (_page != null) { _page.FlushChildPages(); } } BindGrid(); }
/// <summary> /// Handles the Delete event of the gPages control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param> protected void gPages_Delete(object sender, RowEventArgs e) { var rockContext = new RockContext(); PageService pageService = new PageService(rockContext); var pageViewService = new PageViewService(rockContext); var siteService = new SiteService(rockContext); Rock.Model.Page page = pageService.Get(new Guid(e.RowKeyValue.ToString())); if (page != null) { string errorMessage; if (!pageService.CanDelete(page, out errorMessage, includeSecondLvl: true)) { mdGridWarning.Show(errorMessage, ModalAlertType.Alert); return; } foreach (var site in siteService.Queryable()) { if (site.DefaultPageId == page.Id) { site.DefaultPageId = null; site.DefaultPageRouteId = null; } if (site.LoginPageId == page.Id) { site.LoginPageId = null; site.LoginPageRouteId = null; } if (site.RegistrationPageId == page.Id) { site.RegistrationPageId = null; site.RegistrationPageRouteId = null; } } foreach (var pageView in pageViewService.GetByPageId(page.Id)) { pageView.Page = null; pageView.PageId = null; } pageService.Delete(page); rockContext.SaveChanges(); PageCache.Flush(page.Id); } BindPagesGrid(); }