diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index b2ac0c2e..75e811da 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -58,13 +58,13 @@ class ProductController extends Controller /** @var Location $location */ $location = $node->location; - if (!$locations->contains('id' , $location->id)){ - $nodeIds = $nodes->map(function ($node){ + if (!$locations->contains('id', $location->id)) { + $nodeIds = $nodes->map(function ($node) { return $node->id; }); $location->nodes = $location->nodes() - ->whereIn('id' , $nodeIds) + ->whereIn('id', $nodeIds) ->get(); $locations->add($location); @@ -76,14 +76,20 @@ class ProductController extends Controller /** * @param Node $node + * @param Egg $egg * @return Collection|JsonResponse */ - public function getProductsBasedOnNode(Node $node) + public function getProductsBasedOnNode(Egg $egg, Node $node) { - if (is_null($node->id)) return response()->json('node id is required', '400'); + if (is_null($egg->id) || is_null($node->id)) return response()->json('node and egg id is required', '400'); - return Product::query()->whereHas('nodes', function (Builder $builder) use ($node) { - $builder->where('id', '=', $node->id); - })->get(); + return Product::query() + ->whereHas('nodes', function (Builder $builder) use ($node) { + $builder->where('id', '=', $node->id); + }) + ->whereHas('eggs', function (Builder $builder) use ($egg) { + $builder->where('id', '=', $egg->id); + }) + ->get(); } } diff --git a/resources/views/servers/create.blade.php b/resources/views/servers/create.blade.php index 15c09060..31071fec 100644 --- a/resources/views/servers/create.blade.php +++ b/resources/views/servers/create.blade.php @@ -362,7 +362,7 @@ this.products = []; this.selectedProduct = 'null'; - let response = await axios.get(`{{route('products.products.node')}}/${this.selectedNode}`) + let response = await axios.get(`{{route('products.products.node')}}/${this.selectedEgg}/${this.selectedNode}`) .catch(console.error) this.fetchedProducts = true; diff --git a/routes/web.php b/routes/web.php index d107930d..18cadf8d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -58,7 +58,7 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () { #routes made for server create page to fetch product info Route::get('/products/nodes/egg/{egg?}', [FrontProductController::class, 'getNodesBasedOnEgg'])->name('products.nodes.egg'); Route::get('/products/locations/egg/{egg?}', [FrontProductController::class, 'getLocationsBasedOnEgg'])->name('products.locations.egg'); - Route::get('/products/products/node/{node?}', [FrontProductController::class, 'getProductsBasedOnNode'])->name('products.products.node'); + Route::get('/products/products/{egg?}/{node?}', [FrontProductController::class, 'getProductsBasedOnNode'])->name('products.products.node'); #payments Route::get('checkout/{paypalProduct}', [PaymentController::class, 'checkOut'])->name('checkout');