@@ -38,10 +38,13 @@ class ReferenceCatalogController extends Controller
|
||||
}
|
||||
if ($catalog === 'economic-activities') {
|
||||
$rules['sector_id'] = ['nullable', 'integer', 'exists:sectors,id'];
|
||||
$rules['origin'] = ['nullable', 'in:portal,cae'];
|
||||
}
|
||||
$data = $request->validate($rules);
|
||||
|
||||
$versionQuery = DB::table('reference_catalog_versions')->where('catalog_code', $catalog)->where('locale', 'pt-MZ');
|
||||
$cae = $catalog === 'economic-activities' && ($data['origin'] ?? 'portal') === 'cae';
|
||||
$versionQuery = DB::table('reference_catalog_versions')->where('catalog_code', $cae ? 'economic-activities-cae' : $catalog)->where('locale', 'pt-MZ');
|
||||
if ($cae && ! app(\App\Services\EconomicReferenceCatalog::class)->available()) { $versionQuery->whereRaw('false'); }
|
||||
if (isset($data['version'])) {
|
||||
$versionQuery->where('version_no', $data['version'])->whereIn('status', ['published', 'retired']);
|
||||
} else {
|
||||
@@ -78,6 +81,10 @@ class ReferenceCatalogController extends Controller
|
||||
|
||||
$page = $query->orderBy('code')->orderBy('id')->paginate($data['per_page'] ?? 20)->withQueryString();
|
||||
$items = collect($page->items())->map(fn (object $row): array => $this->present($catalog, (array) $row))->values();
|
||||
if ($cae) {
|
||||
$paths = app(\App\Services\EconomicReferenceCatalog::class)->activities()->keyBy('id');
|
||||
$items = $items->map(fn ($row) => [...$row, 'level' => $paths[$row['id']]->level, 'path' => $paths[$row['id']]->path, 'source_version' => $paths[$row['id']]->source_version, 'edition' => 'not_determined', 'divergence' => '600/579 documentalmente aberta']);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'data' => $items,
|
||||
|
||||
Reference in New Issue
Block a user