<?php

namespace App\Console\Commands;

use App\Services\Payments\PaypalPaymentSyncService;
use Illuminate\Console\Command;

class SyncPaypalPaymentsCommand extends Command
{
    protected $signature = 'payments:sync-paypal {--dry-run} {--report-only}';
    protected $description = 'Sync PayPal payments to internal payments table from paypal_payments.';

    public function handle(PaypalPaymentSyncService $service): int
    {
        $dryRun = (bool) $this->option('dry-run');
        $reportOnly = (bool) $this->option('report-only');

        $result = $service->sync($dryRun, $reportOnly);

        $this->info(sprintf('[%s] %d PayPal payments processed.', $result['mode'], $result['processed']));
        if (!empty($result['failed'])) {
            $this->error(sprintf('[%s] Failed transactions: %s', $result['mode'], implode(', ', $result['failed'])));
        }

        return self::SUCCESS;
    }
}
