Browse Source

added clone function to clone products

AVMG20 4 years ago
parent
commit
c31d67e2f4

+ 9 - 0
app/Http/Controllers/Admin/ProductController.php

@@ -42,6 +42,14 @@ class ProductController extends Controller
         ]);
         ]);
     }
     }
 
 
+    public function clone(Request $request , Product $product){
+        return view('admin.products.create' , [
+            'product' => $product,
+            'locations' => Location::with('nodes')->get(),
+            'nests' => Nest::with('eggs')->get(),
+        ]);
+    }
+
     /**
     /**
      * Store a newly created resource in storage.
      * Store a newly created resource in storage.
      *
      *
@@ -184,6 +192,7 @@ class ProductController extends Controller
             ->addColumn('actions', function (Product $product) {
             ->addColumn('actions', function (Product $product) {
                 return '
                 return '
                             <a data-content="Show" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.show', $product->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
                             <a data-content="Show" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.show', $product->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
+                            <a data-content="Clone" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.clone', $product->id) . '" class="btn btn-sm text-white btn-primary mr-1"><i class="fas fa-clone"></i></a>
                             <a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.edit', $product->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
                             <a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.edit', $product->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
 
 
                            <form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.products.destroy', $product->id) . '">
                            <form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.products.destroy', $product->id) . '">

+ 0 - 3
app/Http/Controllers/HomeController.php

@@ -18,9 +18,6 @@ class HomeController extends Controller
     /** Show the application dashboard. */
     /** Show the application dashboard. */
     public function index(Request $request)
     public function index(Request $request)
     {
     {
-
-        dd(Product::first()->nodes()->get() , Product::first()->eggs()->get());
-
         $usage = 0;
         $usage = 0;
 
 
         foreach (Auth::user()->servers as $server){
         foreach (Auth::user()->servers as $server){

+ 17 - 15
resources/views/admin/products/create.blade.php

@@ -49,7 +49,7 @@
                                     <div class="col-lg-6">
                                     <div class="col-lg-6">
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="name">Name</label>
                                             <label for="name">Name</label>
-                                            <input value="{{old('name')}}" id="name" name="name" type="text"
+                                            <input value="{{$product->name ?? old('name')}}" id="name" name="name" type="text"
                                                    class="form-control @error('name') is-invalid @enderror"
                                                    class="form-control @error('name') is-invalid @enderror"
                                                    required="required">
                                                    required="required">
                                             @error('name')
                                             @error('name')
@@ -61,7 +61,7 @@
 
 
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="price">Price in credits</label>
                                             <label for="price">Price in credits</label>
-                                            <input value="{{old('price')}}" id="price" name="price"
+                                            <input value="{{$product->price ??  old('price')}}" id="price" name="price"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('price') is-invalid @enderror"
                                                    class="form-control @error('price') is-invalid @enderror"
                                                    required="required">
                                                    required="required">
@@ -74,7 +74,7 @@
 
 
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="memory">Memory</label>
                                             <label for="memory">Memory</label>
-                                            <input value="{{old('memory')}}" id="memory" name="memory"
+                                            <input value="{{$product->memory ?? old('memory')}}" id="memory" name="memory"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('memory') is-invalid @enderror"
                                                    class="form-control @error('memory') is-invalid @enderror"
                                                    required="required">
                                                    required="required">
@@ -87,7 +87,7 @@
 
 
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="cpu">Cpu</label>
                                             <label for="cpu">Cpu</label>
-                                            <input value="{{old('cpu')}}" id="cpu" name="cpu"
+                                            <input value="{{$product->cpu ?? old('cpu')}}" id="cpu" name="cpu"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('cpu') is-invalid @enderror"
                                                    class="form-control @error('cpu') is-invalid @enderror"
                                                    required="required">
                                                    required="required">
@@ -100,7 +100,7 @@
 
 
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="swap">Swap</label>
                                             <label for="swap">Swap</label>
-                                            <input value="{{old('swap')}}" id="swap" name="swap"
+                                            <input value="{{$product->swap ?? old('swap')}}" id="swap" name="swap"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('swap') is-invalid @enderror"
                                                    class="form-control @error('swap') is-invalid @enderror"
                                                    required="required">
                                                    required="required">
@@ -119,7 +119,7 @@
                                             <textarea id="description" name="description"
                                             <textarea id="description" name="description"
                                                       type="text"
                                                       type="text"
                                                       class="form-control @error('description') is-invalid @enderror"
                                                       class="form-control @error('description') is-invalid @enderror"
-                                                      required="required">{{old('description')}}</textarea>
+                                                      required="required">{{$product->description ?? old('description')}}</textarea>
                                             @error('description')
                                             @error('description')
                                             <div class="invalid-feedback">
                                             <div class="invalid-feedback">
                                                 {{$message}}
                                                 {{$message}}
@@ -131,7 +131,7 @@
                                     <div class="col-lg-6">
                                     <div class="col-lg-6">
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="disk">Disk</label>
                                             <label for="disk">Disk</label>
-                                            <input value="{{old('disk') ?? 1000}}" id="disk" name="disk"
+                                            <input value="{{$product->disk ?? old('disk') ?? 1000}}" id="disk" name="disk"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('disk') is-invalid @enderror"
                                                    class="form-control @error('disk') is-invalid @enderror"
                                                    required="required">
                                                    required="required">
@@ -143,7 +143,7 @@
                                         </div>
                                         </div>
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="io">IO</label>
                                             <label for="io">IO</label>
-                                            <input value="{{old('io') ?? 500}}" id="io" name="io"
+                                            <input value="{{$product->io ?? old('io') ?? 500}}" id="io" name="io"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('io') is-invalid @enderror"
                                                    class="form-control @error('io') is-invalid @enderror"
                                                    required="required">
                                                    required="required">
@@ -155,7 +155,7 @@
                                         </div>
                                         </div>
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="databases">Databases</label>
                                             <label for="databases">Databases</label>
-                                            <input value="{{old('databases') ?? 1}}" id="databases"
+                                            <input value="{{$product->databases ?? old('databases') ?? 1}}" id="databases"
                                                    name="databases"
                                                    name="databases"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('databases') is-invalid @enderror"
                                                    class="form-control @error('databases') is-invalid @enderror"
@@ -168,7 +168,7 @@
                                         </div>
                                         </div>
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="backups">Backups</label>
                                             <label for="backups">Backups</label>
-                                            <input value="{{old('backups') ?? 1}}" id="backups"
+                                            <input value="{{$product->backups ?? old('backups') ?? 1}}" id="backups"
                                                    name="backups"
                                                    name="backups"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('backups') is-invalid @enderror"
                                                    class="form-control @error('backups') is-invalid @enderror"
@@ -181,7 +181,7 @@
                                         </div>
                                         </div>
                                         <div class="form-group">
                                         <div class="form-group">
                                             <label for="allocations">Allocations</label>
                                             <label for="allocations">Allocations</label>
-                                            <input value="{{old('allocations') ?? 0}}"
+                                            <input value="{{$product->allocations ?? old('allocations') ?? 0}}"
                                                    id="allocations" name="allocations"
                                                    id="allocations" name="allocations"
                                                    type="number"
                                                    type="number"
                                                    class="form-control @error('allocations') is-invalid @enderror"
                                                    class="form-control @error('allocations') is-invalid @enderror"
@@ -216,12 +216,13 @@
 
 
                                 <div class="form-group">
                                 <div class="form-group">
                                     <label for="nodes">Nodes</label>
                                     <label for="nodes">Nodes</label>
-                                    <select id="nodes" class="custom-select @error('nodes') is-invalid @enderror"
+                                    <select id="nodes" style="width:100%" class="custom-select @error('nodes') is-invalid @enderror"
                                             name="nodes[]" multiple="multiple" autocomplete="off">
                                             name="nodes[]" multiple="multiple" autocomplete="off">
                                         @foreach($locations as $location)
                                         @foreach($locations as $location)
                                             <optgroup label="{{$location->name}}">
                                             <optgroup label="{{$location->name}}">
                                                 @foreach($location->nodes as $node)
                                                 @foreach($location->nodes as $node)
-                                                    <option value="{{$node->id}}">{{$node->name}}</option>
+                                                    <option @if(isset($product)) @if($product->nodes->contains('id' , $node->id)) selected
+                                                            @endif @endif value="{{$node->id}}">{{$node->name}}</option>
                                                 @endforeach
                                                 @endforeach
                                             </optgroup>
                                             </optgroup>
                                         @endforeach
                                         @endforeach
@@ -239,12 +240,13 @@
 
 
                                 <div class="form-group">
                                 <div class="form-group">
                                     <label for="eggs">Eggs</label>
                                     <label for="eggs">Eggs</label>
-                                    <select id="eggs" class="custom-select @error('eggs') is-invalid @enderror"
+                                    <select id="eggs" style="width:100%" class="custom-select @error('eggs') is-invalid @enderror"
                                             name="eggs[]" multiple="multiple" autocomplete="off">
                                             name="eggs[]" multiple="multiple" autocomplete="off">
                                         @foreach($nests as $nest)
                                         @foreach($nests as $nest)
                                             <optgroup label="{{$nest->name}}">
                                             <optgroup label="{{$nest->name}}">
                                                 @foreach($nest->eggs as $egg)
                                                 @foreach($nest->eggs as $egg)
-                                                    <option value="{{$egg->id}}">{{$egg->name}}</option>
+                                                    <option @if(isset($product)) @if($product->eggs->contains('id' , $egg->id)) selected
+                                                            @endif @endif  value="{{$egg->id}}">{{$egg->name}}</option>
                                                 @endforeach
                                                 @endforeach
                                             </optgroup>
                                             </optgroup>
                                         @endforeach
                                         @endforeach

+ 1 - 0
routes/web.php

@@ -79,6 +79,7 @@ Route::middleware('auth')->group(function () {
         Route::resource('servers', AdminServerController::class);
         Route::resource('servers', AdminServerController::class);
 
 
         Route::get('products/datatable', [ProductController::class, 'datatable'])->name('products.datatable');
         Route::get('products/datatable', [ProductController::class, 'datatable'])->name('products.datatable');
+        Route::get('products/clone/{product}', [ProductController::class, 'clone'])->name('products.clone');
         Route::patch('products/disable/{product}', [ProductController::class, 'disable'])->name('products.disable');
         Route::patch('products/disable/{product}', [ProductController::class, 'disable'])->name('products.disable');
         Route::resource('products', ProductController::class);
         Route::resource('products', ProductController::class);