<?php
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;

// Conexión a la base de datos
$pdo = new PDO('mysql:host=localhost;dbname=ugel', 'root', '1234');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// Cargar el archivo Excel
$archivoExcel = __DIR__ . '/excel/datos.xlsx';
$spreadsheet = IOFactory::load($archivoExcel);
$worksheet = $spreadsheet->getActiveSheet();

// Recorrer desde fila 4
foreach ($worksheet->getRowIterator(4) as $row) {
    $cells = $row->getCellIterator();
    $cells->setIterateOnlyExistingCells(false); // Para mantener posiciones de columnas
    $rowData = [];
    foreach ($cells as $cell) {
        $rowData[] = trim($cell->getFormattedValue());
    }

    // Leer procedure_id (columna A)
    $procedure_id = (int)$rowData[0];
    if ($procedure_id === 0) continue;

    $previous_id = null;
    $step_ids = [];

    // Inicia desde la columna J (índice 9), en bloques de 4
    for ($i = 9; $i < count($rowData); $i += 4) {
        $group_id_raw = $rowData[$i + 2] ?? null; // leer la tercera columna del bloque

        if (empty($group_id_raw)) break; // Si está vacío, se terminó la ruta
        $group_id = (int)$group_id_raw;

        // Insertar paso
        $stmt = $pdo->prepare("INSERT INTO procedure_routes 
            (procedure_id, group_id, subgroup_id, previous_step_id, next_step_id, active, deleted_at)
            VALUES (:procedure_id, :group_id, NULL, :previous_step_id, NULL, 1, NULL)");
        $stmt->execute([
            ':procedure_id' => $procedure_id,
            ':group_id' => $group_id,
            ':previous_step_id' => $previous_id
        ]);

        $current_id = $pdo->lastInsertId();

        // Si había un paso anterior, actualizamos su next_step_id
        if ($previous_id !== null) {
            $update = $pdo->prepare("UPDATE procedure_routes SET next_step_id = :next_id WHERE id = :prev_id");
            $update->execute([
                ':next_id' => $current_id,
                ':prev_id' => $previous_id
            ]);
        }

        // Guardamos el id actual como anterior para el siguiente paso
        $previous_id = $current_id;
    }
}

echo "procedure_routes insertados correctamente.\n";
