diff --git a/app/Actions/CheckoutRequests/CancelCheckoutRequest.php b/app/Actions/CheckoutRequests/CancelCheckoutRequest.php new file mode 100644 index 0000000000..235728be14 --- /dev/null +++ b/app/Actions/CheckoutRequests/CancelCheckoutRequest.php @@ -0,0 +1,43 @@ +cancelRequest(); + + $asset->decrement('requests_counter', 1); + + $data['item'] = $asset; + $data['target'] = $user; + $data['item_quantity'] = 1; + $settings = Setting::getSettings(); + + $logaction = Actionlog::create([ + 'item_id' => $data['asset_id'] = $asset->id, + 'item_type' => $data['item_type'] = Asset::class, + 'created_at' => $data['requested_date'] = date('Y-m-d H:i:s'), + 'target_id' => $data['user_id'] = auth()->id(), + 'target_type' => User::class, + 'location_id' => $user->location_id ?? null, + ]); + $logaction->logaction('request canceled'); + + try { + $settings->notify(new RequestAssetCancelation($data)); + } catch (\Exception $e) { + \Log::warning($e); + } + + return true; + } + +} \ No newline at end of file diff --git a/app/Actions/CheckoutRequests/CreateCheckoutRequest.php b/app/Actions/CheckoutRequests/CreateCheckoutRequest.php index c9fd4c9387..825c1ddeb4 100644 --- a/app/Actions/CheckoutRequests/CreateCheckoutRequest.php +++ b/app/Actions/CheckoutRequests/CreateCheckoutRequest.php @@ -21,7 +21,6 @@ class CreateCheckoutRequest */ public static function run(Asset $asset, User $user): string { - //throw new \Exception(); if (is_null(Asset::RequestableAssets()->find($asset->id))) { throw new AssetNotRequestable($asset); } @@ -34,33 +33,16 @@ class CreateCheckoutRequest $data['item_quantity'] = 1; $settings = Setting::getSettings(); - $logaction = new Actionlog(); - $logaction->item_id = $data['asset_id'] = $asset->id; - $logaction->item_type = $data['item_type'] = Asset::class; - $logaction->created_at = $data['requested_date'] = date('Y-m-d H:i:s'); - - if ($user->location_id) { - $logaction->location_id = $user->location_id; - } - $logaction->target_id = $data['user_id'] = auth()->id(); - $logaction->target_type = User::class; - - // If it's already requested, cancel the request. - // this is going into another action class - if ($asset->isRequestedBy(auth()->user())) { - $asset->cancelRequest(); - $asset->decrement('requests_counter', 1); - - $logaction->logaction('request canceled'); - try { - $settings->notify(new RequestAssetCancelation($data)); - } catch (\Exception $e) { - \Log::warning($e); - } - return $status = 'cancelled'; - } - + $logaction = Actionlog::create([ + 'target_id' => $data['asset_id'] = $asset->id, + 'item_type' => $data['item_type'] = Asset::class, + 'created_at' => $data['requested_date'] = date('Y-m-d H:i:s'), + 'user_id' => $data['user_id'] = auth()->id(), + 'target_type' => User::class, + 'location_id' => $user->location_id ?? null, + ]); $logaction->logaction('requested'); + $asset->request(); $asset->increment('requests_counter', 1); try { diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php index 605bbb8b99..1f4a54b4dd 100755 --- a/app/Http/Controllers/ViewAssetsController.php +++ b/app/Http/Controllers/ViewAssetsController.php @@ -83,7 +83,7 @@ class ViewAssetsController extends Controller return view('account/requestable-assets', compact('assets', 'models')); } - public function getRequestItem(Request $request, $itemType, $itemId = null, $cancel_by_admin = false, $requestingUser = null) : RedirectResponse + public function getRequestItem(Request $request, $itemType, $itemId = null, $cancel_by_admin = false, $requestingUser = null): RedirectResponse { $item = null; $fullItemType = 'App\\Models\\'.studly_case($itemType); diff --git a/database/factories/AssetFactory.php b/database/factories/AssetFactory.php index 1923b15150..00105205c1 100644 --- a/database/factories/AssetFactory.php +++ b/database/factories/AssetFactory.php @@ -352,8 +352,7 @@ class AssetFactory extends Factory 'deployable' => true, 'pending' => true, ])->id; - //return $this->state(['requestable' => true]); - return $this->state(['status_id' => $id]); + return $this->state(['status_id' => $id, 'requestable' => true]); } public function nonrequestable() @@ -363,8 +362,7 @@ class AssetFactory extends Factory 'deployable' => false, 'pending' => false, ])->id; - //return $this->state(['requestable' => false]); - return $this->state(['status_id' => $id]); + return $this->state(['status_id' => $id, 'requestable' => false]); } public function noPurchaseOrEolDate() diff --git a/routes/web.php b/routes/web.php index f719231c51..51451e5b8a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -294,24 +294,18 @@ Route::group(['prefix' => 'account', 'middleware' => ['auth']], function () { Route::get('api', [ProfileController::class, 'api'])->name('user.api'); // View Assets - Route::get('view-assets', [ViewAssetsController::class, 'getIndex'])->name('view-assets'); + Route::get('view-assets', [ViewAssetsController::class, 'index'])->name('view-assets'); Route::get('requested', [ViewAssetsController::class, 'getRequestedAssets'])->name('account.requested'); // Profile - Route::get( - 'requestable-assets', - [ViewAssetsController::class, 'getRequestableIndex'] - )->name('requestable-assets'); - Route::post( - 'request-asset/{asset}', - [ViewAssetsController::class, 'store'] - )->name('account/request-asset'); + Route::get('requestable-assets', [ViewAssetsController::class, 'getRequestableIndex'])->name('requestable-assets'); - Route::post( - 'request/{itemType}/{itemId}/{cancel_by_admin?}/{requestingUser?}', - [ViewAssetsController::class, 'getRequestItem'] - )->name('account/request-item'); + Route::post('request-asset/{asset}', [ViewAssetsController::class, 'store']) + ->name('account/request-asset'); + + Route::post('request/{itemType}/{itemId}/{cancel_by_admin?}/{requestingUser?}', [ViewAssetsController::class, 'getRequestItem']) + ->name('account/request-item'); // Account Dashboard Route::get('/', [ViewAssetsController::class, 'getIndex'])->name('account');