public void Move( int id, Block block ) { var user = CurrentUser(); if ( user != null ) { var service = new BlockService(); block.Id = id; Block model; if ( !service.TryGet( id, out model ) ) throw new HttpResponseException( HttpStatusCode.NotFound ); if ( !model.IsAuthorized( "Edit", user.Person ) ) throw new HttpResponseException( HttpStatusCode.Unauthorized ); if ( model.LayoutId.HasValue && model.LayoutId != block.LayoutId ) Rock.Web.Cache.PageCache.FlushLayoutBlocks( model.LayoutId.Value ); if ( block.LayoutId.HasValue ) Rock.Web.Cache.PageCache.FlushLayoutBlocks( block.LayoutId.Value ); else { var page = Rock.Web.Cache.PageCache.Read( block.PageId.Value ); page.FlushBlocks(); } model.Zone = block.Zone; model.PageId = block.PageId; model.LayoutId = block.LayoutId; if ( model.IsValid ) { model.Order = service.GetMaxOrder( model ); service.Save( model, user.PersonId ); } else throw new HttpResponseException( HttpStatusCode.BadRequest ); } else throw new HttpResponseException( HttpStatusCode.Unauthorized ); }