subDays(self::TRANSACTION_WINDOW_DAYS); return parent::getEloquentQuery() ->with(['activeResellerPackage.package']) ->withExists('activeResellerPackage as has_active_reseller_package') ->withCount([ 'purchases as checkout_transaction_count' => fn (Builder $query) => $query ->where('provider', $provider) ->where('refunded', false), 'purchases as checkout_transaction_count_window' => fn (Builder $query) => $query ->where('provider', $provider) ->where('refunded', false) ->where('purchased_at', '>=', $windowStart), 'purchases as checkout_refund_count_window' => fn (Builder $query) => $query ->where('provider', $provider) ->where('refunded', true) ->where('purchased_at', '>=', $windowStart), 'checkoutSessions as checkout_requires_action_count' => fn (Builder $query) => $query ->where('provider', $provider) ->where('status', CheckoutSession::STATUS_REQUIRES_CUSTOMER_ACTION), 'checkoutSessions as checkout_processing_count' => fn (Builder $query) => $query ->where('provider', $provider) ->where('status', CheckoutSession::STATUS_PROCESSING), 'checkoutSessions as checkout_expired_count' => fn (Builder $query) => $query ->where('provider', $provider) ->whereNotIn('status', [ CheckoutSession::STATUS_COMPLETED, CheckoutSession::STATUS_CANCELLED, ]) ->whereNotNull('expires_at') ->where('expires_at', '<', now()), ]) ->withSum([ 'purchases as checkout_transaction_total' => fn (Builder $query) => $query ->where('provider', $provider) ->where('refunded', false), ], 'price') ->withSum([ 'purchases as checkout_transaction_total_window' => fn (Builder $query) => $query ->where('provider', $provider) ->where('refunded', false) ->where('purchased_at', '>=', $windowStart), ], 'price') ->withSum([ 'purchases as checkout_refund_total_window' => fn (Builder $query) => $query ->where('provider', $provider) ->where('refunded', true) ->where('purchased_at', '>=', $windowStart), ], 'price') ->withMax([ 'purchases as last_checkout_transaction_at' => fn (Builder $query) => $query ->where('provider', $provider), ], 'purchased_at'); } public static function getPages(): array { return [ 'index' => ListTenantCheckoutHealths::route('/'), ]; } public static function provider(): string { return (string) config('checkout.default_provider', self::DEFAULT_PROVIDER); } }