'loadOsData']; public function mount($productId = null, $invoiceId = null) { $this->productId = $productId; $this->invoiceId = $invoiceId; if ($productId) { $this->loadOsData($productId); } } public function loadOsData($productId) { $this->productId = $productId; // Get the VPS product $vps = VPS::with('operatingSystems.osGroup')->find($productId); if (!$vps) { return; } // Get OS groups that are assigned to this VPS product $osGroupIds = $vps->operatingSystems->pluck('osGroup.id')->filter()->unique(); $this->osGroups = OsGroup::with(['os' => function($query) use ($vps) { // Only get OS versions that are assigned to this specific VPS product $query->whereHas('vpsProducts', function($q) use ($vps) { $q->where('product_id', $vps->id) ->where('product_type', 4); })->where('status', 1); }]) ->whereIn('id', $osGroupIds) ->where('status', 1) ->get(); // Get current OS from invoice_item if ($this->invoiceId) { $invoiceItem = InvoiceItem::where('invoice_id', $this->invoiceId) ->where('product_id', $productId) ->where('product_type', 4) ->with('os.osGroup') ->first(); $this->currentOs = $invoiceItem?->os; } } public function updatedSelectedOsGroupId($value) { $this->selectedOsId = null; if ($value) { $this->operatingSystems = Os::where('os_group_id', $value) ->where('status', 1) ->whereHas('vpsProducts', function($query) { $query->where('product_id', $this->productId) ->where('product_type', 4); }) ->get(); } else { $this->operatingSystems = []; } } public function confirmReinstall() { if (!$this->selectedOsId) { session()->flash('error', __('Please select an operating system.')); return; } // Here you would implement the reinstall logic // For now, just show a success message session()->flash('success', __('Operating system reinstall initiated.')); // Close modal $this->dispatchBrowserEvent('close-modal', ['name' => 'reinstall-vm']); } public function render() { return view('livewire.v-p-s-reinstall-modal'); } }