Implement catalog CRUD overhaul, snapshot fallback activation, and billing/UX hardening

This commit is contained in:
Dwindi Ramadhana
2026-02-17 00:03:35 +07:00
parent e6aef31dd1
commit 2726b6c312
37 changed files with 2936 additions and 204 deletions

View File

@@ -6,6 +6,9 @@ use Illuminate\Support\Facades\Schedule;
use App\Services\LiveSqlImportService;
use App\Services\Billing\PaypalWebhookProcessor;
use App\Services\Billing\PayPalPlanSyncService;
use App\Models\Order;
use App\Models\Payment;
use App\Models\Subscription;
use App\Models\WebhookEvent;
use Illuminate\Support\Facades\Mail;
use App\Mail\TestMailketing;
@@ -99,3 +102,20 @@ Artisan::command('mailketing:test {email : Recipient email address}', function (
return 1;
}
})->purpose('Send a Mailketing API test email');
Artisan::command('dewemoji:normalize-statuses', function () {
$subs = Subscription::query()
->where('status', 'cancelled')
->update(['status' => 'canceled']);
$orders = Order::query()
->where('status', 'cancelled')
->update(['status' => 'canceled']);
$payments = Payment::query()
->where('status', 'cancelled')
->update(['status' => 'canceled']);
$this->info("Normalized statuses: subscriptions={$subs}, orders={$orders}, payments={$payments}");
return 0;
})->purpose('Normalize legacy cancelled status spelling to canceled');