This commit is contained in:
pbao9
2026-02-06 20:52:59 +07:00
parent d7aadf7544
commit e7b9ce7485
17 changed files with 570 additions and 36 deletions
+32 -2
View File
@@ -24,11 +24,16 @@ class ProductService
// Create product
$product = $this->repository->create($productData);
// Sync OS versions if provided
// Sync OS versions if provided (for VPS)
if (!empty($data['os_ids'])) {
$product->osVersions()->sync($data['os_ids']);
}
// Sync Control Panels if provided (for Hosting)
if (!empty($data['control_panel_ids'])) {
$this->saveControlPanels($product, $data);
}
// Save pricing cycles if provided
if (!empty($data['pricing'])) {
$this->savePricings($product, $data['pricing'], $data['currency'] ?? 'USD');
@@ -48,11 +53,16 @@ class ProductService
// Get the product for relationships
$product = $this->repository->find($id);
// Sync OS versions if provided
// Sync OS versions if provided (for VPS)
if (isset($data['os_ids'])) {
$product->osVersions()->sync($data['os_ids']);
}
// Sync Control Panels if provided (for Hosting)
if (isset($data['control_panel_ids'])) {
$this->saveControlPanels($product, $data);
}
// Save pricing cycles if provided
if (!empty($data['pricing'])) {
$this->savePricings($product, $data['pricing'], $data['currency'] ?? 'USD');
@@ -95,6 +105,26 @@ class ProductService
}
}
/**
* Save Control Panels for product (for Hosting)
*/
private function saveControlPanels($product, array $data): void
{
$syncData = [];
foreach ($data['control_panel_ids'] as $panelId) {
$priceModifier = $data['control_panel_price_modifiers'][$panelId] ?? 0;
$isDefault = isset($data['control_panel_default']) && $data['control_panel_default'] == $panelId;
$syncData[$panelId] = [
'price_modifier' => $priceModifier,
'is_default' => $isDefault,
];
}
$product->controlPanels()->sync($syncData);
}
/**
* Prepare data for create/update
*/