expirePendingInvites(); $lifecycleResults = $lifecycle->syncScheduledCollections(); $expiredPlacements = $surfaces->syncPlacements(); $unfeaturedCollections = Collection::query() ->where('is_featured', true) ->whereNotNull('unpublished_at') ->where('unpublished_at', '<=', now()) ->update([ 'is_featured' => false, 'featured_at' => null, 'updated_at' => now(), ]); $this->info(sprintf( 'Expired %d pending invites; published %d scheduled collections; expired %d collections; unfeatured %d unpublished collections; deactivated %d expired placements.', $expiredInvites, (int) ($lifecycleResults['scheduled'] ?? 0), (int) ($lifecycleResults['expired'] ?? 0), $unfeaturedCollections, $expiredPlacements, )); return self::SUCCESS; } }