Brakujące procesy
This commit is contained in:
parent
55bc7456bf
commit
3553ebe363
481
db/migrations/040_insert_missing_processes.php
Normal file
481
db/migrations/040_insert_missing_processes.php
Normal file
@ -0,0 +1,481 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../config.php';
|
||||
|
||||
function migrate_040($pdo) {
|
||||
$processes = [
|
||||
[
|
||||
'code' => 'training_new_member',
|
||||
'name' => 'Szkolenie nowego członka',
|
||||
'subject_scope' => 'person',
|
||||
'version' => 1,
|
||||
'is_latest' => 1,
|
||||
'is_active' => 1,
|
||||
'sort_order' => 40,
|
||||
'start_node_id' => 'tracker',
|
||||
'definition_json' => '{
|
||||
"start_node_id": "tracker",
|
||||
"nodes": {
|
||||
"tracker": {
|
||||
"id": "tracker",
|
||||
"name": "Tracker szkoleń",
|
||||
"ui_hints": {
|
||||
"title": "Szkolenia dla młodego członka",
|
||||
"status": "in_progress",
|
||||
"reason": "Oczekiwanie na ukończenie wszystkich szkoleń",
|
||||
"next_step": "Zaktualizuj status",
|
||||
"form_schema": [
|
||||
{
|
||||
"name": "w1",
|
||||
"label": "W1",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w2",
|
||||
"label": "W2",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w3",
|
||||
"label": "W3",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w4",
|
||||
"label": "W4",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w5",
|
||||
"label": "W5",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w6",
|
||||
"label": "W6",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "msp",
|
||||
"label": "MSP",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "ltt",
|
||||
"label": "LTT",
|
||||
"type": "checkbox"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"completed": {
|
||||
"id": "completed",
|
||||
"name": "Zakończony",
|
||||
"ui_hints": {
|
||||
"title": "Wszystkie szkolenia ukończone",
|
||||
"status": "positive",
|
||||
"reason": "Wszystkie szkolenia zostały ukończone",
|
||||
"next_step": "Zaktualizuj status",
|
||||
"form_schema": [
|
||||
{
|
||||
"name": "w1",
|
||||
"label": "W1",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w2",
|
||||
"label": "W2",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w3",
|
||||
"label": "W3",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w4",
|
||||
"label": "W4",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w5",
|
||||
"label": "W5",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "w6",
|
||||
"label": "W6",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "msp",
|
||||
"label": "MSP",
|
||||
"type": "checkbox"
|
||||
},
|
||||
{
|
||||
"name": "ltt",
|
||||
"label": "LTT",
|
||||
"type": "checkbox"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"transitions": [
|
||||
{
|
||||
"id": "update_tracker",
|
||||
"name": "Zapisz zmiany",
|
||||
"from": "tracker",
|
||||
"to": "tracker",
|
||||
"actions": [
|
||||
{
|
||||
"type": "set_data",
|
||||
"params": {
|
||||
"keys": [
|
||||
"w1",
|
||||
"w2",
|
||||
"w3",
|
||||
"w4",
|
||||
"w5",
|
||||
"w6",
|
||||
"msp",
|
||||
"ltt"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "auto_complete",
|
||||
"name": "Automatyczne zakończenie",
|
||||
"from": "tracker",
|
||||
"to": "completed",
|
||||
"condition": {
|
||||
"type": "all_true",
|
||||
"fields": [
|
||||
"w1",
|
||||
"w2",
|
||||
"w3",
|
||||
"w4",
|
||||
"w5",
|
||||
"w6",
|
||||
"msp",
|
||||
"ltt"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "update_completed",
|
||||
"name": "Zapisz zmiany",
|
||||
"from": "completed",
|
||||
"to": "tracker",
|
||||
"actions": [
|
||||
{
|
||||
"type": "set_data",
|
||||
"params": {
|
||||
"keys": [
|
||||
"w1",
|
||||
"w2",
|
||||
"w3",
|
||||
"w4",
|
||||
"w5",
|
||||
"w6",
|
||||
"msp",
|
||||
"ltt"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]'
|
||||
],
|
||||
[
|
||||
'code' => 'customer_journey',
|
||||
'name' => 'Członkostwo',
|
||||
'subject_scope' => 'person',
|
||||
'version' => 1,
|
||||
'is_latest' => 1,
|
||||
'is_active' => 1,
|
||||
'sort_order' => 50,
|
||||
'start_node_id' => 'survey_3m',
|
||||
'definition_json' => '{
|
||||
"start_node_id": "survey_3m",
|
||||
"initial_data": {
|
||||
"cycle_year": 1
|
||||
},
|
||||
"nodes": {
|
||||
"survey_3m": {
|
||||
"name": "Ankieta 3 miesiąca",
|
||||
"type": "user_task",
|
||||
"ui_hints": {
|
||||
"title": "Ankieta 3 miesiąca",
|
||||
"status": "in_progress",
|
||||
"reason": "Oczekuje na ankietę po 3 miesiącach",
|
||||
"next_step": "Wypełnij ankietę",
|
||||
"form_schema": [
|
||||
{
|
||||
"name": "survey_3m_done_at",
|
||||
"type": "date",
|
||||
"label": "Data wykonania",
|
||||
"required": true,
|
||||
"default": "now"
|
||||
},
|
||||
{
|
||||
"name": "note",
|
||||
"type": "text",
|
||||
"label": "Notatka"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"survey_7m": {
|
||||
"name": "Ankieta 7 miesiąca",
|
||||
"type": "user_task",
|
||||
"ui_hints": {
|
||||
"title": "Ankieta 7 miesiąca",
|
||||
"status": "in_progress",
|
||||
"reason": "Oczekuje na ankietę po 7 miesiącach",
|
||||
"next_step": "Wypełnij ankietę",
|
||||
"form_schema": [
|
||||
{
|
||||
"name": "survey_7m_done_at",
|
||||
"type": "date",
|
||||
"label": "Data wykonania",
|
||||
"required": true,
|
||||
"default": "now"
|
||||
},
|
||||
{
|
||||
"name": "note",
|
||||
"type": "text",
|
||||
"label": "Notatka"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"payment": {
|
||||
"name": "Wpłata",
|
||||
"type": "user_task",
|
||||
"ui_hints": {
|
||||
"title": "Wpłata",
|
||||
"status": "in_progress",
|
||||
"reason": "Oczekuje na wpłatę",
|
||||
"next_step": "Zaksięguj wpłatę",
|
||||
"form_schema": [
|
||||
{
|
||||
"name": "payment_done_at",
|
||||
"type": "date",
|
||||
"label": "Data wpłaty",
|
||||
"required": true,
|
||||
"default": "now"
|
||||
},
|
||||
{
|
||||
"name": "note",
|
||||
"type": "text",
|
||||
"label": "Notatka"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"committee": {
|
||||
"name": "Komitet",
|
||||
"type": "user_task",
|
||||
"ui_hints": {
|
||||
"title": "Komitet",
|
||||
"status": "in_progress",
|
||||
"reason": "Decyzja komitetu",
|
||||
"next_step": "Wprowadź decyzję",
|
||||
"form_schema": [
|
||||
{
|
||||
"name": "committee_decision",
|
||||
"type": "select",
|
||||
"label": "Decyzja",
|
||||
"options": [
|
||||
{
|
||||
"value": "approved",
|
||||
"label": "Zatwierdzony"
|
||||
},
|
||||
{
|
||||
"value": "rejected",
|
||||
"label": "Odrzucony"
|
||||
},
|
||||
{
|
||||
"value": "pending",
|
||||
"label": "Oczekujący"
|
||||
}
|
||||
],
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"name": "note",
|
||||
"type": "text",
|
||||
"label": "Notatka"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"renewal": {
|
||||
"name": "Przedłużenie członkostwa",
|
||||
"type": "user_task",
|
||||
"ui_hints": {
|
||||
"title": "Przedłużenie członkostwa",
|
||||
"status": "in_progress",
|
||||
"reason": "Oczekuje na przedłużenie",
|
||||
"next_step": "Przedłuż na kolejny rok",
|
||||
"form_schema": [
|
||||
{
|
||||
"name": "renewal_done_at",
|
||||
"type": "date",
|
||||
"label": "Data przedłużenia",
|
||||
"required": true,
|
||||
"default": "now"
|
||||
},
|
||||
{
|
||||
"name": "note",
|
||||
"type": "text",
|
||||
"label": "Notatka"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"transitions": [
|
||||
{
|
||||
"id": "finish_survey_3m",
|
||||
"name": "Zakończ ankietę (3m)",
|
||||
"from": "survey_3m",
|
||||
"to": "survey_7m",
|
||||
"actions": [
|
||||
{
|
||||
"type": "set_data",
|
||||
"params": {
|
||||
"keys": [
|
||||
"survey_3m_done_at",
|
||||
"note"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "finish_survey_7m",
|
||||
"name": "Zakończ ankietę (7m)",
|
||||
"from": "survey_7m",
|
||||
"to": "payment",
|
||||
"actions": [
|
||||
{
|
||||
"type": "set_data",
|
||||
"params": {
|
||||
"keys": [
|
||||
"survey_7m_done_at",
|
||||
"note"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "finish_payment",
|
||||
"name": "Potwierdź wpłatę",
|
||||
"from": "payment",
|
||||
"to": "committee",
|
||||
"actions": [
|
||||
{
|
||||
"type": "set_data",
|
||||
"params": {
|
||||
"keys": [
|
||||
"payment_done_at",
|
||||
"note"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "finish_committee",
|
||||
"name": "Wprowadź decyzję komitetu",
|
||||
"from": "committee",
|
||||
"to": "renewal",
|
||||
"actions": [
|
||||
{
|
||||
"type": "set_data",
|
||||
"params": {
|
||||
"keys": [
|
||||
"committee_decision",
|
||||
"note"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "finish_renewal",
|
||||
"name": "Zamknij cykl i rozpocznij kolejny rok",
|
||||
"from": "renewal",
|
||||
"to": "survey_3m",
|
||||
"actions": [
|
||||
{
|
||||
"type": "set_data",
|
||||
"params": {
|
||||
"keys": [
|
||||
"renewal_done_at",
|
||||
"note"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "increment_data",
|
||||
"params": {
|
||||
"key": "cycle_year",
|
||||
"by": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "reset_data",
|
||||
"params": {
|
||||
"keys": [
|
||||
"survey_3m_done_at",
|
||||
"survey_7m_done_at",
|
||||
"payment_done_at",
|
||||
"committee_decision",
|
||||
"renewal_done_at"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]'
|
||||
]
|
||||
];
|
||||
|
||||
try {
|
||||
$checkStmt = $pdo->prepare("SELECT COUNT(*) FROM process_definitions WHERE code = :code");
|
||||
$insertStmt = $pdo->prepare("INSERT INTO process_definitions (code, name, subject_scope, version, is_latest, is_active, sort_order, start_node_id, definition_json) VALUES (:code, :name, :subject_scope, :version, :is_latest, :is_active, :sort_order, :start_node_id, :definition_json)");
|
||||
|
||||
foreach ($processes as $p) {
|
||||
$checkStmt->execute(['code' => $p['code']]);
|
||||
$exists = $checkStmt->fetchColumn() > 0;
|
||||
|
||||
if (!$exists) {
|
||||
$insertStmt->execute([
|
||||
'code' => $p['code'],
|
||||
'name' => $p['name'],
|
||||
'subject_scope' => $p['subject_scope'],
|
||||
'version' => $p['version'],
|
||||
'is_latest' => $p['is_latest'],
|
||||
'is_active' => $p['is_active'],
|
||||
'sort_order' => $p['sort_order'],
|
||||
'start_node_id' => $p['start_node_id'],
|
||||
'definition_json' => $p['definition_json']
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
echo "Migration 040 successful: Missing process definitions inserted.\n";
|
||||
} catch (PDOException $e) {
|
||||
die("Migration 040 failed: " . $e->getMessage() . "\n");
|
||||
}
|
||||
}
|
||||
|
||||
// For manual execution if needed
|
||||
if (basename(__FILE__) == basename($_SERVER["SCRIPT_FILENAME"])) {
|
||||
migrate_040(db());
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user