<?php
require_once '../Config/db.php';

$workflow_id intval($_GET['workflow_id']);

// Get first state for this workflow
$state_sql "SELECT pk_state FROM workflowManager_State 
              WHERE fk_Workflow_transitionsThrough = 
$workflow_id
              ORDER BY stateNumber ASC LIMIT 1"
;
$state_result mysqli_query($conn$state_sql);
$state mysqli_fetch_assoc($state_result);
$state_id $state['pk_state'] ?? 0;

// Get fields for this state
$fields_sql "SELECT pk_field, label, type, isOptional, options 
               FROM workflowManager_Field 
               WHERE fk_State_appliesTo = 
$state_id";
$fields_result mysqli_query($conn$fields_sql);

function 
render_field_input($field) {
    
$field_name "field_{$field['pk_field']}";
    
$required_attr = !$field['isOptional'] ? 'required' '';

    switch (
$field['type']) {
        case 
'textarea':
            echo 
"<textarea name='$field_name$required_attr></textarea>";
            return;
        case 
'select':
            
// make attrbiute options with type JSON from database into a PHP object
            
$options json_decode($field['options'] ?? '[]'true);
            echo 
"<select name='$field_name$required_attr>";
            echo 
"<option value=''>-- Select --</option>";
            foreach (
$options as $value => $label) {
                
$value htmlspecialchars($value);
                
$label htmlspecialchars($label);
                echo 
"<option value='$value'>$label</option>";
            }
            echo 
"</select>";
            return;
        case 
'radio':
            
$options json_decode($field['options'] ?? '[]'true);
            echo 
"<div class='radio-group'>";
            foreach (
$options as $value => $label) {
                
$value htmlspecialchars($value);
                
$label htmlspecialchars($label);
                echo 
"<label><input type='radio' name='$field_name' value='$value$required_attr$label</label> ";
            }
            echo 
"</div>";
            return;
        case 
'checkbox':
            echo 
"<input type='checkbox' name='$field_name' value='1' $required_attr>";
            return;
        case 
'date':
            echo 
"<input type='date' name='$field_name$required_attr>";
            return;
        case 
'datetime':
            echo 
"<input type='datetime-local' name='$field_name$required_attr>";
            return;
        case 
'time':
            echo 
"<input type='time' name='$field_name$required_attr>";
            return;
        case 
'number':
            echo 
"<input type='number' name='$field_name$required_attr>";
            return;
        case 
'email':
            echo 
"<input type='email' name='$field_name$required_attr>";
            return;
        case 
'file':
            echo 
"<input type='file' name='$field_name$required_attr>";
            return;
        case 
'color':
            echo 
"<input type='color' name='$field_name$required_attr>";
            return;
        case 
'range':
            echo 
"<input type='range' name='$field_name$required_attr>";
            return;
        default:
            echo 
"<input type='text' name='$field_name$required_attr>";
            return;
    }
}
?>

<?php while ($field mysqli_fetch_assoc($fields_result)): ?>
    <div class="form-group field-item">
        <label>
            <?= htmlspecialchars($field['label']) ?>
            <?= !$field['isOptional'] ? '<span class="required">*</span>' '' ?>
        </label>
        <?php render_field_input($field); ?>
    </div>
<?php endwhile; ?>