make(Kernel::class)->bootstrap(); $identity = portalQaAssertTarget($target); $rows = DB::transaction(function () { DB::statement('SET TRANSACTION READ ONLY'); $result = []; foreach (range(31, 39) as $id) { $o = Opportunity::findOrFail($id); $p = app(OpportunityManagement::class)->values($o)['canonical'] ?? []; try { $valid = app(OpportunityCanonicalContract::class)->validateSubmission($o); $errors = []; } catch (ValidationException $e) { $errors = $e->errors(); } $result[] = ['id' => $id, 'category' => $o->opportunity_category, 'status' => $o->status, 'payload_keys' => array_keys($p), 'errors' => $errors, 'gates' => app(OpportunityCanonicalContract::class)->gates($o), 'resource_counts' => ['locations' => count($p['locations'] ?? []), 'documents' => count($p['documents'] ?? []), 'images' => count($p['images'] ?? [])]]; } return $result; }); file_put_contents($root.'/storage/app/private/investmoz-v2/portal-audit/next-contract-inspection-qa.json', json_encode(['target' => $identity, 'rows' => $rows, 'active_writes' => 0], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); echo json_encode(array_map(fn ($r) => ['id' => $r['id'], 'category' => $r['category'], 'errors' => $r['errors'], 'resources' => $r['resource_counts']], $rows), JSON_UNESCAPED_UNICODE).PHP_EOL;