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');
}
+
}