From f143706346496a2395ca83d90341e36cf017ff37 Mon Sep 17 00:00:00 2001
From: Oskar Stenberg <01ste02@gmail.com>
Date: Mon, 12 Jul 2021 19:18:47 +0200
Subject: [PATCH] Added Consumable bulk actions

---
 app/Presenters/ConsumablePresenter.php        |  3 ++
 .../lang/en/admin/consumables/message.php     |  4 +-
 resources/lang/en/general.php                 |  1 +
 resources/views/consumables/index.blade.php   | 16 +++++++
 resources/views/consumables/view.blade.php    | 19 ++++++++
 routes/web/consumables.php                    | 44 +++++++++++++++----
 routes/web/hardware.php                       | 36 +++++++--------
 7 files changed, 96 insertions(+), 27 deletions(-)

diff --git a/app/Presenters/ConsumablePresenter.php b/app/Presenters/ConsumablePresenter.php
index 334398fab..e2a2533d2 100644
--- a/app/Presenters/ConsumablePresenter.php
+++ b/app/Presenters/ConsumablePresenter.php
@@ -18,6 +18,9 @@ class ConsumablePresenter extends Presenter
     {
         $layout = [
             [
+                "field" => "checkbox",
+                "checkbox" => true
+            ], [
                 "field" => "id",
                 "searchable" => false,
                 "sortable" => true,
diff --git a/resources/lang/en/admin/consumables/message.php b/resources/lang/en/admin/consumables/message.php
index 48a3cfbd9..4b447e0b0 100644
--- a/resources/lang/en/admin/consumables/message.php
+++ b/resources/lang/en/admin/consumables/message.php
@@ -11,12 +11,14 @@ return array(
 
     'update' => array(
         'error'   => 'Consumable was not updated, please try again',
-        'success' => 'Consumable updated successfully.'
+        'success' => 'Consumable updated successfully.',
+        'nothing_updated'	=>  'No fields were selected, so nothing was updated.',
     ),
 
     'delete' => array(
         'confirm'   => 'Are you sure you wish to delete this consumable?',
         'error'   => 'There was an issue deleting the consumable. Please try again.',
+        'nothing_updated'   => 'No consumables were selected, so nothing was deleted.',
         'success' => 'The consumable was deleted successfully.'
     ),
 
diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php
index 539a01a13..691f6b2ac 100644
--- a/resources/lang/en/general.php
+++ b/resources/lang/en/general.php
@@ -246,4 +246,5 @@
     'clear_signature'       => 'Clear Signature',
     'show_help'             => 'Show help',
     'hide_help'             => 'Hide help',
+    'min_amt'               => 'Minimum Quantity',
     ];
diff --git a/resources/views/consumables/index.blade.php b/resources/views/consumables/index.blade.php
index 2605ae135..ca8b6fa2f 100644
--- a/resources/views/consumables/index.blade.php
+++ b/resources/views/consumables/index.blade.php
@@ -15,11 +15,26 @@
 {{-- Page content --}}
 @section('content')
 
+{{ Form::open([
+   'method' => 'POST',
+   'route' => ['consumables/bulkedit'],
+   'class' => 'form-inline',
+   'id' => 'bulkForm']) }}
 <div class="row">
   <div class="col-md-12">
 
     <div class="box box-default">
       <div class="box-body">
+        <div id="toolbar">
+          <label for="bulk_actions"><span class="sr-only">Bulk Actions</span></label>
+          <select name="bulk_actions" class="form-control select2" style="width: 150px;" aria-label="bulk_actions">
+            <option value="edit">Edit</option>
+            <option value="delete">Delete</option>
+            <option value="labels">Generate Labels</option>
+          </select>
+          <button class="btn btn-primary" id="bulkEdit" disabled>Go</button>
+        </div>
+        
         <table
                 data-columns="{{ \App\Presenters\ConsumablePresenter::dataTableLayout() }}"
                 data-cookie-id-table="consumablesTable"
@@ -48,6 +63,7 @@
 
   </div> <!-- /.col-md-12 -->
 </div> <!-- /.row -->
+{{ Form::close() }}
 @stop
 
 @section('moar_scripts')
diff --git a/resources/views/consumables/view.blade.php b/resources/views/consumables/view.blade.php
index 3cf71117b..472f488dc 100644
--- a/resources/views/consumables/view.blade.php
+++ b/resources/views/consumables/view.blade.php
@@ -30,6 +30,25 @@
       <div class="box-body">
         <div class="row">
           <div class="col-md-12">
+            <div class="col-md-2">
+                <strong>
+                    Labels
+                </strong>
+            </div>
+            <div class="col-md-6">
+                {{ Form::open([
+                        'method' => 'POST',
+                        'route' => ['consumables/bulkedit'],
+                        'class' => 'form-inline',
+                        'id' => 'bulkForm']) }}
+                    <input type="hidden" name="bulk_actions" value="labels" />
+                    <input type="hidden" name="ids[{{$consumable->id}}]" value="{{ $consumable->id }}" />
+                    <button class="btn btn-sm btn-default" id="bulkEdit" ><i class="fa fa-barcode" aria-hidden="true"></i> {{ trans_choice('button.generate_labels', 1) }}</button>
+
+                {{ Form::close() }}
+            </div>
+            
+            
             <div class="table table-responsive">
 
               <table
diff --git a/routes/web/consumables.php b/routes/web/consumables.php
index 8fbdded4b..a965d129c 100644
--- a/routes/web/consumables.php
+++ b/routes/web/consumables.php
@@ -3,14 +3,42 @@
 
     # Consumables
     Route::group([ 'prefix' => 'consumables', 'middleware' => ['auth']], function () {
-        Route::get(
-            '{consumableID}/checkout',
-            [ 'as' => 'checkout/consumable','uses' => 'Consumables\ConsumableCheckoutController@create' ]
-        );
-        Route::post(
-            '{consumableID}/checkout',
-            [ 'as' => 'checkout/consumable', 'uses' => 'Consumables\ConsumableCheckoutController@store' ]
-        );
+        Route::get('{consumableID}/checkout', [
+            'as' => 'checkout/consumable',
+            'uses' => 'Consumables\ConsumableCheckoutController@create' 
+        ]);
+        Route::post('{consumableID}/checkout', [
+             'as' => 'checkout/consumable',
+             'uses' => 'Consumables\ConsumableCheckoutController@store'
+        ]);
+        Route::get('{consumableID}/label', [
+            'as' => 'label/consumable',
+            'uses' => 'Consumables\ConsumablesController@getLabel'
+        ]);
+        Route::get('{consumableID}/qr_code', [ 
+            'as' => 'qr_code/consumable', 
+            'uses' => 'Consumables\ConsumablesController@getQrCode' 
+        ]);
+        Route::get('{consumableID}/view', [
+            'as' => 'consumables.view',
+            'uses' => 'Assets\AssetsController@show'
+        ]);
+        Route::get('{consumableID}/barcode', [ 
+            'as' => 'barcode/consumable', 
+            'uses' => 'Consumables\ConsumablesController@getBarCode' 
+        ]);
+        Route::post( 'bulkedit', [
+                'as'   => 'consumables/bulkedit',
+                'uses' => 'Consumables\BulkConsumablesController@edit'
+        ]);
+        Route::post('bulkdelete', [
+                'as'   => 'consumables/bulkdelete',
+                'uses' => 'Consumables\BulkConsumablesController@destroy'
+        ]);
+        Route::post('bulksave', [
+                'as'   => 'consumables/bulksave',
+                'uses' => 'Consumables\BulkConsumablesController@update'
+        ]);
     });
 
     Route::resource('consumables', 'Consumables\ConsumablesController', [
diff --git a/routes/web/hardware.php b/routes/web/hardware.php
index a5d6258b3..3f4c19526 100644
--- a/routes/web/hardware.php
+++ b/routes/web/hardware.php
@@ -22,7 +22,10 @@ Route::group(
             'parameters' => ['maintenance' => 'maintenance_id', 'asset' => 'asset_id']
         ]);
 
-        Route::get('requested', [ 'as' => 'assets.requested', 'uses' => 'Assets\AssetsController@getRequestedIndex']);
+        Route::get('requested', [ 
+            'as' => 'assets.requested', 
+            'uses' => 'Assets\AssetsController@getRequestedIndex'
+        ]);
 
         Route::get('scan', [
             'as' => 'asset.scan',
@@ -129,8 +132,14 @@ Route::group(
             'as' => 'hardware.view',
             'uses' => 'Assets\AssetsController@show'
         ]);
-        Route::get('{assetId}/qr_code', [ 'as' => 'qr_code/hardware', 'uses' => 'Assets\AssetsController@getQrCode' ]);
-        Route::get('{assetId}/barcode', [ 'as' => 'barcode/hardware', 'uses' => 'Assets\AssetsController@getBarCode' ]);
+        Route::get('{assetId}/qr_code', [ 
+            'as' => 'qr_code/hardware', 
+            'uses' => 'Assets\AssetsController@getQrCode' 
+        ]);
+        Route::get('{assetId}/barcode', [ 
+            'as' => 'barcode/hardware', 
+            'uses' => 'Assets\AssetsController@getBarCode' 
+        ]);
         Route::get('{assetId}/restore', [
             'as' => 'restore/hardware',
             'uses' => 'Assets\AssetsController@getRestore'
@@ -151,27 +160,18 @@ Route::group(
         ]);
 
 
-        Route::post(
-            'bulkedit',
-            [
+        Route::post( 'bulkedit', [
                 'as'   => 'hardware/bulkedit',
                 'uses' => 'Assets\BulkAssetsController@edit'
-            ]
-        );
-        Route::post(
-            'bulkdelete',
-            [
+        ]);
+        Route::post('bulkdelete', [
                 'as'   => 'hardware/bulkdelete',
                 'uses' => 'Assets\BulkAssetsController@destroy'
-            ]
-        );
-        Route::post(
-            'bulksave',
-            [
+        ]);
+        Route::post('bulksave', [
                 'as'   => 'hardware/bulksave',
                 'uses' => 'Assets\BulkAssetsController@update'
-            ]
-        );
+        ]);
 
         # Bulk checkout / checkin
          Route::get( 'bulkcheckout',  [
-- 
GitLab