From 7e0c33d53501084187efa1bfc4f0a5d5ea7bd537 Mon Sep 17 00:00:00 2001 From: snipe Date: Fri, 27 Oct 2017 20:35:13 -0700 Subject: [PATCH 01/18] Speed up user factory by only bcrypting once --- database/factories/UserFactory.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 37e37219f..eb79b53eb 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -2,19 +2,17 @@ use App\Models\Company; +$password = bcrypt('password'); - -$factory->define(App\Models\User::class, function (Faker\Generator $faker) { +$factory->define(App\Models\User::class, function (Faker\Generator $faker) use ($password) { return [ 'first_name' => $faker->firstName, 'last_name' => $faker->lastName, 'username' => $faker->username, - 'password' => bcrypt('password'), + 'password' => $password, 'permissions' => '{"user":"0"}', 'email' => $faker->safeEmail, - 'company_id' => function () { - return factory(App\Models\Company::class)->create()->id; - }, + 'company_id' => rand(1,4), 'locale' => $faker->locale, 'employee_num' => $faker->numberBetween(3500, 35050), 'jobtitle' => $faker->jobTitle, From e8b4bdf6f40370555b2b58e65490bbca46757a3b Mon Sep 17 00:00:00 2001 From: snipe Date: Fri, 27 Oct 2017 20:35:34 -0700 Subject: [PATCH 02/18] Added location_id to assets table to denorm --- ...17_10_27_180947_denorm_asset_locations.php | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 database/migrations/2017_10_27_180947_denorm_asset_locations.php diff --git a/database/migrations/2017_10_27_180947_denorm_asset_locations.php b/database/migrations/2017_10_27_180947_denorm_asset_locations.php new file mode 100644 index 000000000..b6ec3df8e --- /dev/null +++ b/database/migrations/2017_10_27_180947_denorm_asset_locations.php @@ -0,0 +1,35 @@ +integer('location_id')->nullable()->default(null); + }); + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('assets', function (Blueprint $table) { + $table->dropColumn('location_id'); + }); + } +} From cfd1925625f0e2bf407b8ec1e5c74d3aebc957b0 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 01:00:26 -0700 Subject: [PATCH 03/18] Nicer display of notifications on checkout --- resources/views/hardware/checkout.blade.php | 49 +++++++++++++-------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/resources/views/hardware/checkout.blade.php b/resources/views/hardware/checkout.blade.php index c328f1622..49909003a 100755 --- a/resources/views/hardware/checkout.blade.php +++ b/resources/views/hardware/checkout.blade.php @@ -46,9 +46,17 @@ @include ('partials.forms.edit.user-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_user']) + @if ($asset->requireAcceptance()) +
- - @if (!$asset->requireAcceptance()) +
+

+ Because this asset category requires acceptance, + it cannot be checked out to another asset or to a location. +

+
+
+ @else @include ('partials.forms.edit.asset-select', ['translated_name' => trans('admin/hardware/form.checkout_to'), 'fieldname' => 'assigned_asset']) @@ -56,6 +64,7 @@ @endif +
{{ Form::label('name', trans('admin/hardware/form.checkout_date'), array('class' => 'col-md-3 control-label')) }} @@ -89,24 +98,26 @@
- @if ($asset->requireAcceptance()) -
-
-

- - {{ trans('admin/categories/general.required_acceptance') }} -

-
-
- @endif + @if ($asset->requireAcceptance() || $asset->getEula()) +
+
+
+ + @if ($asset->requireAcceptance()) + + {{ trans('admin/categories/general.required_acceptance') }} +
+ @endif + + @if ($asset->getEula()) + + {{ trans('admin/categories/general.required_eula') }} + @endif +
+
+
+ @endif - @if ($asset->getEula()) -
-
-

{{ trans('admin/categories/general.required_eula') }}

