diff --git a/app/Http/Controllers/Accessories/AccessoryCheckinController.php b/app/Http/Controllers/Accessories/AccessoryCheckinController.php index eff635d24a..7a228e50ad 100644 --- a/app/Http/Controllers/Accessories/AccessoryCheckinController.php +++ b/app/Http/Controllers/Accessories/AccessoryCheckinController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Accessories; use App\Events\CheckoutableCheckedIn; +use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\Accessory; use App\Models\User; @@ -63,7 +64,9 @@ class AccessoryCheckinController extends Controller event(new CheckoutableCheckedIn($accessory, User::find($return_to), auth()->user(), $request->input('note'), $checkin_at)); - return redirect()->route('accessories.show', $accessory->id)->with('success', trans('admin/accessories/message.checkin.success')); + session()->put(['redirect_option' => $request->get('redirect_option')]); + + return redirect()->to(Helper::getRedirectOption($request, $accessory->id, 'Accessories'))->with('success', trans('admin/accessories/message.checkin.success')); } // Redirect to the accessory management page with error return redirect()->route('accessories.index')->with('error', trans('admin/accessories/message.checkin.error')); diff --git a/app/Http/Controllers/Accessories/AccessoryCheckoutController.php b/app/Http/Controllers/Accessories/AccessoryCheckoutController.php index 19c8c6c7c5..5b10e99bce 100644 --- a/app/Http/Controllers/Accessories/AccessoryCheckoutController.php +++ b/app/Http/Controllers/Accessories/AccessoryCheckoutController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Accessories; use App\Events\CheckoutableCheckedOut; +use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Http\Requests\AccessoryCheckoutRequest; use App\Models\Accessory; @@ -78,8 +79,15 @@ class AccessoryCheckoutController extends Controller } event(new CheckoutableCheckedOut($accessory, $user, auth()->user(), $request->input('note'))); + // Set this as user since we only allow checkout to user for this item type + $request->request->add(['checkout_to_type' => 'user']); + $request->request->add(['assigned_user' => $user->id]); + + session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]); + + // Redirect to the new accessory page - return redirect()->route('accessories.index') + return redirect()->to(Helper::getRedirectOption($request, $accessory->id, 'Accessories')) ->with('success', trans('admin/accessories/message.checkout.success')); } } diff --git a/app/Http/Controllers/Components/ComponentCheckinController.php b/app/Http/Controllers/Components/ComponentCheckinController.php index b59237a5d0..379882c3c5 100644 --- a/app/Http/Controllers/Components/ComponentCheckinController.php +++ b/app/Http/Controllers/Components/ComponentCheckinController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Components; use App\Events\CheckoutableCheckedIn; use App\Events\ComponentCheckedIn; +use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\Asset; use App\Models\Component; @@ -96,12 +97,10 @@ class ComponentCheckinController extends Controller $asset = Asset::find($component_assets->asset_id); event(new CheckoutableCheckedIn($component, $asset, auth()->user(), $request->input('note'), Carbon::now())); - if ($backto == 'asset'){ - return redirect()->route('hardware.show', $asset->id)->with('success', - trans('admin/components/message.checkin.success')); - } - return redirect()->route('components.index')->with('success', + session()->put(['redirect_option' => $request->get('redirect_option')]); + + return redirect()->to(Helper::getRedirectOption($request, $component->id, 'Components'))->with('success', trans('admin/components/message.checkin.success')); } diff --git a/app/Http/Controllers/Components/ComponentCheckoutController.php b/app/Http/Controllers/Components/ComponentCheckoutController.php index fc319b47de..85d8503578 100644 --- a/app/Http/Controllers/Components/ComponentCheckoutController.php +++ b/app/Http/Controllers/Components/ComponentCheckoutController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Components; use App\Events\CheckoutableCheckedOut; use App\Events\ComponentCheckedOut; +use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\Asset; use App\Models\Component; @@ -93,7 +94,7 @@ class ComponentCheckoutController extends Controller ->withInput(); } - // Check if the user exists + // Check if the asset exists $asset = Asset::find($request->input('asset_id')); // Update the component data @@ -109,6 +110,11 @@ class ComponentCheckoutController extends Controller event(new CheckoutableCheckedOut($component, $asset, auth()->user(), $request->input('note'))); - return redirect()->route('components.index')->with('success', trans('admin/components/message.checkout.success')); + $request->request->add(['checkout_to_type' => 'asset']); + $request->request->add(['assigned_asset' => $asset->id]); + + session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]); + + return redirect()->to(Helper::getRedirectOption($request, $component->id, 'Components'))->with('success', trans('admin/components/message.checkout.success')); } } diff --git a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php index fd690fede8..1bdb16af92 100644 --- a/app/Http/Controllers/Consumables/ConsumableCheckoutController.php +++ b/app/Http/Controllers/Consumables/ConsumableCheckoutController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Consumables; use App\Events\CheckoutableCheckedOut; +use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\Consumable; use App\Models\User; @@ -33,7 +34,7 @@ class ConsumableCheckoutController extends Controller // Make sure there is at least one available to checkout if ($consumable->numRemaining() <= 0){ return redirect()->route('consumables.index') - ->with('error', trans('admin/consumables/message.checkout.unavailable')); + ->with('error', trans('admin/consumables/message.checkout.unavailable', ['requested' => 1, 'remaining' => $consumable->numRemaining()])); } // Return the checkout view @@ -76,7 +77,7 @@ class ConsumableCheckoutController extends Controller // Make sure there is at least one available to checkout if ($consumable->numRemaining() <= 0 || $quantity > $consumable->numRemaining()) { - return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable')); + return redirect()->route('consumables.index')->with('error', trans('admin/consumables/message.checkout.unavailable', ['requested' => $quantity, 'remaining' => $consumable->numRemaining() ])); } $admin_user = auth()->user(); @@ -101,7 +102,13 @@ class ConsumableCheckoutController extends Controller } event(new CheckoutableCheckedOut($consumable, $user, auth()->user(), $request->input('note'))); + $request->request->add(['checkout_to_type' => 'user']); + $request->request->add(['assigned_user' => $user->id]); + + session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]); + + // Redirect to the new consumable page - return redirect()->route('consumables.index')->with('success', trans('admin/consumables/message.checkout.success')); + return redirect()->to(Helper::getRedirectOption($request, $consumable->id, 'Consumables'))->with('success', trans('admin/consumables/message.checkout.success')); } } diff --git a/app/Http/Controllers/Licenses/LicenseCheckinController.php b/app/Http/Controllers/Licenses/LicenseCheckinController.php index e863aa860e..dd83d0154c 100644 --- a/app/Http/Controllers/Licenses/LicenseCheckinController.php +++ b/app/Http/Controllers/Licenses/LicenseCheckinController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Licenses; use App\Events\CheckoutableCheckedIn; +use App\Helpers\Helper; use App\Http\Controllers\Controller; use App\Models\License; use App\Models\LicenseSeat; @@ -100,15 +101,15 @@ class LicenseCheckinController extends Controller $licenseSeat->asset_id = null; $licenseSeat->notes = $request->input('notes'); + session()->put(['redirect_option' => $request->get('redirect_option')]); + + // Was the asset updated? if ($licenseSeat->save()) { event(new CheckoutableCheckedIn($licenseSeat, $return_to, auth()->user(), $request->input('notes'))); - if ($backTo == 'user') { - return redirect()->route('users.show', $return_to->id)->with('success', trans('admin/licenses/message.checkin.success')); - } - return redirect()->route('licenses.show', $licenseSeat->license_id)->with('success', trans('admin/licenses/message.checkin.success')); + return redirect()->to(Helper::getRedirectOption($request, $license->id, 'Licenses'))->with('success', trans('admin/licenses/message.checkin.success')); } // Redirect to the license page with error diff --git a/app/Http/Controllers/Licenses/LicenseCheckoutController.php b/app/Http/Controllers/Licenses/LicenseCheckoutController.php index 2fb0434f62..f08d33f9de 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; @@ -81,10 +82,23 @@ class LicenseCheckoutController extends Controller $checkoutMethod = 'checkoutTo'.ucwords(request('checkout_to_type')); - if ($this->$checkoutMethod($licenseSeat)) { - return redirect()->route('licenses.index')->with('success', trans('admin/licenses/message.checkout.success')); + + if (request('checkout_to_type')=='asset') { + $checkoutTarget = $this->checkoutToAsset($licenseSeat); + $request->request->add(['assigned_asset' => $checkoutTarget->id]); + } else { + $checkoutTarget = $this->checkoutToUser($licenseSeat); + $request->request->add(['assigned_user' => $checkoutTarget->id]); } + session()->put(['redirect_option' => $request->get('redirect_option'), 'checkout_to_type' => $request->get('checkout_to_type')]); + + if ($checkoutTarget) { + return redirect()->to(Helper::getRedirectOption($request, $checkoutTarget->id, 'Licenses'))->with('success', trans('admin/licenses/message.checkout.success')); + } + + + return redirect()->route('licenses.index')->with('error', trans('Something went wrong handling this checkout.')); } @@ -120,8 +134,7 @@ class LicenseCheckoutController extends Controller } if ($licenseSeat->save()) { event(new CheckoutableCheckedOut($licenseSeat, $target, auth()->user(), request('notes'))); - - return true; + return $target; } return false; @@ -137,8 +150,7 @@ class LicenseCheckoutController extends Controller if ($licenseSeat->save()) { event(new CheckoutableCheckedOut($licenseSeat, $target, auth()->user(), request('notes'))); - - return true; + return $target; } return false;