<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="Styles/styles.css">
</head>
<body>
    <?php

        $LINK 
mysqli_connect('127.0.0.1','pisjo950','vjPRjFTxDVIoG7)t','pisjo950');



        
//don't forget the insert also new IN type if new come
        //It has to start at User level
        
$selectedWf $_GET['workflow'] ?? null;
        
$role=$_SESSION['group'];
        
$fields = [];
        if (
$selectedWf) {
            
$sql "
                  SELECT
                      f.id_field,
                      f.label,
                      f.type,
                      f.is_optional
                  FROM TicketFields AS f
                  JOIN TicketStates AS s
                    ON f.fi_steps = s.id_state
                  WHERE
                      s.fi_workflow = ?
                      AND f.type IN (
                          'text',
                          'number',
                          'date',
                          'select',
                          'checkbox'
                      )
                      AND s.responsable = 'User'
                  ORDER BY
                      s.no,
                      f.id_field
                  "
;
            
$stmt $LINK->prepare($sql);
            
$stmt->bind_param('i'$selectedWf);
            
$stmt->execute();
            
$fields $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
            
$stmt->close();
        }

        
// 3) If the final form is submitted, handle inserting the ticket
        
if (isset($_POST['submit_ticket'])) {
            
//echo $_SESSION['id'];
            
$wf       = (int)$_POST['workflow_id'];
            
$userName$_SESSION['username'];
            
$userID     $_SESSION['id'];

            
// first insert the request
            
$stmt $LINK->prepare("
            INSERT INTO TicketRequest (fi_workflow, fi_state, iam_inserted,fi_user)
            VALUES (?, (SELECT id_state FROM TicketStates WHERE fi_workflow=? ORDER BY no LIMIT 1), ?,?)"
);
            
$stmt->bind_param('iisi'$wf$wf$userName,$userID);
            
$stmt->execute();
            
$reqId $stmt->insert_id;
            
$stmt->close();
            
            
// then each dynamic field
            
$stmt $LINK->prepare("
            INSERT INTO TicketData (fi_request, fi_field, value)
            VALUES (?, ?, ?)
            "
);
            foreach (
$fields as $f) {
                
$val $_POST['field_'.$f['id_field']] ?? null;
                
$stmt->bind_param('iis'$reqId$f['id_field'], $val);
                
$stmt->execute();
            }
            
$stmt->close();
            echo 
"<p>Ticket #{$reqId} created!</p>";
            
            
//Also update the TicketState
            // 2) Record the initial state in TicketHasState

            
$initStateSql "
            SELECT id_state 
                FROM TicketStates 
            WHERE fi_workflow=? 
            ORDER BY no 
            LIMIT 1
            "
;
            
$st $LINK->prepare($initStateSql);
            
$st->bind_param('i'$wf);
            
$st->execute();
            
$st->bind_result($initialState);
            
$st->fetch();
            
$st->close();

            
$hist $LINK->prepare("
            INSERT INTO TicketHasState
                (fi_request, fi_state, iam_inserted)
            VALUES
                (?, ?, ?)
            "
);
            
$hist->bind_param('iis'$reqId$initialState$userName);
            
$hist->execute();
            
$hist->close();

            
// clear selection so you can start over
            
$selectedWf null;
            
$fields = [];
        }

        
//get all the extratimes
        
$statement $LINK->prepare("SELECT id_workflow,title FROM TicketWorkflows");
        
$statement->execute();
        
$workflows $statement->get_result()->fetch_all(MYSQLI_ASSOC);
        
$statement->close();
        
    
?>

    <!-- Submit a ticket with dropdown of all workflows -->
     <!-- depending on workflow, show different fields, fields are determined in TicketFields db -->
    <h1>New Ticket</h1>

    <!-- Step 1: choose your workflow -->
    <form method="GET" id="wfForm" action="index.php?page=workflow">
        <input type="hidden" name="page" value="workflow">
        <label for="workflow">Workflow:</label>
        <select name="workflow" id="workflow"
                onchange="document.getElementById('wfForm').submit()">
        <option value="">— Select —</option>
        <?php foreach($workflows as $wf): ?>
            <option
            value="<?= $wf['id_workflow']?>"
            <?= $wf['id_workflow']==$selectedWf'selected':''?>>
            <?= htmlspecialchars($wf['title'])?>
            </option>
        <?php endforeach; ?>
        </select>
    </form>

    <?php if ($selectedWf && $fields): ?>

    <!-- Step 2: render the form for the chosen workflow -->
    <form method="POST">
      <input type="hidden" name="workflow_id" value="<?= $selectedWf ?>">
      <?php foreach ($fields as $f): ?>
        <div class="form-row">
          <label for="field_<?= $f['id_field'?>">
            <?= htmlspecialchars($f['label']) ?>
            <?= $f['is_optional'] ? '' '<span>*</span>' ?>
          </label>

          <?php if ($f['type']==='text'): ?>
            <input type="text"
                   id="field_<?= $f['id_field'?>"
                   name="field_<?= $f['id_field'?>"
                   <?= $f['is_optional'] ? '' 'required' ?>>

          <?php elseif ($f['type']==='number'): ?>
            <input type="number"
                   id="field_<?= $f['id_field'?>"
                   name="field_<?= $f['id_field'?>"
                   <?= $f['is_optional'] ? '' 'required' ?>>

          <?php elseif ($f['type']==='date'): ?>
            <input type="date"
                   id="field_<?= $f['id_field'?>"
                   name="field_<?= $f['id_field'?>"
                   <?= $f['is_optional'] ? '' 'required' ?>>
          <?php elseif($f['type']==='checkbox'): ?>
            <input type="checkbox"
                    id="field_<?= $f['id_field'?>"
                    name="field_<?= $f['id_field'?>"
                    <?= $f['is_optional'] ? '' 'required' ?>>

          <?php elseif ($f['type']==='select'): ?>
            <!-- assumes you have a TicketFieldOptions table -->
            <?php
            $optStmt 
$LINK->prepare("
              SELECT option_value, option_label
              FROM TicketFieldOptions
              WHERE fi_field = ?
            "
);
            
$optStmt->bind_param('i'$f['id_field']);
            
$optStmt->execute();
            
$opts $optStmt->get_result()->fetch_all(MYSQLI_ASSOC);
            
$optStmt->close();
            
?>
            <select id="field_<?= $f['id_field'?>"
                    name="field_<?= $f['id_field'?>"
                    <?= $f['is_optional'] ? '' 'required' ?>>
              <option value="">— choose —</option>
              <?php foreach ($opts as $o): ?>
                <option value="<?= htmlspecialchars($o['option_value'])?>">
                  <?= htmlspecialchars($o['option_label'])?>
                </option>
              <?php endforeach; ?>
            </select>

          <?php endif; ?>
        </div>
      <?php endforeach; ?>

      <button type="submit" name="submit_ticket">Submit Ticket</button>
    </form>
  <?php elseif ($selectedWf): ?>
    <p>No fields defined for this workflow.</p>
  <?php endif; ?>
  <p><a href="index.php">Back</a></p>
</body>
</html>