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 );
}