Enhance VM service management: add service_id and plain_password fields, sync service records, and update related migrations

This commit is contained in:
pbao9
2026-04-16 09:39:52 +07:00
parent bb73d6c5a2
commit d68fda2cf0
11 changed files with 206 additions and 104 deletions
+18 -21
View File
@@ -4,7 +4,6 @@ declare(strict_types=1);
namespace App\Observers;
use App\Models\Invoice;
use App\Models\ModuleVmware;
use App\Models\OrderItem;
use App\Models\Service;
@@ -101,35 +100,33 @@ class ModuleVmwareObserver
{
try {
$orderItem = OrderItem::where('order_id', $moduleVmware->order_id)
->where('os_id', $moduleVmware->os_id)
->first();
$invoice = Invoice::where('order_id', $moduleVmware->order_id)->first();
if (!$orderItem) {
Log::warning('ModuleVmwareObserver: không tìm thấy OrderItem', [
'order_id' => $moduleVmware->order_id,
'module_vmware_id' => $moduleVmware->id,
]);
return;
}
Service::firstOrCreate(
['order_item_id' => $orderItem?->id],
[
'customer_id' => $moduleVmware->customer_id,
'product_id' => $orderItem?->product_id,
'invoice_id' => $invoice?->id,
'vm_id' => $moduleVmware->vmware_id,
'server_name' => $moduleVmware->hostname ?? $moduleVmware->name,
'status' => 'active',
'auto_renew' => false,
'started_at' => now(),
'expires_at' => ($orderItem && (int) $orderItem->months > 0)
? now()->addMonths((int) $orderItem->months)
: null,
]
);
$updated = Service::where('order_item_id', $orderItem->id)
->update([
'vm_id' => $moduleVmware->id,
'status' => 'active',
'expires_at' => (int) $orderItem->months > 0
? now()->addMonths((int) $orderItem->months)
: null,
]);
Log::info('Service record synced for ModuleVmware', [
'module_vmware_id' => $moduleVmware->id,
'vmware_id' => $moduleVmware->vmware_id,
'order_item_id' => $orderItem?->id,
'order_item_id' => $orderItem->id,
'rows_updated' => $updated,
]);
} catch (\Throwable $e) {
Log::error('Lỗi khi tạo Service từ ModuleVmwareObserver: ' . $e->getMessage(), [
Log::error('Lỗi khi sync Service từ ModuleVmwareObserver: ' . $e->getMessage(), [
'module_vmware_id' => $moduleVmware->id,
'order_id' => $moduleVmware->order_id,
]);