resolveMdbPath($legacy, $anno); } [$targetStabileId, $targetStabileCode, $splitMode, $targetAdminId] = $this->hydrateMappingPreferences( $context, $legacy, $targetStabileId, $targetStabileCode, $splitMode, 'unita_last_filters' ); if ($targetAdminIdOverride && $this->canTargetAdmin($context, $targetAdminIdOverride)) { $targetAdminId = $targetAdminIdOverride; } $logger = new ImportProgressLogger(); $logger->begin('import-unita', [ 'legacy_code' => $legacy, 'anno' => $anno, 'steps' => $steps, 'dry' => $dry, ]); $results = []; foreach ($steps as $step) { try { Artisan::call('gescon:import-full', $this->buildArtisanParams([ '--solo' => $step, '--stabile' => $legacy, '--mdb-condomin' => $mdbCondomin, '--anno' => $anno, '--dry-run' => $dry, '--limit' => $limit, '--scala' => $scala, '--piano-min' => $pianoMin !== null ? (string) $pianoMin : null, '--piano-max' => $pianoMax !== null ? (string) $pianoMax : null, '--only-pertinenze' => $onlyPert, '--split-mode' => $splitMode, '--target-stabile-id' => $targetStabileId, '--target-stabile-code' => $targetStabileCode, '--amministratore-id' => $targetAdminId, ])); $output = (string) Artisan::output(); $logger->checkpoint('step.done', ['step' => $step]); $logger->stdout("\n===== STEP {$step} =====\n" . $output . "\n"); $results[] = ['step' => $step, 'ok' => true, 'output' => $output]; } catch (Throwable $e) { $logger->error('step.error', ['step' => $step, 'error' => $e->getMessage()]); $results[] = ['step' => $step, 'ok' => false, 'error' => $e->getMessage()]; } } $logger->finish(['results' => array_map(fn ($r) => ['step' => $r['step'], 'ok' => $r['ok']], $results)]); $this->persistMappingMeta( $context, $legacy, $targetStabileId, $targetStabileCode, $targetAdminId, [ 'anno' => $anno, 'scala' => $scala, 'piano_min' => $pianoMin, 'piano_max' => $pianoMax, 'only_pertinenze' => $onlyPert, 'split_mode' => $splitMode, 'dry' => $dry, 'limit' => $limit, 'steps' => $steps, ], 'unita_last_filters' ); return [ 'ok' => !collect($results)->contains(fn ($r) => $r['ok'] === false), 'legacy_code' => $legacy, 'anno' => $anno, 'mdb_condomin_path' => $mdbCondomin, 'dry_run' => $dry, 'split_mode' => $splitMode, 'target_stabile_id' => $targetStabileId, 'target_stabile_code' => $targetStabileCode, 'target_admin_id' => $targetAdminId, 'steps' => $steps, 'results' => $results, ]; } }