|null $filterJson */ public function enqueue(AdminUser $admin, Request $request, string $reportType, string $exportFormat, ?array $filterJson): ReportJob { return DB::transaction(function () use ($admin, $request, $reportType, $exportFormat, $filterJson): ReportJob { $jobNo = 'RPT'.now()->format('YmdHis').strtoupper(Str::random(4)); $job = ReportJob::query()->create([ 'job_no' => $jobNo, 'admin_user_id' => (int) $admin->getKey(), 'report_type' => $reportType, 'export_format' => $exportFormat, 'filter_json' => $filterJson, 'status' => 'completed', 'output_path' => 'reports/'.$jobNo.'.'.$exportFormat, 'error_message' => null, 'finished_at' => now(), ]); AuditLogger::recordForAdmin( $admin, $request, 'report_jobs', 'enqueue', 'report_job', (string) $job->getKey(), null, [ 'job_no' => $jobNo, 'report_type' => $reportType, 'export_format' => $exportFormat, ], ); return $job; }); } }