diff --git a/app/Helpers/Helper.php b/app/Helpers/Helper.php index 5ab19bf61d75..dc54b296c409 100644 --- a/app/Helpers/Helper.php +++ b/app/Helpers/Helper.php @@ -1487,6 +1487,7 @@ static public function getRedirectOption($request, $id, $table, $item_id = null) $redirect_option = Session::get('redirect_option'); $checkout_to_type = Session::get('checkout_to_type'); $checkedInFrom = Session::get('checkedInFrom'); + $other_redirect = Session::get('other_redirect'); // return to index if ($redirect_option == 'index') { @@ -1535,6 +1536,16 @@ static public function getRedirectOption($request, $id, $table, $item_id = null) return route('hardware.show', $request->assigned_asset ?? $checkedInFrom); } } + + // return to somewhere else + if ($redirect_option == 'other_redirect') { + switch ($other_redirect) { + case 'audit': + return route('assets.audit.due'); + } + + } + return redirect()->back()->with('error', trans('admin/hardware/message.checkout.error')); } diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php index 50810b04343b..56b9d94ffab7 100755 --- a/app/Http/Controllers/Assets/AssetsController.php +++ b/app/Http/Controllers/Assets/AssetsController.php @@ -899,6 +899,10 @@ public function auditStore(UploadFileRequest $request, Asset $asset) $this->authorize('audit', Asset::class); + session()->put('redirect_option', $request->get('redirect_option')); + session()->put('other_redirect', 'audit'); + + $originalValues = $asset->getRawOriginal(); $asset->next_audit_date = $request->input('next_audit_date'); @@ -974,7 +978,7 @@ public function auditStore(UploadFileRequest $request, Asset $asset) } $asset->logAudit($request->input('note'), $request->input('location_id'), $file_name, $originalValues); - return redirect()->route('assets.audit.due')->with('success', trans('admin/hardware/message.audit.success')); + return redirect()->to(Helper::getRedirectOption($request, $asset->id, 'Assets'))->with('success', trans('admin/hardware/message.audit.success')); } return redirect()->back()->withInput()->withErrors($asset->getErrors()); diff --git a/resources/views/hardware/audit.blade.php b/resources/views/hardware/audit.blade.php index d3560a9a0ddb..ea8b1673eaaf 100644 --- a/resources/views/hardware/audit.blade.php +++ b/resources/views/hardware/audit.blade.php @@ -138,13 +138,18 @@ - + + + diff --git a/resources/views/partials/bootstrap-table.blade.php b/resources/views/partials/bootstrap-table.blade.php index 0c514cd37713..fc9e752e5115 100644 --- a/resources/views/partials/bootstrap-table.blade.php +++ b/resources/views/partials/bootstrap-table.blade.php @@ -341,7 +341,7 @@ function licenseKeyFormatter(value, row) { function hardwareAuditFormatter(value, row) { - return '{{ trans('general.audit') }}'; + return '{{ trans('general.audit') }} '; } diff --git a/tests/Feature/Assets/Ui/AuditAssetTest.php b/tests/Feature/Assets/Ui/AuditAssetTest.php index a966e6f458cf..f25ea5e2be12 100644 --- a/tests/Feature/Assets/Ui/AuditAssetTest.php +++ b/tests/Feature/Assets/Ui/AuditAssetTest.php @@ -22,13 +22,50 @@ public function testPageCanBeAccessed(): void ->assertStatus(200); } - public function testAssetCanBeAudited() + public function testAssetAuditPostIsRedirectedToAssetIndexIfRedirectSelectionIsIndex() { - $response = $this->actingAs(User::factory()->auditAssets()->create()) - ->post(route('asset.audit.store', Asset::factory()->create())) + $asset = Asset::factory()->create(); + + $response = $this->actingAs(User::factory()->viewAssets()->editAssets()->auditAssets()->create()) + ->from(route('asset.audit.create', $asset)) + ->post(route('asset.audit.store', $asset), + [ + 'redirect_option' => 'index', + ]) ->assertStatus(302) - ->assertRedirect(route('assets.audit.due')); + ->assertRedirect(route('hardware.index')); + $this->followRedirects($response)->assertSee('success'); + + } + + public function testAssetAuditPostIsRedirectedToAssetPageIfRedirectSelectionIsAsset() + { + $asset = Asset::factory()->create(); + + $response = $this->actingAs(User::factory()->viewAssets()->editAssets()->auditAssets()->create()) + ->from(route('asset.audit.create', $asset)) + ->post(route('asset.audit.store', $asset), + [ + 'redirect_option' => 'item', + ]) + ->assertStatus(302) + ->assertRedirect(route('hardware.show', $asset)); + $this->followRedirects($response)->assertSee('success'); + } + + public function testAssetAuditPostIsRedirectedToAuditDuePageIfRedirectSelectionIsList() + { + $asset = Asset::factory()->create(); + $response = $this->actingAs(User::factory()->viewAssets()->editAssets()->auditAssets()->create()) + ->from(route('asset.audit.create', $asset)) + ->post(route('asset.audit.store', $asset), + [ + 'redirect_option' => 'other_redirect', + ]) + ->assertStatus(302) + ->assertRedirect(route('assets.audit.due')); $this->followRedirects($response)->assertSee('success'); } + }