From c94a7613ca0a806a93770fd90ff0b86f66c27707 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Thu, 2 May 2024 12:16:20 -0700 Subject: [PATCH 01/14] dropdown redirect options, helper function and session variable added --- app/Helpers/Helper.php | 24 +++++++++++++++++++ .../Assets/AssetCheckoutController.php | 10 +++++--- resources/views/hardware/checkout.blade.php | 11 +++++++++ 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index e3f2b036e0..8687be1e7e 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -14,6 +14,7 @@ use App\Models\Statuslabel; use App\Models\License; use Crypt; use Illuminate\Contracts\Encryption\DecryptException; +use Illuminate\Support\Facades\Session; use Image; use Carbon\Carbon; @@ -1459,4 +1460,27 @@ class Helper return $new_locale; // better that you have some weird locale that doesn't fit into our mappings anywhere than 'void' } + + static public function getRedirectOption($request, $assetId) + { + $redirect_option = session::get('redirect_option'); + + if ($redirect_option == '0') { + return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); + } + if ($redirect_option == '1') { + return redirect()->route('hardware.show', $assetId)->with('success', trans('admin/hardware/message.checkout.success')); + } + if ($redirect_option == '2') { + if ($request->assigned_location != null) { + return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success')); + } + } + if ($redirect_option == '3') { + if ($request->assigned_location != null) { + + return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success')); + } + } + } } diff --git a/app/Http/Controllers/Assets/AssetCheckoutController.php b/app/Http/Controllers/Assets/AssetCheckoutController.php index a096f16678..e5f069c411 100644 --- a/app/Http/Controllers/Assets/AssetCheckoutController.php +++ b/app/Http/Controllers/Assets/AssetCheckoutController.php @@ -10,6 +10,7 @@ use App\Http\Requests\AssetCheckoutRequest; use App\Models\Asset; use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Session; class AssetCheckoutController extends Controller { @@ -97,11 +98,14 @@ class AssetCheckoutController extends Controller return redirect()->to("hardware/$assetId/checkout")->with('error', trans('general.error_user_company')); } } - - if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) { - return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); + $redirect_option = $request->get('redirect_option'); + if($redirect_option != Session::get('redirect_option')) { + Session::put('redirect_option', $redirect_option); } + if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) { + return Helper::getRedirectOption($request, $assetId); + } // Redirect to the asset management page with error return redirect()->to("hardware/$assetId/checkout")->with('error', trans('admin/hardware/message.checkout.error').$asset->getErrors()); } catch (ModelNotFoundException $e) { diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index 9f91dace17..c731fa88ae 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -144,6 +144,17 @@ From 15cc4345abbfb6187b69daa7369bf1c1115ff6c7 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 14 May 2024 13:25:52 -0700 Subject: [PATCH 02/14] adds dynamic redirects to Assets --- app/Helpers/Helper.php | 12 ++++++++---- .../Controllers/Assets/AssetCheckinController.php | 9 ++------- .../Controllers/Assets/AssetCheckoutController.php | 5 +++-- resources/lang/en-US/admin/hardware/form.php | 3 +++ resources/views/hardware/checkin.blade.php | 6 ++++++ resources/views/hardware/checkout.blade.php | 12 ++++-------- 6 files changed, 26 insertions(+), 21 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 8687be1e7e..b839b287e1 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1464,6 +1464,7 @@ class Helper static public function getRedirectOption($request, $assetId) { $redirect_option = session::get('redirect_option'); + $checkout_to_type = session::get('checkout_to_type'); if ($redirect_option == '0') { return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); @@ -1472,15 +1473,18 @@ class Helper return redirect()->route('hardware.show', $assetId)->with('success', trans('admin/hardware/message.checkout.success')); } if ($redirect_option == '2') { - if ($request->assigned_location != null) { + + if ($checkout_to_type == 'user') { return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success')); } - } - if ($redirect_option == '3') { - if ($request->assigned_location != null) { + if ($checkout_to_type == 'location') { return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success')); } + if ($checkout_to_type == 'asset') { + return redirect()->route('hardware.show', $request->assigned_asset)->with('success', trans('admin/hardware/message.checkout.success')); + } } + return redirect()->back()->with('error', trans('admin/hardware/message.checkout.error')); } } diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 30ffd8bba2..0be355c7a4 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -45,7 +45,7 @@ class AssetCheckinController extends Controller return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.already_checked_in')); } - return view('hardware/checkin', compact('asset'))->with('statusLabel_list', Helper::statusLabelList())->with('backto', $backto); + return view('hardware/checkin', compact('asset'))->with('statusLabel_list', Helper::statusLabelList())->with('backto', $backto)->with('table_name', 'Assets'); } /** @@ -125,12 +125,7 @@ class AssetCheckinController extends Controller // Was the asset updated? if ($asset->save()) { event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at, $originalValues)); - - if ((isset($user)) && ($backto == 'user')) { - return redirect()->route('users.show', $user->id)->with('success', trans('admin/hardware/message.checkin.success')); - } - - return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkin.success')); + return Helper::getRedirectOption($request, $assetId); } // Redirect to the asset management page with error return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.error').$asset->getErrors()); diff --git a/app/Http/Controllers/Assets/AssetCheckoutController.php b/app/Http/Controllers/Assets/AssetCheckoutController.php index e5f069c411..8e54474a4d 100644 --- a/app/Http/Controllers/Assets/AssetCheckoutController.php +++ b/app/Http/Controllers/Assets/AssetCheckoutController.php @@ -36,7 +36,8 @@ class AssetCheckoutController extends Controller if ($asset->availableForCheckout()) { return view('hardware/checkout', compact('asset')) - ->with('statusLabel_list', Helper::deployableStatusLabelList()); + ->with('statusLabel_list', Helper::deployableStatusLabelList()) + ->with('table_name', 'Assets'); } return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkout.not_available')); @@ -100,7 +101,7 @@ class AssetCheckoutController extends Controller } $redirect_option = $request->get('redirect_option'); if($redirect_option != Session::get('redirect_option')) { - Session::put('redirect_option', $redirect_option); + Session::put(['redirect_option' => $redirect_option, 'checkout_to_type' => $request->get('checkout_to_type')]); } if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) { diff --git a/resources/lang/en-US/admin/hardware/form.php b/resources/lang/en-US/admin/hardware/form.php index a7aba0813c..edec543637 100644 --- a/resources/lang/en-US/admin/hardware/form.php +++ b/resources/lang/en-US/admin/hardware/form.php @@ -39,6 +39,9 @@ return [ 'order' => 'Order Number', 'qr' => 'QR Code', 'requestable' => 'Users may request this asset', + 'redirect_to_all' => 'Return to all :type', + 'redirect_to_type' => 'Go to :type', + 'redirect_to_checked_out_to' => 'Go to Checked Out to', 'select_statustype' => 'Select Status Type', 'serial' => 'Serial', 'status' => 'Status', diff --git a/resources/views/hardware/checkin.blade.php b/resources/views/hardware/checkin.blade.php index dd6237b1bd..7651f22e2b 100755 --- a/resources/views/hardware/checkin.blade.php +++ b/resources/views/hardware/checkin.blade.php @@ -104,6 +104,12 @@ diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index c731fa88ae..a67c19b473 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -145,15 +145,11 @@ {{ trans('button.cancel') }}
- -
From dc418a70331bc351e110e64febdb67f1b73972d4 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 14 May 2024 14:09:54 -0700 Subject: [PATCH 03/14] need to make variables names uniform --- app/Helpers/Helper.php | 33 ++-- .../Licenses/LicenseCheckoutController.php | 13 +- resources/views/licenses/checkout.blade.php | 177 +++++++++--------- .../forms/redirect_submit_options.blade.php | 13 ++ 4 files changed, 130 insertions(+), 106 deletions(-) create mode 100644 resources/views/partials/forms/redirect_submit_options.blade.php diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index b839b287e1..ff67985091 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1461,27 +1461,34 @@ class Helper } - static public function getRedirectOption($request, $assetId) - { + static public function getRedirectOption($request, $Id, $table) + { dd($request); $redirect_option = session::get('redirect_option'); $checkout_to_type = session::get('checkout_to_type'); if ($redirect_option == '0') { - return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); + switch ($table) { + case "Assets": + return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); + case "Licenses": + return redirect()->route('licenses.index')->with('success', trans('admin/hardware/message.checkout.success')); + } } if ($redirect_option == '1') { - return redirect()->route('hardware.show', $assetId)->with('success', trans('admin/hardware/message.checkout.success')); + switch ($table) { + case "Assets": + return redirect()->route('hardware.show', $Id)->with('success', trans('admin/hardware/message.checkout.success')); + case "Licenses": + return redirect()->route('licenses.show', $Id)->with('success', trans('admin/hardware/message.checkout.success')); + } } if ($redirect_option == '2') { - - if ($checkout_to_type == 'user') { - return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success')); - } - if ($checkout_to_type == 'location') { - - return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success')); - } - if ($checkout_to_type == 'asset') { + switch ($checkout_to_type) { + case 'user': + return redirect()->route('users.show', $request->assigned_user)->with('success', trans('admin/hardware/message.checkout.success')); + case 'location': + return redirect()->route('locations.show', $request->assigned_location)->with('success', trans('admin/hardware/message.checkout.success')); + case 'asset': return redirect()->route('hardware.show', $request->assigned_asset)->with('success', trans('admin/hardware/message.checkout.success')); } } diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index d61a1ad819..aa2a32e692 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Licenses; use App\Events\CheckoutableCheckedOut; +use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Requests\LicenseCheckoutRequest; use App\Models\Accessory; @@ -11,6 +12,7 @@ use App\Models\License; use App\Models\LicenseSeat; use App\Models\User; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Session; class LicenseCheckoutController extends Controller { @@ -41,7 +43,7 @@ class LicenseCheckoutController extends Controller } // Return the checkout view - return view('licenses/checkout', compact('license')); + return view('licenses/checkout', compact('license'))->with('table_name' , 'Licenses'); } // Invalid category @@ -77,11 +79,15 @@ class LicenseCheckoutController extends Controller $licenseSeat = $this->findLicenseSeatToCheckout($license, $seatId); $licenseSeat->user_id = Auth::id(); $licenseSeat->notes = $request->input('notes'); - $checkoutMethod = 'checkoutTo'.ucwords(request('checkout_to_type')); + $redirect_option = $request->get('redirect_option'); + Session::put('checkout_to_type', $request->input('checkout_to_type')); + if($redirect_option != Session::get('redirect_option')) { + Session::put(['redirect_option' => $redirect_option]); + } if ($this->$checkoutMethod($licenseSeat)) { - return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.checkout.success')); + return Helper::getRedirectOption($request, $licenseId, 'Licenses'); } return redirect()->route('licenses.index')->with('error', trans('Something went wrong handling this checkout.')); @@ -112,7 +118,6 @@ class LicenseCheckoutController extends Controller return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.asset_does_not_exist')); } $licenseSeat->asset_id = request('asset_id'); - // Override asset's assigned user if available if ($target->checkedOutToUser()) { $licenseSeat->assigned_to = $target->assigned_to; diff --git a/resources/views/licenses/checkout.blade.php b/resources/views/licenses/checkout.blade.php index e85c677420..3bf6350739 100755 --- a/resources/views/licenses/checkout.blade.php +++ b/resources/views/licenses/checkout.blade.php @@ -2,8 +2,8 @@ {{-- Page title --}} @section('title') - {{ trans('admin/licenses/general.checkout') }} -@parent + {{ trans('admin/licenses/general.checkout') }} + @parent @stop @section('header_right') @@ -13,105 +13,104 @@ {{-- Page content --}} @section('content') -
+
-
-
- {{csrf_field()}} +
+ + {{csrf_field()}} -
-
-

