From 88f2c22804d185fabc96bbc40ceb3237f3f7e7fb Mon Sep 17 00:00:00 2001 From: AVMG20 Date: Sun, 7 Nov 2021 16:29:18 +0100 Subject: [PATCH] added node location in node select --- app/Http/Controllers/ProductController.php | 38 +++++++++++-- app/Http/Controllers/ServerController.php | 14 +++-- resources/views/servers/create.blade.php | 63 +++++++++++++--------- routes/web.php | 1 + 4 files changed, 83 insertions(+), 33 deletions(-) diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index 8d7f7e2b..b2ac0c2e 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -3,14 +3,12 @@ namespace App\Http\Controllers; use App\Models\Egg; +use App\Models\Location; use App\Models\Node; use App\Models\Product; -use Illuminate\Contracts\Foundation\Application; -use Illuminate\Contracts\Routing\ResponseFactory; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Illuminate\Http\Response; use Illuminate\Support\Collection; class ProductController extends Controller @@ -44,6 +42,38 @@ class ProductController extends Controller return $nodes; } + /** + * @description get product locations based on selected egg + * @param Request $request + * @param Egg $egg + * @return Collection|JsonResponse + */ + public function getLocationsBasedOnEgg(Request $request, Egg $egg) + { + $nodes = $this->getNodesBasedOnEgg($request, $egg); + $locations = collect(); + + //locations + $nodes->each(function (Node $node) use ($nodes, $locations) { + /** @var Location $location */ + $location = $node->location; + + if (!$locations->contains('id' , $location->id)){ + $nodeIds = $nodes->map(function ($node){ + return $node->id; + }); + + $location->nodes = $location->nodes() + ->whereIn('id' , $nodeIds) + ->get(); + + $locations->add($location); + } + }); + + return $locations; + } + /** * @param Node $node * @return Collection|JsonResponse @@ -53,7 +83,7 @@ class ProductController extends Controller if (is_null($node->id)) return response()->json('node id is required', '400'); return Product::query()->whereHas('nodes', function (Builder $builder) use ($node) { - $builder->where('id' , '=' , $node->id); + $builder->where('id', '=', $node->id); })->get(); } } diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 0e319f7c..313634fb 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Classes\Pterodactyl; use App\Models\Configuration; use App\Models\Egg; +use App\Models\Location; use App\Models\Nest; use App\Models\Node; use App\Models\Product; @@ -39,16 +40,19 @@ class ServerController extends Controller $eggs = Egg::query()->has('products')->get(); + $locations = Location::all(); + $nests = Nest::query()->whereHas('eggs', function (Builder $builder) { $builder->has('products'); })->get(); return view('servers.create')->with([ - 'productCount' => $productCount, - 'nodeCount' => $nodeCount, - 'nests' => $nests, - 'eggs' => $eggs, - 'user' => Auth::user(), + 'productCount' => $productCount, + 'nodeCount' => $nodeCount, + 'nests' => $nests, + 'locations' => $locations, + 'eggs' => $eggs, + 'user' => Auth::user(), ]); } diff --git a/resources/views/servers/create.blade.php b/resources/views/servers/create.blade.php index 6f814c1c..618c571b 100644 --- a/resources/views/servers/create.blade.php +++ b/resources/views/servers/create.blade.php @@ -93,7 +93,7 @@
- + -