namespace App\Jobs; use App\Models\ApiProvider; use App\Services\Api\ApiServiceManager; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Log; class CheckProviderBalances implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public $timeout = 300; public $tries = 3; public function handle(ApiServiceManager $apiManager) { Log::info('Starting provider balance check'); $results = $apiManager->checkAllBalances(); // Log low balances foreach ($results as $providerId => $result) { if ($result['success'] && isset($result['balance'])) { $provider = ApiProvider::find($providerId); $minBalance = setting('min_provider_balance', 50); if ($result['balance'] < $minBalance) { Log::warning("Provider {$provider->name} has low balance: {$result['balance']}"); // Send notification to admins // Notification::send(Admin::all(), new LowProviderBalance($provider, $result['balance'])); } } } Log::info('Provider balance check completed'); } }