From abad5793064548dc94f9535f4ef507e4298b8815 Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:45:33 -0800 Subject: [PATCH 1/9] Added eol date picker Signed-off-by: snipe --- .../views/partials/forms/edit/eol_date.blade.php | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 resources/views/partials/forms/edit/eol_date.blade.php diff --git a/resources/views/partials/forms/edit/eol_date.blade.php b/resources/views/partials/forms/edit/eol_date.blade.php new file mode 100644 index 000000000..ab3d3c97a --- /dev/null +++ b/resources/views/partials/forms/edit/eol_date.blade.php @@ -0,0 +1,11 @@ + +
+ +
+
+ + +
+ {!! $errors->first('asset_eol_date', '') !!} +
+
From 2f7ca37666c58d80135929791448895f5bdef95f Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:54:24 -0800 Subject: [PATCH 2/9] Migration to normalize eol date for assets Signed-off-by: snipe --- ...21_225350_add_eol_date_on_assets_table.php | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php diff --git a/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php b/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php new file mode 100644 index 000000000..95c3bff35 --- /dev/null +++ b/database/migrations/2023_01_21_225350_add_eol_date_on_assets_table.php @@ -0,0 +1,54 @@ +date('asset_eol_date')->after('purchase_date')->nullable()->default(null); + } + }); + + // Chunk the model query to get the models that do have an EOL date + AssetModel::whereNotNull('eol')->with('assets')->chunk(200, function ($models) { + foreach ($models as $model) { + foreach ($model->assets as $asset) { + + if ($asset->purchase_date!='') { + $asset->asset_eol_date = $asset->present()->eol_date(); + $asset->save(); + } + + } + } + }); + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('assets', function (Blueprint $table) { + if (Schema::hasColumn('assets', 'asset_eol_date')) { + $table->dropColumn('asset_eol_date'); + } + }); + } +} From 8040d08e8c472575526ef1e0341fc6ddabfad231 Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:54:37 -0800 Subject: [PATCH 3/9] Removed formatter from EOL date Signed-off-by: snipe --- resources/views/partials/forms/edit/eol_date.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/partials/forms/edit/eol_date.blade.php b/resources/views/partials/forms/edit/eol_date.blade.php index ab3d3c97a..4e5761016 100644 --- a/resources/views/partials/forms/edit/eol_date.blade.php +++ b/resources/views/partials/forms/edit/eol_date.blade.php @@ -3,7 +3,7 @@
- +
{!! $errors->first('asset_eol_date', '') !!} From 358701759167533ffa310c9f32a700e74b785196 Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:55:19 -0800 Subject: [PATCH 4/9] Updated EOL date in view blade Signed-off-by: snipe --- resources/views/hardware/view.blade.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php index 336283b6b..101bf7170 100755 --- a/resources/views/hardware/view.blade.php +++ b/resources/views/hardware/view.blade.php @@ -672,7 +672,8 @@
- + @endif + @if ($asset->asset_eol_date)
@@ -680,10 +681,10 @@
- @if ($asset->purchase_date) - {{ Helper::getFormattedDateObject($asset->present()->eol_date(), 'date', false) }} + @if ($asset->asset_eol_date) + {{ Helper::getFormattedDateObject($asset->asset_eol_date, 'date', false) }} - - {{ Carbon::parse($asset->present()->eol_date())->diffForHumans(['parts' => 2]) }} + {{ Carbon::parse($asset->asset_eol_date)->diffForHumans(['parts' => 2]) }} @else {{ trans('general.na_no_purchase_date') }} @endif From 4104d7260fb7b2e982c2bc7bb27dd3dcab22e658 Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:55:31 -0800 Subject: [PATCH 5/9] Include new eol date picker blade Signed-off-by: snipe --- resources/views/hardware/edit.blade.php | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/views/hardware/edit.blade.php b/resources/views/hardware/edit.blade.php index 07c04d7f8..f0788bc73 100755 --- a/resources/views/hardware/edit.blade.php +++ b/resources/views/hardware/edit.blade.php @@ -149,6 +149,7 @@
@include ('partials.forms.edit.order_number') @include ('partials.forms.edit.purchase_date') + @include ('partials.forms.edit.eol_date') @include ('partials.forms.edit.supplier-select', ['translated_name' => trans('general.supplier'), 'fieldname' => 'supplier_id']) @php From cad76f671ae278a13b51b7aab7d896f60c6491ee Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:55:42 -0800 Subject: [PATCH 6/9] Added asset_eol_date to blade Signed-off-by: snipe --- app/Presenters/AssetPresenter.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/Presenters/AssetPresenter.php b/app/Presenters/AssetPresenter.php index ccc4a4cf1..4be0f5601 100644 --- a/app/Presenters/AssetPresenter.php +++ b/app/Presenters/AssetPresenter.php @@ -163,9 +163,16 @@ class AssetPresenter extends Presenter ], [ 'field' => 'eol', 'searchable' => false, - 'sortable' => false, + 'sortable' => true, 'visible' => false, 'title' => trans('general.eol'), + ], + [ + 'field' => 'asset_eol_date', + 'searchable' => true, + 'sortable' => true, + 'visible' => false, + 'title' => trans('admin/hardware/form.eol_date'), 'formatter' => 'dateDisplayFormatter', ], [ 'field' => 'warranty_months', From febfcd480317bedfc9c89b733a6bd175810ba027 Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:56:19 -0800 Subject: [PATCH 7/9] Updated model with new field Signed-off-by: snipe --- app/Models/Asset.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/Models/Asset.php b/app/Models/Asset.php index f8e0cab31..102f48fea 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -116,6 +116,7 @@ class Asset extends Depreciable 'next_audit_date' => 'date|nullable', 'last_audit_date' => 'date|nullable', 'supplier_id' => 'exists:suppliers,id|nullable', + 'asset_eol_date' => 'date|max:10|min:10|nullable', ]; /** @@ -145,6 +146,7 @@ class Asset extends Depreciable 'last_checkout', 'expected_checkin', 'byod', + 'asset_eol_date', ]; use Searchable; @@ -167,6 +169,7 @@ class Asset extends Depreciable 'expected_checkin', 'next_audit_date', 'last_audit_date', + 'asset_eol_date', ]; /** @@ -180,7 +183,7 @@ class Asset extends Depreciable 'company' => ['name'], 'defaultLoc' => ['name'], 'location' => ['name'], - 'model' => ['name', 'model_number'], + 'model' => ['name', 'model_number', 'eol'], 'model.category' => ['name'], 'model.manufacturer' => ['name'], ]; From 5f9af7d509a5dd2df0bfc938e49fe1972ac15ee9 Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:56:28 -0800 Subject: [PATCH 8/9] Updated API response Signed-off-by: snipe --- app/Http/Transformers/AssetsTransformer.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index a36d0ab89..4b1616026 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -38,7 +38,8 @@ class AssetsTransformer 'byod' => ($asset->byod ? true : false), 'model_number' => (($asset->model) && ($asset->model->model_number)) ? e($asset->model->model_number) : null, - 'eol' => ($asset->purchase_date != '') ? Helper::getFormattedDateObject($asset->present()->eol_date(), 'date') : null, + 'eol' => ($asset->model->eol != '') ? $asset->model->eol : null, + 'asset_eol_date' => ($asset->asset_eol_date != '') ? Helper::getFormattedDateObject($asset->asset_eol_date, 'date') : null, 'status_label' => ($asset->assetstatus) ? [ 'id' => (int) $asset->assetstatus->id, 'name'=> e($asset->assetstatus->name), From 41537a2449fb8f1a9cd6aa9a60658ff2e445c152 Mon Sep 17 00:00:00 2001 From: snipe Date: Sun, 22 Jan 2023 00:56:44 -0800 Subject: [PATCH 9/9] Added field to the API controller endpoints Signed-off-by: snipe --- app/Http/Controllers/Api/AssetsController.php | 7 +++++-- app/Http/Controllers/Assets/AssetsController.php | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index a843aa09d..213c6617a 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -101,6 +101,7 @@ class AssetsController extends Controller 'checkin_counter', 'requests_counter', 'byod', + 'asset_eol_date', ]; $filter = []; @@ -128,7 +129,6 @@ class AssetsController extends Controller // They are also used by the individual searches on detail pages like // locations, etc. - // Search custom fields by column name foreach ($all_custom_fields as $field) { if ($request->filled($field->db_column_name())) { @@ -136,7 +136,6 @@ class AssetsController extends Controller } } - if ($request->filled('status_id')) { $assets->where('assets.status_id', '=', $request->input('status_id')); } @@ -173,6 +172,10 @@ class AssetsController extends Controller $assets->where('assets.supplier_id', '=', $request->input('supplier_id')); } + if ($request->filled('asset_eol_date')) { + $assets->where('assets.asset_eol_date', '=', $request->input('asset_eol_date')); + } + if (($request->filled('assigned_to')) && ($request->filled('assigned_type'))) { $assets->where('assets.assigned_to', '=', $request->input('assigned_to')) ->where('assets.assigned_type', '=', $request->input('assigned_type')); diff --git a/app/Http/Controllers/Assets/AssetsController.php b/app/Http/Controllers/Assets/AssetsController.php index 1c7080bd4..9b51b7f26 100755 --- a/app/Http/Controllers/Assets/AssetsController.php +++ b/app/Http/Controllers/Assets/AssetsController.php @@ -142,6 +142,7 @@ class AssetsController extends Controller $asset->warranty_months = request('warranty_months', null); $asset->purchase_cost = Helper::ParseCurrency($request->get('purchase_cost')); $asset->purchase_date = request('purchase_date', null); + $asset->asset_eol_date = request('asset_eol_date', null); $asset->assigned_to = request('assigned_to', null); $asset->supplier_id = request('supplier_id', null); $asset->requestable = request('requestable', 0); @@ -312,6 +313,8 @@ class AssetsController extends Controller $asset->status_id = $request->input('status_id', null); $asset->warranty_months = $request->input('warranty_months', null); $asset->purchase_cost = Helper::ParseCurrency($request->input('purchase_cost', null)); + $asset->asset_eol_date = request('asset_eol_date', null); + $asset->purchase_date = $request->input('purchase_date', null); $asset->supplier_id = $request->input('supplier_id', null); $asset->expected_checkin = $request->input('expected_checkin', null);