This commit is contained in:
baodev0
2026-08-14 08:45:52 +07:00
parent 7314313198
commit b03ee9fc2d
23 changed files with 844 additions and 704 deletions
+12 -3
View File
@@ -5,6 +5,7 @@ namespace App\Services;
use App\Enums\Invoice\InvoiceStatus;
use App\Enums\Order\OrderStatus;
use App\Enums\TransactionStatus;
use App\Jobs\Hosting\ProvisionHostingAccountJob;
use App\Jobs\VirtualMachine\Action\VMJobs;
use App\Jobs\VirtualMachine\Create\CreateVirtualMachineJob;
use App\Models\Addon;
@@ -135,6 +136,10 @@ class InvoicePaymentService
}
foreach ($order->orderItems as $item) {
$isHostingProvision = ! $item->os_id
&& $item->server_name
&& $item->product?->product_type === 'hosting';
$service = Service::firstOrCreate(
['order_item_id' => $item->id],
[
@@ -142,7 +147,7 @@ class InvoicePaymentService
'product_id' => $item->product_id,
'invoice_id' => $invoice->id,
'server_name' => $item->server_name,
'status' => $item->os_id ? 'pending' : 'active',
'status' => ($item->os_id || $isHostingProvision) ? 'pending' : 'active',
'auto_renew' => false,
'started_at' => now(),
'expires_at' => now()->addMonths($item->months ?: $this->cycleToMonths($item->billing_cycle)),
@@ -151,8 +156,12 @@ class InvoicePaymentService
$this->attachServiceAddons($service, $item);
if ($service->wasRecentlyCreated && $item->product_id && $item->os_id) {
dispatch(new CreateVirtualMachineJob($item));
if ($service->wasRecentlyCreated && $item->product_id) {
if ($item->os_id) {
dispatch(new CreateVirtualMachineJob($item));
} elseif ($isHostingProvision) {
dispatch(new ProvisionHostingAccountJob($item));
}
}
}
}