-
-
- @endif + @include ('partials.forms.edit.location-select', ['translated_name' => trans('general.location'), 'fieldname' => 'location_id']) +
{{ Form::label('checkin_at', trans('admin/hardware/form.checkin_date'), array('class' => 'col-md-3 control-label')) }} From f687c8db24bd25699342a59fd93395c6ad3462c3 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 02:11:10 -0700 Subject: [PATCH 11/18] Fix custom field seeder to drop old columns --- database/seeds/CustomFieldSeeder.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/database/seeds/CustomFieldSeeder.php b/database/seeds/CustomFieldSeeder.php index f497b9406..f6ec934a3 100644 --- a/database/seeds/CustomFieldSeeder.php +++ b/database/seeds/CustomFieldSeeder.php @@ -1,13 +1,27 @@ getColumnListing('assets'); + + + foreach ($columns as $column) { + if(strpos($column, '_snipeit_') !== FALSE) { + + Schema::table('assets', function (Blueprint $table) use ($column) { + $table->dropColumn($column); + }); + } + } CustomField::truncate(); + factory(CustomField::class, 4)->create(); } } From 277e49468b8d78a08da9dbbecb57e124dbb56de3 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 02:31:13 -0700 Subject: [PATCH 12/18] Added deleted at to API --- app/Http/Transformers/AssetsTransformer.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index 304d336af..50be677c1 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -68,6 +68,7 @@ class AssetsTransformer 'warranty_expires' => ($asset->warranty_months > 0) ? Helper::getFormattedDateObject($asset->warranty_expires, 'date') : null, 'created_at' => Helper::getFormattedDateObject($asset->created_at, 'datetime'), 'updated_at' => Helper::getFormattedDateObject($asset->updated_at, 'datetime'), + 'deleted_at' => Helper::getFormattedDateObject($asset->deleted_at, 'datetime'), 'purchase_date' => Helper::getFormattedDateObject($asset->purchase_date, 'date'), 'last_checkout' => Helper::getFormattedDateObject($asset->last_checkout, 'datetime'), 'expected_checkin' => Helper::getFormattedDateObject($asset->expected_checkin, 'date'), From df430a2263c9631a7bebdf82afe05de6d40f16d7 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 02:31:36 -0700 Subject: [PATCH 13/18] =?UTF-8?q?Removed=20assignedTo=20eager=20load=20for?= =?UTF-8?q?=20now=20-=20it=E2=80=99s=20not=20working?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Api/AssetsController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 822a0c58d..2e240fff4 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -85,7 +85,7 @@ class AssetsController extends Controller } $assets = Company::scopeCompanyables(Asset::select('assets.*'))->with( - 'location', 'assetstatus', 'assetlog', 'company', 'defaultLoc','assignedTo', + 'location', 'assetstatus', 'assetlog', 'company', 'defaultLoc', 'model.category', 'model.manufacturer', 'model.fieldset','supplier'); From 3064b3f80e9c75355fed953cab91da72c8291603 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 02:31:54 -0700 Subject: [PATCH 14/18] Updated availableForCheckout() method to be clearer --- app/Models/Asset.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/app/Models/Asset.php b/app/Models/Asset.php index 798d4cd4c..219f1ca0a 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -127,11 +127,10 @@ class Asset extends Depreciable public function availableForCheckout() { - return ( - empty($this->assigned_to) && - $this->assetstatus->deployable == 1 && - empty($this->deleted_at) - ); + if ((empty($this->assigned_to)) && (empty($this->deleted_at)) && ($this->assetstatus->deployable == 1)) { + return true; + } + return false; } /** From 0a114c7daf1d8dd10b58e4aad54bed725d40223c Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 02:32:05 -0700 Subject: [PATCH 15/18] Log instead of echoing --- .../2017_10_27_192423_migrate_denormed_asset_locations.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/2017_10_27_192423_migrate_denormed_asset_locations.php b/database/migrations/2017_10_27_192423_migrate_denormed_asset_locations.php index dc6bee559..ab047319f 100644 --- a/database/migrations/2017_10_27_192423_migrate_denormed_asset_locations.php +++ b/database/migrations/2017_10_27_192423_migrate_denormed_asset_locations.php @@ -19,7 +19,7 @@ class MigrateDenormedAssetLocations extends Migration // Unassigned $rtd_assets = Asset::whereNull('assigned_to')->with('defaultLoc')->get(); - echo "\nUnasigned assets: "; + \Log::info('Unasigned assets: '); foreach ($rtd_assets as $rtd_asset) { \Log::info('Setting asset '.$rtd_asset->id.' to location: '.$rtd_asset->rtd_location_id." Because asset's default location is: ".$rtd_asset->rtd_location_id); $rtd_asset->location_id=$rtd_asset->rtd_location_id; From 3991f79115a41d34ba8a403ce5bb972ca039fd12 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 02:37:59 -0700 Subject: [PATCH 16/18] Use new location method for hardware view --- app/Http/Controllers/AssetsController.php | 4 ++-- resources/views/hardware/view.blade.php | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/AssetsController.php b/app/Http/Controllers/AssetsController.php index ed5650201..4af0d0cfc 100755 --- a/app/Http/Controllers/AssetsController.php +++ b/app/Http/Controllers/AssetsController.php @@ -594,8 +594,8 @@ class AssetsController extends Controller if (isset($asset)) { - if (!is_null($asset->assetloc)) { - $use_currency = $asset->assetloc->currency; + if ($asset->location) { + $use_currency = $asset->location->currency; } else { if ($settings->default_currency!='') { $use_currency = $settings->default_currency; diff --git a/resources/views/hardware/view.blade.php b/resources/views/hardware/view.blade.php index 6ae1746fb..9e40dc1c8 100755 --- a/resources/views/hardware/view.blade.php +++ b/resources/views/hardware/view.blade.php @@ -224,10 +224,10 @@ {{ trans('admin/hardware/form.cost') }} - @if (($asset->id) && ($asset->userloc)) - {{ $asset->userloc->currency }} - @elseif (($asset->id) && ($asset->assetloc)) - {{ $asset->assetloc->currency }} + @if (($asset->id) && ($asset->location)) + {{ $asset->location->currency }} + @elseif (($asset->id) && ($asset->location)) + {{ $asset->location->currency }} @else {{ $snipeSettings->default_currency }} @endif @@ -335,16 +335,16 @@ {!! nl2br(e($asset->notes)) !!} - @if ($asset->assetloc) + @if ($asset->location) {{ trans('general.location') }} @can('superuser') - - {{ $asset->assetloc->name }} + + {{ $asset->location->name }} @else - {{ $asset->assetloc->name }} + {{ $asset->location->name }} @endcan From 890012f6c49493361283ca35c4e1d82c30086bac Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 02:58:38 -0700 Subject: [PATCH 17/18] Update references to assetloc to location --- .../Controllers/AssetMaintenancesController.php | 4 ++-- app/Http/Controllers/AssetsController.php | 2 +- app/Http/Controllers/ReportsController.php | 16 ++++++++-------- app/Http/Controllers/ViewAssetsController.php | 2 +- app/Models/CheckoutRequest.php | 6 ------ resources/views/hardware/qr-view.blade.php | 12 ++++++------ resources/views/reports/depreciation.blade.php | 16 ++++++++-------- tests/api/ApiAssetsCest.php | 12 ++++++------ 8 files changed, 32 insertions(+), 38 deletions(-) diff --git a/app/Http/Controllers/AssetMaintenancesController.php b/app/Http/Controllers/AssetMaintenancesController.php index 8ac153955..f7041f38e 100644 --- a/app/Http/Controllers/AssetMaintenancesController.php +++ b/app/Http/Controllers/AssetMaintenancesController.php @@ -115,8 +115,8 @@ class AssetMaintenancesController extends Controller ); } - if (($maintenance->cost) && (isset($maintenance->asset)) && ($maintenance->asset->assetloc) && ($maintenance->asset->assetloc->currency!='')) { - $maintenance_cost = $maintenance->asset->assetloc->currency.$maintenance->cost; + if (($maintenance->cost) && (isset($maintenance->asset)) && ($maintenance->asset->location) && ($maintenance->asset->location->currency!='')) { + $maintenance_cost = $maintenance->asset->location->currency.$maintenance->cost; } else { $maintenance_cost = $settings->default_currency.$maintenance->cost; } diff --git a/app/Http/Controllers/AssetsController.php b/app/Http/Controllers/AssetsController.php index 4af0d0cfc..a58291981 100755 --- a/app/Http/Controllers/AssetsController.php +++ b/app/Http/Controllers/AssetsController.php @@ -1022,7 +1022,7 @@ class AssetsController extends Controller ->with('count', $count) ->with('settings', Setting::getSettings()); } elseif ($request->input('bulk_actions')=='delete') { - $assets = Asset::with('assignedTo', 'assetloc')->find($asset_ids); + $assets = Asset::with('assignedTo', 'location')->find($asset_ids); $assets->each(function ($asset) { $this->authorize('delete', $asset); }); diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index c3740c8c4..d9d2c1aa4 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -114,7 +114,7 @@ class ReportsController extends Controller // Open output stream $handle = fopen('php://output', 'w'); - $assets = Asset::with('assignedTo', 'assetLoc','defaultLoc','assignedTo','model','supplier','assetstatus','model.manufacturer'); + $assets = Asset::with('assignedTo', 'location','defaultLoc','assignedTo','model','supplier','assetstatus','model.manufacturer'); // This is used by the sidenav, mostly switch ($request->input('status')) { @@ -182,7 +182,7 @@ class ReportsController extends Controller ($asset->supplier) ? e($asset->supplier->name) : '', ($asset->assignedTo) ? e($asset->assignedTo->present()->name()) : '', ($asset->last_checkout!='') ? e($asset->last_checkout) : '', - ($asset->assetLoc) ? e($asset->assetLoc->present()->name()) : '', + ($asset->location) ? e($asset->location->present()->name()) : '', ($asset->notes) ? e($asset->notes) : '', ]; foreach ($customfields as $field) { @@ -215,7 +215,7 @@ class ReportsController extends Controller { // Grab all the assets - $assets = Asset::with( 'assignedTo', 'assetstatus', 'defaultLoc', 'assetloc', 'assetlog', 'company', 'model.category', 'model.depreciation') + $assets = Asset::with( 'assignedTo', 'assetstatus', 'defaultLoc', 'location', 'assetlog', 'company', 'model.category', 'model.depreciation') ->orderBy('created_at', 'DESC')->get(); return view('reports/depreciation', compact('assets')); @@ -270,7 +270,7 @@ class ReportsController extends Controller $row[] = ''; // Empty string if unassigned } - if (( $asset->assigned_to > 0 ) && ( $location = $asset->assetLoc )) { + if (( $asset->assigned_to > 0 ) && ( $location = $asset->location )) { if ($location->city) { $row[] = e($location->city) . ', ' . e($location->state); } elseif ($location->name) { @@ -282,8 +282,8 @@ class ReportsController extends Controller $row[] = ''; // Empty string if location is not set } - if ($asset->assetloc) { - $currency = e($asset->assetloc->currency); + if ($asset->location) { + $currency = e($asset->location->currency); } else { $currency = e(Setting::first()->default_currency); } @@ -562,8 +562,8 @@ class ReportsController extends Controller } if (e(Input::get('location')) == '1') { - if($asset->assetLoc) { - $show_loc = $asset->assetLoc->present()->name(); + if($asset->location) { + $show_loc = $asset->location->present()->name(); } else { $show_loc = 'Default location '.$asset->rtd_location_id.' is invalid'; } diff --git a/app/Http/Controllers/ViewAssetsController.php b/app/Http/Controllers/ViewAssetsController.php index 5a7ac1eb9..d913c216c 100755 --- a/app/Http/Controllers/ViewAssetsController.php +++ b/app/Http/Controllers/ViewAssetsController.php @@ -68,7 +68,7 @@ class ViewAssetsController extends Controller public function getRequestableIndex() { - $assets = Asset::with('model', 'defaultLoc', 'assetloc', 'assignedTo', 'requests')->Hardware()->RequestableAssets()->get(); + $assets = Asset::with('model', 'defaultLoc', 'location', 'assignedTo', 'requests')->Hardware()->RequestableAssets()->get(); $models = AssetModel::with('category', 'requests', 'assets')->RequestableModels()->get(); return view('account/requestable-assets', compact('user', 'assets', 'models')); diff --git a/app/Models/CheckoutRequest.php b/app/Models/CheckoutRequest.php index 39d046a9f..668f32640 100644 --- a/app/Models/CheckoutRequest.php +++ b/app/Models/CheckoutRequest.php @@ -37,12 +37,6 @@ class CheckoutRequest extends Model public function location() { - if ($this->itemType() == "asset") { - $asset = $this->itemRequested(); - if ($asset->assignedTo) { - return $asset->assetloc; - } - } return $this->itemRequested()->location; } diff --git a/resources/views/hardware/qr-view.blade.php b/resources/views/hardware/qr-view.blade.php index c2f52df1b..b06e1aa36 100644 --- a/resources/views/hardware/qr-view.blade.php +++ b/resources/views/hardware/qr-view.blade.php @@ -345,15 +345,15 @@ {{ $asset->assignedTo->present()->nameUrl() }} - @if (isset($asset->assetloc->address)) + @if (isset($asset->location->address))
  • - {{ $asset->assetloc->address }} - @if (isset($asset->assetloc->address2)) - {{ $asset->assetloc->address2 }} + {{ $asset->location->address }} + @if (isset($asset->location->address2)) + {{ $asset->location->address2 }} @endif
  • - @if (isset($asset->assetloc->city)) -
  • {{ $asset->assetloc->city }}, {{ $asset->assetloc->state }} {{ $asset->assetloc->zip }}
  • + @if (isset($asset->location->city)) +
  • {{ $asset->location->city }}, {{ $asset->location->state }} {{ $asset->location->zip }}
  • @endif @endif diff --git a/resources/views/reports/depreciation.blade.php b/resources/views/reports/depreciation.blade.php index d4e1ca62c..383c6ddd5 100644 --- a/resources/views/reports/depreciation.blade.php +++ b/resources/views/reports/depreciation.blade.php @@ -83,8 +83,8 @@ @endif - @if ($asset->assetloc) - {{ $asset->assetloc->name }} + @if ($asset->location) + {{ $asset->location->name }} @elseif ($asset->defaultloc) {{ $asset->defaultloc->name }} @endif @@ -98,16 +98,16 @@ @if ($asset->purchase_cost > 0) - @if ($asset->assetloc ) - {{ $asset->assetloc->currency }} + @if ($asset->location ) + {{ $asset->location->currency }} @else {{ $snipeSettings->default_currency }} @endif {{ \App\Helpers\Helper::formatCurrencyOutput($asset->purchase_cost) }} - @if ($asset->assetloc ) - {{ $asset->assetloc->currency }} + @if ($asset->location ) + {{ $asset->location->currency }} @else {{ $snipeSettings->default_currency }} @endif @@ -115,8 +115,8 @@ {{ \App\Helpers\Helper::formatCurrencyOutput($asset->getDepreciatedValue()) }} - @if ($asset->assetloc) - {{ $asset->assetloc->currency }} + @if ($asset->location) + {{ $asset->location->currency }} @else {{ $snipeSettings->default_currency }} @endif diff --git a/tests/api/ApiAssetsCest.php b/tests/api/ApiAssetsCest.php index e5afde3a5..132d16b1f 100644 --- a/tests/api/ApiAssetsCest.php +++ b/tests/api/ApiAssetsCest.php @@ -66,9 +66,9 @@ class ApiAssetsCest 'id' => (int) $asset->company->id, 'name'=> e($asset->company->name) ] : null, - 'location' => ($asset->assetLoc) ? [ - 'id' => (int) $asset->assetLoc->id, - 'name'=> e($asset->assetLoc->name) + 'location' => ($asset->location) ? [ + 'id' => (int) $asset->location->id, + 'name'=> e($asset->location->name) ] : null, 'rtd_location' => ($asset->defaultLoc) ? [ 'id' => (int) $asset->defaultLoc->id, @@ -223,9 +223,9 @@ class ApiAssetsCest 'id' => (int) $temp_asset->company->id, 'name'=> e($temp_asset->company->name) ] : null, - 'location' => ($temp_asset->assetLoc) ? [ - 'id' => (int) $temp_asset->assetLoc->id, - 'name'=> e($temp_asset->assetLoc->name) + 'location' => ($temp_asset->location) ? [ + 'id' => (int) $temp_asset->location->id, + 'name'=> e($temp_asset->location->name) ] : null, 'rtd_location' => ($temp_asset->defaultLoc) ? [ 'id' => (int) $temp_asset->defaultLoc->id, From 5278dac2b0de4948634b51ae57c776d2f7978408 Mon Sep 17 00:00:00 2001 From: snipe Date: Sat, 28 Oct 2017 03:50:02 -0700 Subject: [PATCH 18/18] Eager loading assignedTo - I have no idea why this works --- app/Http/Controllers/Api/AssetsController.php | 2 +- app/Http/Transformers/AssetsTransformer.php | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 2e240fff4..822a0c58d 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -85,7 +85,7 @@ class AssetsController extends Controller } $assets = Company::scopeCompanyables(Asset::select('assets.*'))->with( - 'location', 'assetstatus', 'assetlog', 'company', 'defaultLoc', + 'location', 'assetstatus', 'assetlog', 'company', 'defaultLoc','assignedTo', 'model.category', 'model.manufacturer', 'model.fieldset','supplier'); diff --git a/app/Http/Transformers/AssetsTransformer.php b/app/Http/Transformers/AssetsTransformer.php index 50be677c1..04e21df56 100644 --- a/app/Http/Transformers/AssetsTransformer.php +++ b/app/Http/Transformers/AssetsTransformer.php @@ -130,19 +130,19 @@ class AssetsTransformer public function transformAssignedTo($asset) { if ($asset->checkedOutToUser()) { - return $asset->assignedTo ? [ - 'id' => (int) $asset->assignedTo->id, - 'username' => e($asset->assignedTo->username), - 'name' => e($asset->assignedTo->getFullNameAttribute()), - 'first_name'=> e($asset->assignedTo->first_name), - 'last_name'=> e($asset->assignedTo->last_name), - 'employee_number' => e($asset->assignedTo->employee_num), + return $asset->assigned ? [ + 'id' => (int) $asset->assigned->id, + 'username' => e($asset->assigned->username), + 'name' => e($asset->assigned->getFullNameAttribute()), + 'first_name'=> e($asset->assigned->first_name), + 'last_name'=> e($asset->assigned->last_name), + 'employee_number' => e($asset->assigned->employee_num), 'type' => 'user' ] : null; } - return $asset->assignedTo ? [ - 'id' => $asset->assignedTo->id, - 'name' => $asset->assignedTo->display_name, + return $asset->assigned ? [ + 'id' => $asset->assigned->id, + 'name' => $asset->assigned->display_name, 'type' => $asset->assignedType() ] : null; }