<?php
include("../../operainfo/getq2.php");
$x=getsecurity();
$idd = safetext2(isset($_GET['iid']) ? $_GET['iid'] : '');
if ($idd == '') {
    echo "<div style='color:red;'>No issue ID provided.</div>";
    exit;
}
//echo "$x r<br>";
// Find primary issue if any
$s = "SELECT primary_issue FROM viamedagendahistory WHERE id='" . addslashes($idd) . "'";
$result = sqlquery($s);
$primary_issue = '';
if ($row = $result->fetch_assoc()) {
    $primary_issue = $row['primary_issue'];
}
$useprimaryid = $primary_issue && $primary_issue != '0' ? $primary_issue : $idd;

$queue = []; // IDs to process
$visited = []; // IDs already processed or in queue
$all_related_issues_data = []; // Stores full issue data

// Initialize queue and visited with the starting IDs
if (!empty($idd) && $idd != '0') {
    $queue[] = $idd;
    $visited[] = $idd;
}
if (!empty($useprimaryid) && $useprimaryid != '0' && $useprimaryid != $idd) {
    $queue[] = $useprimaryid;
    $visited[] = $useprimaryid;
}

$head = 0;
while ($head < count($queue)) {
    $current_issue_id = $queue[$head++];

    // 1. Find issues where primary_issue links to current_issue_id (children)
    $s_children = "SELECT id, subject, investigateby, completed, notes, priority, primary_issue FROM viamedagendahistory WHERE primary_issue='" . addslashes($current_issue_id) . "' AND id<>'" . addslashes($current_issue_id) . "' AND primary_issue<>''";
    $result_children = sqlquery($s_children);
    while ($row = $result_children->fetch_assoc()) {
        if (!in_array($row['id'], $visited)) {
            $visited[] = $row['id'];
            $queue[] = $row['id'];
            $all_related_issues_data[$row['id']] = $row;
        }
    }

    // 2. Find the primary_issue of the current_issue_id (parent)
    $s_parent = "SELECT primary_issue FROM viamedagendahistory WHERE id='" . addslashes($current_issue_id) . "' AND primary_issue<>''";
    $result_parent = sqlquery($s_parent);
    if ($row_parent = $result_parent->fetch_assoc()) {
        $parent_id = $row_parent['primary_issue'];
        if (!empty($parent_id) && $parent_id != '0') {
            if (!in_array($parent_id, $visited)) {
                $visited[] = $parent_id;
                $queue[] = $parent_id;
            }
            // Fetch the parent's full details and add to all_related_issues_data if not already present
            // and if it's not the original issue being viewed ($idd)
            if (!isset($all_related_issues_data[$parent_id]) && $parent_id != $idd) {
                $s_get_parent_details = "SELECT id, subject, investigateby, completed, notes, priority, primary_issue FROM viamedagendahistory WHERE id='" . addslashes($parent_id) . "'";
                $result_parent_details = sqlquery($s_get_parent_details);
                if ($parent_details_row = $result_parent_details->fetch_assoc()) {
                    $all_related_issues_data[$parent_id] = $parent_details_row;
                }
            }
        }

        // 3. Find issues that share the same primary_issue as current_issue_id (siblings)
        if (!empty($parent_id) && $parent_id != '0') {
            $s_siblings = "SELECT id, subject, investigateby, completed, notes, priority, primary_issue FROM viamedagendahistory WHERE primary_issue='" . addslashes($parent_id) . "' AND id<>'" . addslashes($current_issue_id) . "' AND primary_issue<>''";
            $result_siblings = sqlquery($s_siblings);
            while ($row = $result_siblings->fetch_assoc()) {
                if (!in_array($row['id'], $visited)) {
                    $visited[] = $row['id'];
                    $queue[] = $row['id'];
                    $all_related_issues_data[$row['id']] = $row;
                }
            }
        }
    }
}

// The $all_related_issues_data now contains all unique related issues.
// Convert to an indexed array for the foreach loop in the HTML.
$related_issues = array_values($all_related_issues_data);

if (count($related_issues) === 0) {
    echo "<div style='color:#888;'>No related issues found.</div>";
    exit;
}
//echo "$x<br>";
// Modern table output
?>
<table style="width:100%; border-collapse:collapse; font-size:1em;">
  <thead>
    <tr style="background:#eaf3fb;">
      <th style="padding:6px; border:1px solid #ccc;">Issue #</th>
      <th style="padding:6px; border:1px solid #ccc;">Subject</th>
      <th style="padding:6px; border:1px solid #ccc;">Assigned To</th>
      <th style="padding:6px; border:1px solid #ccc;">Status</th>
      <th style="padding:6px; border:1px solid #ccc;">Notes</th>
    </tr>
  </thead>
  <tbody>
  <?php foreach ($related_issues as $issue): ?>
  <tr>
    <td style="padding:6px; border:1px solid #ccc;">
      <a href="singleissue3.php<?php echo $x;?>&iid=<?= urlencode($issue['id']) ?>" target="_blank">#<?= htmlspecialchars($issue['id']) ?></a>
    </td>
    <td style="padding:6px; border:1px solid #ccc;" title="<?= htmlspecialchars($issue['subject']) ?>">
      <?= htmlspecialchars($issue['subject']) ?>
    </td>
    <td style="padding:6px; border:1px solid #ccc;">
      <?= htmlspecialchars($issue['investigateby']) ?>
    </td>
    <td style="padding:6px; border:1px solid #ccc;">
      <?php
        if ($issue['completed']) {
            echo "<span style='color:green;'>Completed</span>";
        } else if ($issue['priority'] > 5) {
            echo "<span style='color:orange;'>Outstanding</span>";
        } else {
            echo "<span style='#888;'>Open</span>";
        }
      ?>
    </td>
    <td style="padding:6px; border:1px solid #ccc;">
      <button onclick="showIssueNotesRow('<?= $issue['id'] ?>', this)">View Notes</button>
    </td>
  </tr>
  <tr class="notes-row" style="display:none;">
    <td colspan="5" style="padding:0; border:none;">
      <div class="notes-popup" style="display:none; margin:0 0 0 0;"></div>
    </td>
  </tr>
<?php endforeach; ?>
  </tbody>
</table>
