<?php
require_once __DIR__ . '/../../db/config.php';

function migrate_023($pdo) {
    $json_definition = '{ "nodes": { "start": { "id": "start", "name": "Start", "ui_hints": { "status": "in_progress", "reason": "Oczekuje na wystawienie pro formy", "next_step": "Wystaw pro formę" } }, "wait_for_payment": { "id": "wait_for_payment", "name": "Oczekiwanie na płatność", "ui_hints": { "status": "in_progress", "reason": "Oczekuje na potwierdzenie wpływu środków", "next_step": "Potwierdź wpływ środków" } }, "notify_committee": { "id": "notify_committee", "name": "Powiadomienie komitetu", "ui_hints": { "status": "in_progress", "reason": "Oczekuje na powiadomienie komitetu", "next_step": "Powiadom komitet i przejdź do decyzji" } }, "decision_committee": { "id": "decision_committee", "name": "Decyzja komitetu", "ui_hints": { "status": "in_progress", "reason": "Oczekuje na decyzję komitetu", "next_step": "Zatwierdź lub odrzuć" } }, "end_accepted": { "id": "end_accepted", "name": "Zatwierdzony", "ui_hints": { "status": "positive", "reason": "Członek przyjęty", "next_step": "" } }, "end_rejected": { "id": "end_rejected", "name": "Odrzucony", "ui_hints": { "status": "negative", "reason": "Członek odrzucony", "next_step": "" } } }, "transitions": [ { "id": "issue_proforma", "name": "Wystaw pro formę", "from": "start", "to": "wait_for_payment", "actions": [ { "type": "set_data", "params": { "keys": ["issue_date", "document_number"] } } ] }, { "id": "confirm_payment", "name": "Potwierdź wpływ środków", "from": "wait_for_payment", "to": "notify_committee", "actions": [ { "type": "set_data", "params": { "keys": ["payment_date"] } } ] } , { "id": "proceed_to_decision", "name": "Przekaż do decyzji komitetu", "from": "notify_committee", "to": "decision_committee" }, { "id": "accept_member", "name": "Zatwierdź", "from": "decision_committee", "to": "end_accepted", "actions": [ { "type": "start_process", "params": { "process_code": "wprowadzenie-nowego-cz-onka" } } ] }, { "id": "reject_member", "name": "Odrzuć", "from": "decision_committee", "to": "end_rejected" } ], "start_node_id": "start", "eligibility_rules": [ { "type": "deny_manual_start" } ] }';

    $stmt = $pdo->prepare("INSERT INTO process_definitions (name, code, definition_json, is_active) VALUES (?, ?, ?, ?)");
    $stmt->execute([
        'Obsługa przyjęcia nowego członka',
        'obsluga-przyjecia-nowego-czlonka',
        $json_definition,
        1
    ]);
}

// If called directly, run the migration
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
    require_once __DIR__ . '/../../db/config.php';
    $pdo = db();
    migrate_023($pdo);
    echo "Migration 023 executed successfully.\n";
}