{{ $license->name }} ({{ trans('admin/licenses/message.seats_available', ['seat_count' => $license->availCount()->count()]) }})

-
-
- - - -
- -
-

{{ $license->name }}

-
+
+
+

{{ $license->name }} + ({{ trans('admin/licenses/message.seats_available', ['seat_count' => $license->availCount()->count()]) }} + )

- -
- -
-

{{ $license->category->name }}

+
+ + + +
+ +
+

{{ $license->name }}

+
-
- - -
- -
-

- @can('viewKeys', $license) - {{ $license->serial }} - @else - ------------ - @endcan -

+ +
+ +
+

{{ $license->category->name }}

+
-
- @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'false']) - - @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.user'), 'fieldname' => 'assigned_to', 'required'=>'true']) - - @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/licenses/form.asset'), 'fieldname' => 'asset_id', 'style' => 'display:none;']) - - - -
- -
- - {!! $errors->first('note', '') !!} + +
+ +
+

+ @can('viewKeys', $license) + {{ $license->serial }} + @else + ------------ + @endcan +

+
-
-
+ + @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'false']) + + @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.user'), 'fieldname' => 'assigned_to', 'required'=>'true']) + + @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/licenses/form.asset'), 'fieldname' => 'asset_id', 'style' => 'display:none;']) - @if ($license->requireAcceptance() || $license->getEula() || ($snipeSettings->webhook_endpoint!='')) -
-
-
- - @if ($license->requireAcceptance()) - - {{ trans('admin/categories/general.required_acceptance') }} -
- @endif - - @if ($license->getEula()) - - {{ trans('admin/categories/general.required_eula') }} -
- @endif - - @if (($license->category) && ($license->category->checkin_email)) - - {{ trans('admin/categories/general.checkin_email_notification') }} -
- @endif - - @if ($snipeSettings->webhook_endpoint!='') - - {{ trans('general.webhook_msg_note') }} - @endif + +
+ +
+ + {!! $errors->first('note', '') !!}
- @endif - -
- -
-
+ + @if ($license->requireAcceptance() || $license->getEula() || ($snipeSettings->webhook_endpoint!='')) +
+
+
+ + @if ($license->requireAcceptance()) + + {{ trans('admin/categories/general.required_acceptance') }} +
+ @endif + + @if ($license->getEula()) + + {{ trans('admin/categories/general.required_eula') }} +
+ @endif + + @if (($license->category) && ($license->category->checkin_email)) + + {{ trans('admin/categories/general.checkin_email_notification') }} +
+ @endif + + @if ($snipeSettings->webhook_endpoint!='') + + {{ trans('general.webhook_msg_note') }} + @endif +
+
+
+ @endif + @include ('partials.forms.redirect_submit_options', ['translated_name' => trans('admin/licenses/form.asset'), 'table_name' => $table_name, 'type' => $license->name]) + +
+
@stop diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php new file mode 100644 index 0000000000..0b98933254 --- /dev/null +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -0,0 +1,13 @@ + +
\ No newline at end of file From 786799225c02ecc91f49a3f2b75a9ab4d943a7c2 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 15 May 2024 10:37:07 -0700 Subject: [PATCH 04/14] remove dd --- app/Helpers/Helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index ff67985091..573c1792ea 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1462,7 +1462,7 @@ class Helper static public function getRedirectOption($request, $Id, $table) - { dd($request); + { $redirect_option = session::get('redirect_option'); $checkout_to_type = session::get('checkout_to_type'); From fb9a5f928fe713ef8256449ae16187ea8f27087d Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Wed, 15 May 2024 16:39:26 -0700 Subject: [PATCH 05/14] removed license changes --- app/Helpers/Helper.php | 8 ++------ .../Controllers/Licenses/LicenseCheckoutController.php | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 573c1792ea..8599fd3e0c 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1461,7 +1461,7 @@ class Helper } - static public function getRedirectOption($request, $Id, $table) + static public function getRedirectOption($request, $id, $table) { $redirect_option = session::get('redirect_option'); $checkout_to_type = session::get('checkout_to_type'); @@ -1470,16 +1470,12 @@ class Helper switch ($table) { case "Assets": return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); - case "Licenses": - return redirect()->route('licenses.index')->with('success', trans('admin/hardware/message.checkout.success')); } } if ($redirect_option == '1') { switch ($table) { case "Assets": - return redirect()->route('hardware.show', $Id)->with('success', trans('admin/hardware/message.checkout.success')); - case "Licenses": - return redirect()->route('licenses.show', $Id)->with('success', trans('admin/hardware/message.checkout.success')); + return redirect()->route('hardware.show', $id)->with('success', trans('admin/hardware/message.checkout.success')); } } if ($redirect_option == '2') { diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index aa2a32e692..ca2bfd1add 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -43,7 +43,7 @@ class LicenseCheckoutController extends Controller } // Return the checkout view - return view('licenses/checkout', compact('license'))->with('table_name' , 'Licenses'); + return view('licenses/checkout', compact('license')); } // Invalid category From e70fb42f8788d33dcac34a80afed5f7e53be1ca6 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Mon, 20 May 2024 10:22:01 -0700 Subject: [PATCH 06/14] remove license redirects --- .../Controllers/Licenses/LicenseCheckoutController.php | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index ca2bfd1add..a9030d63d7 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -81,13 +81,9 @@ class LicenseCheckoutController extends Controller $licenseSeat->notes = $request->input('notes'); $checkoutMethod = 'checkoutTo'.ucwords(request('checkout_to_type')); - $redirect_option = $request->get('redirect_option'); - Session::put('checkout_to_type', $request->input('checkout_to_type')); - if($redirect_option != Session::get('redirect_option')) { - Session::put(['redirect_option' => $redirect_option]); - } + if ($this->$checkoutMethod($licenseSeat)) { - return Helper::getRedirectOption($request, $licenseId, 'Licenses'); + return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.checkout.success')); } return redirect()->route('licenses.index')->with('error', trans('Something went wrong handling this checkout.')); From 280c03dcad1561e58bbaabf596acc9e6acad776d Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Mon, 20 May 2024 10:25:59 -0700 Subject: [PATCH 07/14] remove license checkout changes --- .../Licenses/LicenseCheckoutController.php | 2 - resources/views/licenses/checkout.blade.php | 175 +++++++++--------- 2 files changed, 88 insertions(+), 89 deletions(-) diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index a9030d63d7..7b3ad7e5c7 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Licenses; use App\Events\CheckoutableCheckedOut; -use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Requests\LicenseCheckoutRequest; use App\Models\Accessory; @@ -12,7 +11,6 @@ use App\Models\License; use App\Models\LicenseSeat; use App\Models\User; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Session; class LicenseCheckoutController extends Controller { diff --git a/resources/views/licenses/checkout.blade.php b/resources/views/licenses/checkout.blade.php index 3bf6350739..e85c677420 100755 --- a/resources/views/licenses/checkout.blade.php +++ b/resources/views/licenses/checkout.blade.php @@ -2,8 +2,8 @@ {{-- Page title --}} @section('title') - {{ trans('admin/licenses/general.checkout') }} - @parent + {{ trans('admin/licenses/general.checkout') }} +@parent @stop @section('header_right') @@ -13,104 +13,105 @@ {{-- Page content --}} @section('content') -
+
-
-
- {{csrf_field()}} +
+ + {{csrf_field()}} -
-
-

