diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index dc87dc999..222f528e4 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -125,6 +125,8 @@ class AssetsController extends Controller $assets->InModelList($non_deprecable_models->toArray()); } + + // These are used by the API to query against specific ID numbers. // They are also used by the individual searches on detail pages like // locations, etc. @@ -136,12 +138,11 @@ class AssetsController extends Controller } } - - // Make sure the offset and limit are actually integers and do not exceed system limits - $offset = ($request->input('offset') > $assets->count()) ? $assets->count() : abs($request->input('offset')); - $limit = app('api_limit_value'); - - $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; + if ((! is_null($filter)) && (count($filter)) > 0) { + $assets->ByFilter($filter); + } elseif ($request->filled('search')) { + $assets->TextSearch($request->input('search')); + } // This is used by the audit reporting routes if (Gate::allows('audit', Asset::class)) { @@ -156,7 +157,6 @@ class AssetsController extends Controller } - // This is used by the sidenav, mostly // We switched from using query scopes here because of a Laravel bug @@ -206,7 +206,7 @@ class AssetsController extends Controller break; case 'Deployed': // more sad, horrible workarounds for laravel bugs when doing full text searches - $assets->where('assets.assigned_to', '>', '0'); + $assets->whereNotNull('assets.assigned_to'); break; case 'byod': // This is kind of redundant, since we already check for byod=1 above, but this keeps the @@ -232,12 +232,6 @@ class AssetsController extends Controller } - if ((! is_null($filter)) && (count($filter)) > 0) { - $assets->ByFilter($filter); - } elseif ($request->filled('search')) { - $assets->TextSearch($request->input('search')); - } - // Leave these under the TextSearch scope, else the fuzziness will override the specific ID (status ID, etc) requested if ($request->filled('status_id')) { $assets->where('assets.status_id', '=', $request->input('status_id')); @@ -313,7 +307,8 @@ class AssetsController extends Controller // in the allowed_columns array) $column_sort = in_array($sort_override, $allowed_columns) ? $sort_override : 'assets.created_at'; - + $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; + switch ($sort_override) { case 'model': $assets->OrderModels($order); @@ -350,6 +345,10 @@ class AssetsController extends Controller } + // Make sure the offset and limit are actually integers and do not exceed system limits + $offset = ($request->input('offset') > $assets->count()) ? $assets->count() : abs($request->input('offset')); + $limit = app('api_limit_value'); + $total = $assets->count(); $assets = $assets->skip($offset)->take($limit)->get(); diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php index ee3e4b14c..c9aafd2c7 100755 --- a/app/Http/Controllers/ViewAssetsController.php +++ b/app/Http/Controllers/ViewAssetsController.php @@ -82,7 +82,7 @@ class ViewAssetsController extends Controller return view('account/requestable-assets', compact('assets', 'models')); } - public function getRequestItem(Request $request, $itemType, $itemId = null) + public function getRequestItem(Request $request, $itemType, $itemId = null, $cancel_by_admin = false, $requestingUser = null) { $item = null; $fullItemType = 'App\\Models\\'.studly_case($itemType); @@ -119,16 +119,16 @@ class ViewAssetsController extends Controller $settings = Setting::getSettings(); - if ($item_request = $item->isRequestedBy($user)) { - $item->cancelRequest(); - $data['item_quantity'] = $item_request->qty; + if (($item_request = $item->isRequestedBy($user)) || $cancel_by_admin) { + $item->cancelRequest($requestingUser); + $data['item_quantity'] = ($item_request) ? $item_request->qty : 1; $logaction->logaction('request_canceled'); if (($settings->alert_email != '') && ($settings->alerts_enabled == '1') && (! config('app.lock_passwords'))) { $settings->notify(new RequestAssetCancelation($data)); } - return redirect()->route('requestable-assets')->with('success')->with('success', trans('admin/hardware/message.requests.canceled')); + return redirect()->back()->with('success')->with('success', trans('admin/hardware/message.requests.canceled')); } else { $item->request(); if (($settings->alert_email != '') && ($settings->alerts_enabled == '1') && (! config('app.lock_passwords'))) { diff --git a/app/Http/Transformers/AccessoriesTransformer.php b/app/Http/Transformers/AccessoriesTransformer.php index cdc94ebed..709b337c9 100644 --- a/app/Http/Transformers/AccessoriesTransformer.php +++ b/app/Http/Transformers/AccessoriesTransformer.php @@ -32,7 +32,7 @@ class AccessoriesTransformer 'model_number' => ($accessory->model_number) ? e($accessory->model_number) : null, 'category' => ($accessory->category) ? ['id' => $accessory->category->id, 'name'=> e($accessory->category->name)] : null, 'location' => ($accessory->location) ? ['id' => $accessory->location->id, 'name'=> e($accessory->location->name)] : null, - 'notes' => ($accessory->notes) ? e($accessory->notes) : null, + 'notes' => ($accessory->notes) ? Helper::parseEscapedMarkedown($accessory->notes) : null, 'qty' => ($accessory->qty) ? (int) $accessory->qty : null, 'purchase_date' => ($accessory->purchase_date) ? Helper::getFormattedDateObject($accessory->purchase_date, 'date') : null, 'purchase_cost' => Helper::formatCurrencyOutput($accessory->purchase_cost), diff --git a/app/Http/Transformers/ActionlogsTransformer.php b/app/Http/Transformers/ActionlogsTransformer.php index cd2ce586d..ab756a4dd 100644 --- a/app/Http/Transformers/ActionlogsTransformer.php +++ b/app/Http/Transformers/ActionlogsTransformer.php @@ -110,7 +110,7 @@ class ActionlogsTransformer 'type' => e($actionlog->targetType()), ] : null, - 'note' => ($actionlog->note) ? e($actionlog->note): null, + 'note' => ($actionlog->note) ? Helper::parseEscapedMarkedown($actionlog->note): null, 'signature_file' => ($actionlog->accept_signature) ? route('log.signature.view', ['filename' => $actionlog->accept_signature ]) : null, 'log_meta' => ((isset($clean_meta)) && (is_array($clean_meta))) ? $clean_meta: null, 'action_date' => ($actionlog->action_date) ? Helper::getFormattedDateObject($actionlog->action_date, 'datetime'): Helper::getFormattedDateObject($actionlog->created_at, 'datetime'), diff --git a/app/Http/Transformers/AssetMaintenancesTransformer.php b/app/Http/Transformers/AssetMaintenancesTransformer.php index 10b05b33a..433c06a49 100644 --- a/app/Http/Transformers/AssetMaintenancesTransformer.php +++ b/app/Http/Transformers/AssetMaintenancesTransformer.php @@ -49,7 +49,7 @@ class AssetMaintenancesTransformer 'id' => (int) $assetmaintenance->asset->defaultLoc->id, 'name'=> e($assetmaintenance->asset->defaultLoc->name), ] : null, - 'notes' => ($assetmaintenance->notes) ? e($assetmaintenance->notes) : null, + 'notes' => ($assetmaintenance->notes) ? Helper::parseEscapedMarkedown($assetmaintenance->notes) : null, 'supplier' => ($assetmaintenance->supplier) ? ['id' => $assetmaintenance->supplier->id, 'name'=> e($assetmaintenance->supplier->name)] : null, 'cost' => Helper::formatCurrencyOutput($assetmaintenance->cost), 'asset_maintenance_type' => e($assetmaintenance->asset_maintenance_type), diff --git a/app/Http/Transformers/AssetModelsTransformer.php b/app/Http/Transformers/AssetModelsTransformer.php index 5725e5593..a2da6c8b4 100644 --- a/app/Http/Transformers/AssetModelsTransformer.php +++ b/app/Http/Transformers/AssetModelsTransformer.php @@ -63,7 +63,7 @@ class AssetModelsTransformer 'default_fieldset_values' => $default_field_values, 'eol' => ($assetmodel->eol > 0) ? $assetmodel->eol.' months' : 'None', 'requestable' => ($assetmodel->requestable == '1') ? true : false, - 'notes' => e($assetmodel->notes), + 'notes' => Helper::parseEscapedMarkedown($assetmodel->notes), 'created_at' => Helper::getFormattedDateObject($assetmodel->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($assetmodel->updated_at, 'datetime'), 'deleted_at' => Helper::getFormattedDateObject($assetmodel->deleted_at, 'datetime'), diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index 85f5f9294..0ad93b43e 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -58,7 +58,7 @@ class AssetsTransformer 'id' => (int) $asset->supplier->id, 'name'=> e($asset->supplier->name), ] : null, - 'notes' => ($asset->notes) ? e($asset->notes) : null, + 'notes' => ($asset->notes) ? Helper::parseEscapedMarkedown($asset->notes) : null, 'order_number' => ($asset->order_number) ? e($asset->order_number) : null, 'company' => ($asset->company) ? [ 'id' => (int) $asset->company->id, diff --git a/app/Http/Transformers/ComponentsTransformer.php b/app/Http/Transformers/ComponentsTransformer.php index 97677af28..e758a95e3 100644 --- a/app/Http/Transformers/ComponentsTransformer.php +++ b/app/Http/Transformers/ComponentsTransformer.php @@ -46,7 +46,7 @@ class ComponentsTransformer 'id' => (int) $component->company->id, 'name' => e($component->company->name), ] : null, - 'notes' => ($component->notes) ? e($component->notes) : null, + 'notes' => ($component->notes) ? Helper::parseEscapedMarkedown($component->notes) : null, 'created_at' => Helper::getFormattedDateObject($component->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($component->updated_at, 'datetime'), 'user_can_checkout' => ($component->numRemaining() > 0) ? 1 : 0, diff --git a/app/Http/Transformers/ConsumablesTransformer.php b/app/Http/Transformers/ConsumablesTransformer.php index b92f843b7..27e70fcf0 100644 --- a/app/Http/Transformers/ConsumablesTransformer.php +++ b/app/Http/Transformers/ConsumablesTransformer.php @@ -39,7 +39,7 @@ class ConsumablesTransformer 'purchase_cost' => Helper::formatCurrencyOutput($consumable->purchase_cost), 'purchase_date' => Helper::getFormattedDateObject($consumable->purchase_date, 'date'), 'qty' => (int) $consumable->qty, - 'notes' => ($consumable->notes) ? e($consumable->notes) : null, + 'notes' => ($consumable->notes) ? Helper::parseEscapedMarkedown($consumable->notes) : null, 'created_at' => Helper::getFormattedDateObject($consumable->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($consumable->updated_at, 'datetime'), ]; diff --git a/app/Http/Transformers/LicensesTransformer.php b/app/Http/Transformers/LicensesTransformer.php index 8df6b89f1..b5b0d841f 100644 --- a/app/Http/Transformers/LicensesTransformer.php +++ b/app/Http/Transformers/LicensesTransformer.php @@ -34,7 +34,7 @@ class LicensesTransformer 'depreciation' => ($license->depreciation) ? ['id' => (int) $license->depreciation->id,'name'=> e($license->depreciation->name)] : null, 'purchase_cost' => Helper::formatCurrencyOutput($license->purchase_cost), 'purchase_cost_numeric' => $license->purchase_cost, - 'notes' => e($license->notes), + 'notes' => Helper::parseEscapedMarkedown($license->notes), 'expiration_date' => Helper::getFormattedDateObject($license->expiration_date, 'date'), 'seats' => (int) $license->seats, 'free_seats_count' => (int) $license->free_seats_count, diff --git a/app/Http/Transformers/SuppliersTransformer.php b/app/Http/Transformers/SuppliersTransformer.php index e7546bfd1..e81198763 100644 --- a/app/Http/Transformers/SuppliersTransformer.php +++ b/app/Http/Transformers/SuppliersTransformer.php @@ -43,7 +43,7 @@ class SuppliersTransformer 'licenses_count' => (int) $supplier->licenses_count, 'consumables_count' => (int) $supplier->consumables_count, 'components_count' => (int) $supplier->components_count, - 'notes' => ($supplier->notes) ? e($supplier->notes) : null, + 'notes' => ($supplier->notes) ? Helper::parseEscapedMarkedown($supplier->notes) : null, 'created_at' => Helper::getFormattedDateObject($supplier->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($supplier->updated_at, 'datetime'), diff --git a/app/Http/Transformers/UsersTransformer.php b/app/Http/Transformers/UsersTransformer.php index 867a88461..5a45a0012 100644 --- a/app/Http/Transformers/UsersTransformer.php +++ b/app/Http/Transformers/UsersTransformer.php @@ -53,7 +53,7 @@ class UsersTransformer 'id' => (int) $user->userloc->id, 'name'=> e($user->userloc->name), ] : null, - 'notes'=> e($user->notes), + 'notes'=> Helper::parseEscapedMarkedown($user->notes), 'permissions' => $user->decodePermissions(), 'activated' => ($user->activated == '1') ? true : false, 'autoassign_licenses' => ($user->autoassign_licenses == '1') ? true : false, diff --git a/app/Models/Requestable.php b/app/Models/Requestable.php index 3983254e4..bf5c9c427 100644 --- a/app/Models/Requestable.php +++ b/app/Models/Requestable.php @@ -38,8 +38,12 @@ trait Requestable $this->requests()->where('user_id', Auth::id())->delete(); } - public function cancelRequest() + public function cancelRequest($user_id = null) { - $this->requests()->where('user_id', Auth::id())->update(['canceled_at' => \Carbon\Carbon::now()]); + if (!$user_id){ + $user_id = Auth::id(); + } + + $this->requests()->where('user_id', $user_id)->update(['canceled_at' => \Carbon\Carbon::now()]); } } diff --git a/resources/lang/en/general.php b/resources/lang/en/general.php index f515325b1..e41f3261c 100644 --- a/resources/lang/en/general.php +++ b/resources/lang/en/general.php @@ -436,6 +436,7 @@ return [ 'errors_importing' => 'Some Errors occurred while importing: ', 'warning' => 'WARNING: :warning', 'success_redirecting' => '"Success... Redirecting.', + 'cancel_request' => 'Cancel this item request', 'setup_successful_migrations' => 'Your database tables have been created', 'setup_migration_output' => 'Migration output:', 'setup_migration_create_user' => 'Next: Create User', diff --git a/resources/views/hardware/requested.blade.php b/resources/views/hardware/requested.blade.php index 25b2a51e2..da90b3bf2 100644 --- a/resources/views/hardware/requested.blade.php +++ b/resources/views/hardware/requested.blade.php @@ -17,11 +17,6 @@
- {{ Form::open([ - 'method' => 'POST', - 'route' => ['hardware/bulkedit'], - 'class' => 'form-inline', - 'id' => 'bulkForm']) }}
@@ -51,7 +46,7 @@ {{ trans('admin/hardware/form.expected_checkin') }} {{ trans('admin/hardware/table.requesting_user') }} {{ trans('admin/hardware/table.requested_date') }} - {{ trans('general.checkin').'/'.trans('general.checkout') }} + {{ trans('button.actions') }} @@ -103,6 +98,14 @@ @endif {{ App\Helpers\Helper::getFormattedDateObject($request->created_at, 'datetime', false) }} + + {{ Form::open([ + 'method' => 'POST', + 'route' => ['account/request-item', $request->itemType(), $request->requestable->id, true, $request->requestingUser()->id], + ]) }} + + {{ Form::close() }} + @if ($request->itemType() == "asset") @if ($request->requestable->assigned_to=='') diff --git a/routes/web.php b/routes/web.php index 49998f43f..5de6ef902 100644 --- a/routes/web.php +++ b/routes/web.php @@ -281,7 +281,7 @@ Route::group(['prefix' => 'account', 'middleware' => ['auth']], function () { )->name('account/request-asset'); Route::post( - 'request/{itemType}/{itemId}', + 'request/{itemType}/{itemId}/{cancel_by_admin?}/{requestingUser?}', [ViewAssetsController::class, 'getRequestItem'] )->name('account/request-item');