From 612f23f6e0a77334a3f70ad2d2f01354e0a5fde3 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 12 Dec 2017 04:59:28 -0800 Subject: [PATCH] Added #2893 - track changes on asset edits --- .../Transformers/ActionlogsTransformer.php | 1 + app/Observers/AssetObserver.php | 16 ++++++++-- .../2017_12_12_033618_add_actionlog_meta.php | 32 +++++++++++++++++++ resources/views/hardware/view.blade.php | 14 +++++--- .../views/partials/bootstrap-table.blade.php | 13 ++++++++ resources/views/reports/activity.blade.php | 1 + 6 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 database/migrations/2017_12_12_033618_add_actionlog_meta.php diff --git a/app/Http/Transformers/ActionlogsTransformer.php b/app/Http/Transformers/ActionlogsTransformer.php index ea7b615617..3bb9142083 100644 --- a/app/Http/Transformers/ActionlogsTransformer.php +++ b/app/Http/Transformers/ActionlogsTransformer.php @@ -54,6 +54,7 @@ class ActionlogsTransformer 'note' => ($actionlog->note) ? e($actionlog->note): null, 'signature_file' => ($actionlog->accept_signature) ? route('log.signature.view', ['filename' => $actionlog->accept_signature ]) : null, + 'log_meta' => ($actionlog->log_meta) ? json_decode($actionlog->log_meta): null, ]; diff --git a/app/Observers/AssetObserver.php b/app/Observers/AssetObserver.php index 6e2db974b0..7cac06ed29 100644 --- a/app/Observers/AssetObserver.php +++ b/app/Observers/AssetObserver.php @@ -22,22 +22,32 @@ class AssetObserver // (Those other actions already create log entries.) if (($asset->getAttributes()['assigned_to'] == $asset->getOriginal()['assigned_to']) && ($asset->getAttributes()['next_audit_date'] == $asset->getOriginal()['next_audit_date']) - && ($asset->getAttributes()['last_checkout'] == $asset->getOriginal()['last_checkout']) - && ($asset->getAttributes()['status_id'] == $asset->getOriginal()['status_id'])) + && ($asset->getAttributes()['last_checkout'] == $asset->getOriginal()['last_checkout'])) { + $changed = []; + + foreach ($asset->getOriginal() as $key => $value) { + if ($asset->getOriginal()[$key] != $asset->getAttributes()[$key]) { + $changed[$key]['old'] = $asset->getOriginal()[$key]; + $changed[$key]['new'] = $asset->getAttributes()[$key]; + } + } + + $logAction = new Actionlog(); $logAction->item_type = Asset::class; $logAction->item_id = $asset->id; $logAction->created_at = date("Y-m-d H:i:s"); $logAction->user_id = Auth::id(); + $logAction->log_meta = json_encode($changed); $logAction->logaction('update'); } else { + \Log::debug('Something else happened'); \Log::debug($asset->getOriginal()['assigned_to'].' == '.$asset->getAttributes()['assigned_to']); \Log::debug($asset->getOriginal()['next_audit_date'].' == '.$asset->getAttributes()['next_audit_date']); \Log::debug($asset->getOriginal()['last_checkout'].' == '.$asset->getAttributes()['last_checkout']); - \Log::debug($asset->getOriginal()['status_id'].' == '.$asset->getAttributes()['status_id']); } } diff --git a/database/migrations/2017_12_12_033618_add_actionlog_meta.php b/database/migrations/2017_12_12_033618_add_actionlog_meta.php new file mode 100644 index 0000000000..a9a662fa1a --- /dev/null +++ b/database/migrations/2017_12_12_033618_add_actionlog_meta.php @@ -0,0 +1,32 @@ +text('log_meta')->nullable()->default(null); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('action_logs', function (Blueprint $table) { + $table->dropColumn('log_meta'); + }); + } +} diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php index b222bb2555..8382a28bef 100755 --- a/resources/views/hardware/view.blade.php +++ b/resources/views/hardware/view.blade.php @@ -619,24 +619,28 @@ class="table table-striped snipe-table" name="assetHistory" id="table" + class="table table-striped snipe-table" data-sort-order="desc" - data-height="400" + data-show-columns="true" + data-cookie-id-table="asset-history" data-url="{{ route('api.activity.index', ['item_id' => $asset->id, 'item_type' => 'asset']) }}"> {{ trans('general.date') }} - {{ trans('general.admin') }} - {{ trans('general.action') }} + {{ trans('general.admin') }} + {{ trans('general.action') }} {{ trans('general.item') }} {{ trans('general.target') }} {{ trans('general.notes') }} @if ($snipeSettings->require_accept_signature=='1') - {{ trans('general.signature') }} + {{ trans('general.signature') }} @endif + Changed + @@ -676,7 +680,7 @@ {{ trans('general.notes') }} - {{ trans('general.file_name') }} + {{ trans('general.file_name') }} diff --git a/resources/views/partials/bootstrap-table.blade.php b/resources/views/partials/bootstrap-table.blade.php index 1f78566ad1..d049a5c233 100644 --- a/resources/views/partials/bootstrap-table.blade.php +++ b/resources/views/partials/bootstrap-table.blade.php @@ -395,6 +395,19 @@ } } + + + function changeLogFormatter(value) { + var result = ''; + for (var index in value) { + result += index + ': ' + value[index].old + ' ' + value[index].new + '
' + } + + return result; + + } + + function deployedLocationFormatter(row, value) { if ((row) && (row!=undefined)) { return ' ' + row.name + ''; diff --git a/resources/views/reports/activity.blade.php b/resources/views/reports/activity.blade.php index 755266d017..4fba5715de 100644 --- a/resources/views/reports/activity.blade.php +++ b/resources/views/reports/activity.blade.php @@ -32,6 +32,7 @@ {{ trans('general.item') }} To {{ trans('general.notes') }} + Changed