feat: bật/tắt yêu cầu hoàn tất hồ sơ, xoá dịch vụ kèm đơn/hoá đơn, sync tên VM đã gán

- setting.require_complete_profile (mặc định bật), trả qua GET v1/setting
- bulkDeleteServices xoá mềm invoice nâng cấp + order mồ côi (ServiceOrderRecorder::discardOrder)
- createService trỏ dịch vụ sang order mới thì bỏ order cũ
- SyncVirtualMachine cập nhật name + gắn virtual_machine_id cho module_vmware

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
baodev0
2026-10-15 08:04:02 +07:00
co-authored by Claude Opus 5.5
parent bf78f3b810
commit 0bd15f6018
9 changed files with 198 additions and 9 deletions
@@ -6,6 +6,7 @@ use App\Http\Services\Telegram;
use App\Http\Services\vCenter as ServiceVCenter;
use App\Models\ModuleDatacenter;
use App\Models\ModuleHost;
use App\Models\ModuleVmware;
use App\Models\VirtualMachines;
use App\Models\vCenter;
use Illuminate\Bus\Queueable;
@@ -178,12 +179,26 @@ class SyncVirtualMachine implements ShouldQueue
$vmObj->last_synced_at = now();
$vmObj->save();
$this->syncAssignedVm($vmObj);
$syncedVmIds[] = $vmData['vm'];
$count++;
}
return $count;
}
private function syncAssignedVm(VirtualMachines $vm): void
{
ModuleVmware::query()
->where(fn ($query) => $query
->where('virtual_machine_id', $vm->id)
->orWhere(fn ($legacy) => $legacy->whereNull('virtual_machine_id')->where('vmware_id', $vm->vm_id)))
->where(fn ($query) => $query
->whereNull('virtual_machine_id')
->orWhereNull('name')
->orWhere('name', '!=', $vm->name))
->update(['name' => $vm->name, 'virtual_machine_id' => $vm->id]);
}
/**
* Delete VMs in DB that belong to the given vCenter but no longer exist on vCenter.
*/