Rock.Model.PageService.CanDelete C# (CSharp) Method

CanDelete() public method

Determines whether the specified page can be deleted. Performs some additional checks that are missing from the auto-generated PageService.CanDelete().
public CanDelete ( Page item, string &errorMessage, bool includeSecondLvl ) : bool
item Page The item.
errorMessage string The error message.
includeSecondLvl bool If set to true, verifies that the item is not referenced by any second level relationships.
return bool
        public bool CanDelete( Page item, out string errorMessage, bool includeSecondLvl )
        {
            errorMessage = string.Empty;

            bool canDelete = CanDelete( item, out errorMessage );

            var site = new Service<Site>( this.Context ).Queryable().Where( s => ( s.DefaultPageId == item.Id || s.LoginPageId == item.Id
                || s.RegistrationPageId == item.Id || s.PageNotFoundPageId == item.Id ) ).FirstOrDefault();
            if ( canDelete && includeSecondLvl && site != null )
            {
                errorMessage = string.Format( "This {0} is used by a special page on the {1} {2}.", Page.FriendlyTypeName, site.Name, Site.FriendlyTypeName );
                canDelete = false;
            }

            return canDelete;
        }

Usage Example

Example #1
0
        /// <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();
        }
All Usage Examples Of Rock.Model.PageService::CanDelete