{{ $license->name }} - ({{ trans('admin/licenses/message.seats_available', ['seat_count' => $license->availCount()->count()]) }} - )

+
+
+

{{ $license->name }} ({{ trans('admin/licenses/message.seats_available', ['seat_count' => $license->availCount()->count()]) }})

+
+
+ + + +
+ +
+

{{ $license->name }}

+
-
- - - -
- -
-

{{ $license->name }}

-
-
- -
- -
-

{{ $license->category->name }}

-
-
- - -
- -
-

- @can('viewKeys', $license) - {{ $license->serial }} - @else - ------------ - @endcan -

-
-
- - @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'false']) - - @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.user'), 'fieldname' => 'assigned_to', 'required'=>'true']) - - @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/licenses/form.asset'), 'fieldname' => 'asset_id', 'style' => 'display:none;']) - - - -
- -
- - {!! $errors->first('note', '') !!} -
+ +
+ +
+

{{ $license->category->name }}

+ +
+ +
+

+ @can('viewKeys', $license) + {{ $license->serial }} + @else + ------------ + @endcan +

+
+
- @if ($license->requireAcceptance() || $license->getEula() || ($snipeSettings->webhook_endpoint!='')) -
-
-
+ @include ('partials.forms.checkout-selector', ['user_select' => 'true','asset_select' => 'true', 'location_select' => 'false']) - @if ($license->requireAcceptance()) - - {{ trans('admin/categories/general.required_acceptance') }} -
- @endif + @include ('partials.forms.edit.user-select', ['translated_name' => trans('general.user'), 'fieldname' => 'assigned_to', 'required'=>'true']) - @if ($license->getEula()) - - {{ trans('admin/categories/general.required_eula') }} -
- @endif + @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/licenses/form.asset'), 'fieldname' => 'asset_id', 'style' => 'display:none;']) - @if (($license->category) && ($license->category->checkin_email)) - - {{ trans('admin/categories/general.checkin_email_notification') }} -
- @endif - @if ($snipeSettings->webhook_endpoint!='') - - {{ trans('general.webhook_msg_note') }} - @endif -
+ +
+ +
+ + {!! $errors->first('note', '') !!} +
+
+
+ + + @if ($license->requireAcceptance() || $license->getEula() || ($snipeSettings->webhook_endpoint!='')) +
+
+
+ + @if ($license->requireAcceptance()) + + {{ trans('admin/categories/general.required_acceptance') }} +
+ @endif + + @if ($license->getEula()) + + {{ trans('admin/categories/general.required_eula') }} +
+ @endif + + @if (($license->category) && ($license->category->checkin_email)) + + {{ trans('admin/categories/general.checkin_email_notification') }} +
+ @endif + + @if ($snipeSettings->webhook_endpoint!='') + + {{ trans('general.webhook_msg_note') }} + @endif
+
@endif - @include ('partials.forms.redirect_submit_options', ['translated_name' => trans('admin/licenses/form.asset'), 'table_name' => $table_name, 'type' => $license->name]) - -
-
+ + +
+ +
+
@stop From a53f89cd2c486c79a7515e29abeb5c53019e7c77 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Mon, 20 May 2024 10:26:45 -0700 Subject: [PATCH 08/14] remove license checkout changes p2 --- app/Http/Controllers/Licenses/LicenseCheckoutController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index 7b3ad7e5c7..d61a1ad819 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckoutController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckoutController.php @@ -77,9 +77,9 @@ class LicenseCheckoutController extends Controller $licenseSeat = $this->findLicenseSeatToCheckout($license, $seatId); $licenseSeat->user_id = Auth::id(); $licenseSeat->notes = $request->input('notes'); + $checkoutMethod = 'checkoutTo'.ucwords(request('checkout_to_type')); - if ($this->$checkoutMethod($licenseSeat)) { return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.checkout.success')); } @@ -112,6 +112,7 @@ class LicenseCheckoutController extends Controller return redirect()->route('licenses.index')->with('error', trans('admin/licenses/message.asset_does_not_exist')); } $licenseSeat->asset_id = request('asset_id'); + // Override asset's assigned user if available if ($target->checkedOutToUser()) { $licenseSeat->assigned_to = $target->assigned_to; From 4d6f4303f5ad8ec2d3dc26986d7d7d2617cdd8fc Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 10:11:01 -0700 Subject: [PATCH 09/14] fixed partial up --- resources/views/hardware/checkin.blade.php | 11 +---------- resources/views/hardware/checkout.blade.php | 12 +----------- .../partials/forms/redirect_submit_options.blade.php | 7 +++---- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/resources/views/hardware/checkin.blade.php b/resources/views/hardware/checkin.blade.php index 7651f22e2b..a4556f70c2 100755 --- a/resources/views/hardware/checkin.blade.php +++ b/resources/views/hardware/checkin.blade.php @@ -101,16 +101,7 @@ {!! $errors->first('note', '') !!}
- + @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'hidden' => true])
diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index a67c19b473..db0dbb03be 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -141,17 +141,7 @@ @endif
- + @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'hidden' => false])
diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index 0b98933254..f817c54849 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -1,12 +1,11 @@
- @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'hidden' => true]) + @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'checkin' => true])
diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index db0dbb03be..bb02992819 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -141,7 +141,7 @@ @endif
- @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'hidden' => false]) + @include ('partials.forms.redirect_submit_options', ['route' => 'hardware.index', 'table_name' => $table_name, 'type'=> $asset->model->name, 'checkin' => false])
diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index f817c54849..b7a1e52eb5 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -5,7 +5,7 @@ From 9f02be0823ae8f7cfc6a7f8844b6331e390e9870 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 10:15:18 -0700 Subject: [PATCH 11/14] removed extra div --- resources/views/partials/forms/redirect_submit_options.blade.php | 1 - 1 file changed, 1 deletion(-) diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index b7a1e52eb5..2b67540c56 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -8,5 +8,4 @@ - \ No newline at end of file From 69c2cf2c4fb911d35f2e7666af48af4d84375631 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 13:13:25 -0700 Subject: [PATCH 12/14] fixed assetcheckin test, created redirect option test --- app/Helpers/Helper.php | 7 ++- tests/Feature/Checkins/AssetCheckinTest.php | 5 +- tests/Unit/Helpers/HelperTest.php | 63 +++++++++++++++++++++ 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 8599fd3e0c..cbbef02e42 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1463,21 +1463,24 @@ class Helper static public function getRedirectOption($request, $id, $table) { - $redirect_option = session::get('redirect_option'); - $checkout_to_type = session::get('checkout_to_type'); + $redirect_option = Session::get('redirect_option'); + $checkout_to_type = Session::get('checkout_to_type'); + //return to index if ($redirect_option == '0') { switch ($table) { case "Assets": return redirect()->route('hardware.index')->with('success', trans('admin/hardware/message.checkout.success')); } } + //return to thing being assigned if ($redirect_option == '1') { switch ($table) { case "Assets": return redirect()->route('hardware.show', $id)->with('success', trans('admin/hardware/message.checkout.success')); } } + //return to thing being assigned to if ($redirect_option == '2') { switch ($checkout_to_type) { case 'user': diff --git a/tests/Feature/Checkins/AssetCheckinTest.php b/tests/Feature/Checkins/AssetCheckinTest.php index 1e6d2b995b..7734d4831d 100644 --- a/tests/Feature/Checkins/AssetCheckinTest.php +++ b/tests/Feature/Checkins/AssetCheckinTest.php @@ -51,14 +51,13 @@ class AssetCheckinTest extends TestCase $this->actingAs(User::factory()->checkinAssets()->create()) ->post( - route('hardware.checkin.store', ['assetId' => $asset->id, 'backto' => 'user']), + route('hardware.checkin.store', ['assetId' => $asset->id]), [ 'name' => 'Changed Name', 'status_id' => $status->id, 'location_id' => $location->id, ], - ) - ->assertRedirect(route('users.show', $user)); + ); $this->assertNull($asset->refresh()->assignedTo); $this->assertNull($asset->expected_checkin); diff --git a/tests/Unit/Helpers/HelperTest.php b/tests/Unit/Helpers/HelperTest.php index cfc8c7fac2..00d8f1f5d1 100644 --- a/tests/Unit/Helpers/HelperTest.php +++ b/tests/Unit/Helpers/HelperTest.php @@ -3,6 +3,9 @@ namespace Tests\Unit\Helpers; use App\Helpers\Helper; +use Illuminate\Http\RedirectResponse; +use Illuminate\Support\Facades\Redirect; +use Illuminate\Support\Facades\Session; use Tests\TestCase; class HelperTest extends TestCase @@ -25,4 +28,64 @@ class HelperTest extends TestCase $this->settings->set(['digit_separator' => '1.234,56']); $this->assertSame(12.34, Helper::ParseCurrency('12,34')); } + public function testGetRedirectOptionMethod(){ + $test_data = [ + [ + 'request' =>(object) ['assigned_user' => 22], + 'id' => 1, + 'checkout_to_type' => 'user', + 'redirect_option' => 2, + 'table' => 'Assets', + 'route' => route('users.show', 22), + 'message' => 'redirect option 2 for user assigned to failed.' + ], + [ + 'request' =>(object) ['assigned_location' => 10], + 'id' => 2, + 'checkout_to_type' => 'location', + 'redirect_option' => 2, + 'table' => 'Locations', + 'route' => route('locations.show', 10), + 'message' => 'redirect option 2 location assigned to failed.' + ], + [ + 'request' =>(object) ['assigned_asset' => 101], + 'id' => 3, + 'checkout_to_type' => 'asset', + 'redirect_option' => 2, + 'table' => 'Assets', + 'route' => route('hardware.show', 101), + 'message' => 'redirect option 2 back to asset assigned to failed.' + ], + [ + 'request' =>(object) ['assigned_asset' => null], + 'id' => 999, + 'checkout_to_type' => null, + 'redirect_option' => 1, + 'table' => 'Assets', + 'route' => route('hardware.show', 999), + 'message' => 'redirect option 1 back to asset failed.' + ], + [ + 'request' =>(object) ['assigned_asset' => null], + 'id' => null, + 'checkout_to_type' => null, + 'redirect_option' => 0, + 'table' => 'Assets', + 'route' => route('hardware.index'), + 'message' => 'redirect option 0 back to index failed.' + ], + ]; + + foreach ($test_data as $data) { + + Session::put('redirect_option', $data['redirect_option']); + Session::put('checkout_to_type', $data['checkout_to_type']); + + $redirect = Helper::getRedirectOption($data['request'],$data['id'], $data['table']); + + $this->assertInstanceOf(RedirectResponse::class, $redirect); + $this->assertEquals($data['route'], $redirect->getTargetUrl(), $data['message']); + } + } } From 0327e71f0f7fee210415ddd88454e786a3f60135 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 13:26:29 -0700 Subject: [PATCH 13/14] made message the keys, cleaned up array --- tests/Unit/Helpers/HelperTest.php | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/tests/Unit/Helpers/HelperTest.php b/tests/Unit/Helpers/HelperTest.php index 00d8f1f5d1..3ef114b798 100644 --- a/tests/Unit/Helpers/HelperTest.php +++ b/tests/Unit/Helpers/HelperTest.php @@ -28,56 +28,52 @@ class HelperTest extends TestCase $this->settings->set(['digit_separator' => '1.234,56']); $this->assertSame(12.34, Helper::ParseCurrency('12,34')); } - public function testGetRedirectOptionMethod(){ + public function testGetRedirectOptionMethod() + { $test_data = [ - [ + 'Option 2: redirect for user assigned to ' => [ 'request' =>(object) ['assigned_user' => 22], 'id' => 1, 'checkout_to_type' => 'user', 'redirect_option' => 2, 'table' => 'Assets', 'route' => route('users.show', 22), - 'message' => 'redirect option 2 for user assigned to failed.' ], - [ + 'Option 2: redirect location assigned to ' => [ 'request' =>(object) ['assigned_location' => 10], 'id' => 2, 'checkout_to_type' => 'location', 'redirect_option' => 2, 'table' => 'Locations', 'route' => route('locations.show', 10), - 'message' => 'redirect option 2 location assigned to failed.' ], - [ + 'Option 2: redirect back to asset assigned to ' => [ 'request' =>(object) ['assigned_asset' => 101], 'id' => 3, 'checkout_to_type' => 'asset', 'redirect_option' => 2, 'table' => 'Assets', 'route' => route('hardware.show', 101), - 'message' => 'redirect option 2 back to asset assigned to failed.' ], - [ + 'Option 1: redirect back to asset ' => [ 'request' =>(object) ['assigned_asset' => null], 'id' => 999, 'checkout_to_type' => null, 'redirect_option' => 1, 'table' => 'Assets', 'route' => route('hardware.show', 999), - 'message' => 'redirect option 1 back to asset failed.' ], - [ + 'Option 0: redirect back to index ' => [ 'request' =>(object) ['assigned_asset' => null], 'id' => null, 'checkout_to_type' => null, 'redirect_option' => 0, 'table' => 'Assets', 'route' => route('hardware.index'), - 'message' => 'redirect option 0 back to index failed.' ], ]; - foreach ($test_data as $data) { + foreach ($test_data as $scenario => $data ) { Session::put('redirect_option', $data['redirect_option']); Session::put('checkout_to_type', $data['checkout_to_type']); @@ -85,7 +81,7 @@ class HelperTest extends TestCase $redirect = Helper::getRedirectOption($data['request'],$data['id'], $data['table']); $this->assertInstanceOf(RedirectResponse::class, $redirect); - $this->assertEquals($data['route'], $redirect->getTargetUrl(), $data['message']); + $this->assertEquals($data['route'], $redirect->getTargetUrl(), $scenario.'failed.'); } } } From f2693ee957dc4eceb232fc65393457227283d9b1 Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 21 May 2024 14:08:35 -0700 Subject: [PATCH 14/14] conditionally fixed redirect select option --- app/Helpers/Helper.php | 5 +++-- app/Http/Controllers/Assets/AssetCheckinController.php | 5 ++++- app/Http/Controllers/Assets/AssetCheckoutController.php | 8 +++----- .../partials/forms/redirect_submit_options.blade.php | 6 +++--- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index cbbef02e42..eb4c8ed81d 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1461,8 +1461,9 @@ class Helper } - static public function getRedirectOption($request, $id, $table) + static public function getRedirectOption($request, $id, $table, $asset_id = null) { + $redirect_option = Session::get('redirect_option'); $checkout_to_type = Session::get('checkout_to_type'); @@ -1477,7 +1478,7 @@ class Helper if ($redirect_option == '1') { switch ($table) { case "Assets": - return redirect()->route('hardware.show', $id)->with('success', trans('admin/hardware/message.checkout.success')); + return redirect()->route('hardware.show', $id ? $id : $asset_id)->with('success', trans('admin/hardware/message.checkout.success')); } } //return to thing being assigned to diff --git a/app/Http/Controllers/Assets/AssetCheckinController.php b/app/Http/Controllers/Assets/AssetCheckinController.php index 0be355c7a4..6de856e7f9 100644 --- a/app/Http/Controllers/Assets/AssetCheckinController.php +++ b/app/Http/Controllers/Assets/AssetCheckinController.php @@ -13,6 +13,7 @@ use App\Models\LicenseSeat; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Redirect; +use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\View; class AssetCheckinController extends Controller @@ -122,10 +123,12 @@ class AssetCheckinController extends Controller $acceptance->delete(); }); + Session::put('redirect_option', $request->get('redirect_option')); // Was the asset updated? if ($asset->save()) { + event(new CheckoutableCheckedIn($asset, $target, Auth::user(), $request->input('note'), $checkin_at, $originalValues)); - return Helper::getRedirectOption($request, $assetId); + return Helper::getRedirectOption($asset, $assetId, 'Assets'); } // Redirect to the asset management page with error return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkin.error').$asset->getErrors()); diff --git a/app/Http/Controllers/Assets/AssetCheckoutController.php b/app/Http/Controllers/Assets/AssetCheckoutController.php index 8e54474a4d..8531a99eab 100644 --- a/app/Http/Controllers/Assets/AssetCheckoutController.php +++ b/app/Http/Controllers/Assets/AssetCheckoutController.php @@ -99,13 +99,11 @@ class AssetCheckoutController extends Controller return redirect()->to("hardware/$assetId/checkout")->with('error', trans('general.error_user_company')); } } - $redirect_option = $request->get('redirect_option'); - if($redirect_option != Session::get('redirect_option')) { - Session::put(['redirect_option' => $redirect_option, 'checkout_to_type' => $request->get('checkout_to_type')]); - } + + Session::put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]); if ($asset->checkOut($target, $admin, $checkout_at, $expected_checkin, $request->get('note'), $request->get('name'))) { - return Helper::getRedirectOption($request, $assetId); + return Helper::getRedirectOption($request, $assetId, 'Assets'); } // Redirect to the asset management page with error return redirect()->to("hardware/$assetId/checkout")->with('error', trans('admin/hardware/message.checkout.error').$asset->getErrors()); diff --git a/resources/views/partials/forms/redirect_submit_options.blade.php b/resources/views/partials/forms/redirect_submit_options.blade.php index 2b67540c56..dd5134e7ad 100644 --- a/resources/views/partials/forms/redirect_submit_options.blade.php +++ b/resources/views/partials/forms/redirect_submit_options.blade.php @@ -1,11 +1,11 @@ \ No newline at end of file