tenantArchivePath->amministratoreCode($amministratore); return [ 'archive_type' => 'amministratore', 'archive_code' => $adminCode, 'amministratore_id' => $amministratore->id, 'stabile_id' => null, 'owner_amministratore_id' => $amministratore->id, 'owner_amministratore_code' => $adminCode, 'database_name' => $amministratore->database_attivo ?: null, 'database_strategy' => $amministratore->database_attivo ? 'dedicated' : 'shared', 'storage_disk' => 'local', 'storage_relative_path' => $this->tenantArchivePath->amministratoreRelativePath($amministratore), 'status' => (bool) ($amministratore->attivo ?? true) ? 'active' : 'inactive', 'last_aligned_at' => now(), 'meta' => [ 'codice_univoco' => $amministratore->codice_univoco, 'codice_amministratore' => $amministratore->codice_amministratore, 'cartella_dati' => $amministratore->cartella_dati, ], ]; } public function buildStabilePayload(Stabile $stabile): array { $ownerCode = $this->tenantArchivePath->amministratoreCode($stabile->amministratore); $transfer = $stabile->latestAmministratoreTransfer; return [ 'archive_type' => 'stabile', 'archive_code' => $this->tenantArchivePath->stabileCode($stabile), 'amministratore_id' => $stabile->amministratore_id, 'stabile_id' => $stabile->id, 'owner_amministratore_id' => $stabile->amministratore_id, 'owner_amministratore_code' => $ownerCode, 'database_name' => $stabile->database_dedicato ?: null, 'database_strategy' => $stabile->database_dedicato ? 'dedicated' : 'shared', 'storage_disk' => 'local', 'storage_relative_path' => $this->tenantArchivePath->stabileRelativePath($stabile), 'status' => (bool) ($stabile->attivo ?? true) ? 'active' : 'inactive', 'last_aligned_at' => now(), 'meta' => [ 'denominazione' => $stabile->denominazione, 'codice_stabile' => $stabile->codice_stabile, 'documenti_path' => $stabile->documenti_path, 'latest_transfer_at' => optional($transfer?->created_at)->toIso8601String(), 'latest_transfer_source' => $transfer?->source, 'latest_transfer_reason' => $transfer?->reason, 'latest_transfer_meta' => $transfer?->meta ?? [], ], ]; } public function syncAmministratore(Amministratore $amministratore): TenantArchiveRegistry { return TenantArchiveRegistry::updateOrCreate( [ 'archive_type' => 'amministratore', 'archive_code' => $this->tenantArchivePath->amministratoreCode($amministratore), ], $this->buildAmministratorePayload($amministratore) ); } public function syncStabile(Stabile $stabile): TenantArchiveRegistry { return TenantArchiveRegistry::updateOrCreate( [ 'archive_type' => 'stabile', 'archive_code' => $this->tenantArchivePath->stabileCode($stabile), ], $this->buildStabilePayload($stabile) ); } public function syncAmministratori(iterable $amministratori): Collection { return collect($amministratori)->map(fn(Amministratore $amministratore) => $this->syncAmministratore($amministratore)); } public function syncStabili(iterable $stabili): Collection { return collect($stabili)->map(fn(Stabile $stabile) => $this->syncStabile($stabile)); } }