From 7077faaf4ac42619e6e487e831e88e2cc1f5da7a Mon Sep 17 00:00:00 2001 From: Godfrey M Date: Tue, 23 Sep 2025 11:08:37 -0700 Subject: [PATCH] updated the postassetAcceptanceReport query and rows --- app/Http/Controllers/ReportsController.php | 57 ++++++++++++++++------ app/Models/Checkoutable.php | 6 +++ 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index 946e810b8a..d36944e973 100644 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -1220,22 +1220,44 @@ class ReportsController extends Controller * Get all assets with pending checkout acceptances */ if($showDeleted) { - $acceptances = CheckoutAcceptance::pending()->where('checkoutable_type', 'App\Models\Asset')->withTrashed()->with(['assignedTo', 'checkoutable.assignedTo', 'checkoutable.model'])->get(); + $acceptances = CheckoutAcceptance::pending() + ->with([ + 'checkoutable' => function (MorphTo $acceptance) { + $acceptance->morphWith([ + Asset::class => ['model.category', 'assignedTo', 'company'], + Accessory::class => ['category','checkouts', 'company'], + LicenseSeat::class => ['user', 'license'], + Component::class => ['assignedTo', 'company'], + ]); + }, + 'assignedTo' => function($acceptance){ + $acceptance->withTrashed(); + } + ])->orderByDesc('checkout_acceptances.created_at'); } else { - $acceptances = CheckoutAcceptance::pending()->where('checkoutable_type', 'App\Models\Asset')->with(['assignedTo', 'checkoutable.assignedTo', 'checkoutable.model'])->get(); + $acceptances = CheckoutAcceptance::pending() + ->with([ + 'checkoutable' => function (MorphTo $acceptance) { + $acceptance->morphWith([ + Asset::class => ['model.category', 'assignedTo', 'company'], + Accessory::class => ['category','checkouts', 'company'], + LicenseSeat::class => ['user', 'license'], + Component::class => ['assignedTo', 'company'], + ]); + }, + 'assignedTo' => function($acceptances){ + } + ])->orderByDesc('checkout_acceptances.created_at'); } - $assetsForReport = $acceptances - ->filter(function($acceptance) { - return $acceptance->checkoutable_type == 'App\Models\Asset'; - }) - ->map(function($acceptance) { - return ['assetItem' => $acceptance->checkoutable, 'acceptance' => $acceptance]; - }); + $itemsForReport = $acceptances->get()->map(fn ($unaccepted) => Checkoutable::fromAcceptance($unaccepted)); $rows = []; $header = [ + trans('general.date'), + trans('general.type'), + trans('admin/companies/table.title'), trans('general.category'), trans('admin/hardware/form.model'), trans('admin/hardware/form.name'), @@ -1246,16 +1268,19 @@ class ReportsController extends Controller $header = array_map('trim', $header); $rows[] = implode(',', $header); - foreach ($assetsForReport as $item) { + foreach ($itemsForReport as $item) { - if ($item['assetItem'] != null){ + if ($item != null){ $row = [ ]; - $row[] = str_replace(',', '', e($item['assetItem']->model->category->name)); - $row[] = str_replace(',', '', e($item['assetItem']->model->name)); - $row[] = str_replace(',', '', e($item['assetItem']->name)); - $row[] = str_replace(',', '', e($item['assetItem']->asset_tag)); - $row[] = str_replace(',', '', e(($item['acceptance']->assignedTo) ? $item['acceptance']->assignedTo->display_name : trans('admin/reports/general.deleted_user'))); + $row[] = str_replace(',', '', $item->acceptance->created_at); + $row[] = str_replace(',', '', $item->type); + $row[] = str_replace(',', '', $item->company); + $row[] = str_replace(',', '', $item->category_plain); + $row[] = str_replace(',', '', $item->model_plain); + $row[] = str_replace(',', '', $item->name_plain); + $row[] = str_replace(',', '', $item->asset_tag); + $row[] = str_replace(',', '', ($item->acceptance->assignedto) ? $item->acceptance->assignedto->display_name : trans('admin/reports/general.deleted_user')); $rows[] = implode(',', $row); } } diff --git a/app/Models/Checkoutable.php b/app/Models/Checkoutable.php index 1648b5cae7..21420fdd86 100644 --- a/app/Models/Checkoutable.php +++ b/app/Models/Checkoutable.php @@ -17,6 +17,9 @@ class Checkoutable public string $type, public object $acceptance, public object $assignee, + public readonly string $category_plain, + public readonly string $model_plain, + public readonly string $name_plain, ){} // public static function fromCheckoutable(Asset|Accessory|etc..) @@ -69,6 +72,9 @@ class Checkoutable type: $type, acceptance: $acceptance, assignee: $assignee, + category_plain: optional($unaccepted_row->model?->category)->name ?? '', + model_plain: optional($unaccepted_row->model)->name ?? '', + name_plain: (string) ($unaccepted_row->name ?? ''), ); } }