<?php
/*****************************************************
 * loadSurvey.php (iOS version calling spt_session_list_getR2 & spt_get_survey_responses)
 *
 * GET params (from iOS):
 *  - id=USERNAME (required)
 *  - history=0    (optional, defaults to 0)
 *  - jobno=0      (optional, defaults to 0)
 *  - workorderno  (optional, required to fetch survey details)
 *****************************************************/
require_once __DIR__ . '/config.php';

header('Content-Type: application/json; charset=utf-8');

// 1. Collect basic params
$userID  = isset($_GET['id']) ? $_GET['id'] : "";
$history = isset($_GET['history']) ? $_GET['history'] : "0";
$jobno   = isset($_GET['jobno']) ? $_GET['jobno'] : "0";
$workorderno = isset($_GET['workorderno']) ? ($_GET['workorderno']) : "0";

// If userID is empty, respond with error or empty array
if (empty($userID)) {
    echo json_encode(["error" => "Missing user ID"]);
    exit;
}

// Build DSN from config.php variables
$dsn = "mysql:host=$dbHost;dbname=$dbName;charset=$dbCharset";

try {
    $pdo = new PDO($dsn, $dbUser, $dbPassword, [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
    ]);

    /******************************************************
     * Step 1: Fetch session list from spt_session_list_getR2
     ******************************************************/
    $sql = "CALL ibeammac_iScan.spt_session_list_getR2(
        :userID, '', :history, NULL, NULL, :jobno,
        '', '', '', '', '', '', '', '', '', 0, '', 0, '', 0,
        @returncode, @returnmessage
    )";

    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':userID', $userID, PDO::PARAM_STR);
    $stmt->bindParam(':history', $history, PDO::PARAM_INT);
    $stmt->bindParam(':jobno', $jobno, PDO::PARAM_INT);

    $outstr = "[]"; // Default to empty array if no rows

    if ($stmt->execute()) {
        // Fetch session list
        $surveys = $stmt->fetchAll(PDO::FETCH_ASSOC);

        foreach ($surveys as &$survey) {
            // Map description to site_name
            $survey['site_name'] = $survey['description'] ?? "Unknown";

            // Ensure key fields are included (prevent missing fields)
            $survey['equipmenttype'] = $survey['equipmenttype'] ?? "N/A";
            $survey['measuretype'] = $survey['measuretype'] ?? "N/A";
            $survey['measuredistance'] = $survey['measuredistance'] ?? "N/A";
            $survey['measureangle'] = $survey['measureangle'] ?? "N/A";
            $survey['measurex'] = $survey['measurex'] ?? "N/A";
            $survey['measurey'] = $survey['measurey'] ?? "N/A";
            $survey['liftweight'] = $survey['liftweight'] ?? "N/A";
            $survey['wallheight'] = $survey['wallheight'] ?? "N/A";
            $survey['ledge'] = $survey['ledge'] ?? "N/A";
            $survey['terrainweight'] = $survey['terrainweight'] ?? "N/A";
            $survey['openingheight'] = $survey['openingheight'] ?? "N/A";
            $survey['openingwidth'] = $survey['openingwidth'] ?? "N/A";
            $survey['entereddate'] = $survey['entereddate'] ?? "N/A";
        }
    } else {
        $surveys = [];
    }

    // Free statement before making a new query
    $stmt->closeCursor();

    /******************************************************
     * Step 2: Fetch survey responses from spt_get_survey_responses
     ******************************************************/
    if ($workorderno > 0) {
        $sql = "CALL spt_get_survey_responses(:workorderno)";
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':workorderno', $workorderno, PDO::PARAM_INT);

        if ($stmt->execute()) {
            $surveyDetails = $stmt->fetch(PDO::FETCH_ASSOC);
            
            if ($surveyDetails) {
                // Merge survey details into existing session list
                foreach ($surveys as &$survey) {
                    if ($survey['workorderno'] == $workorderno) {
                        $survey = array_merge($survey, $surveyDetails);
                    }
                }
            }
        }

        $stmt->closeCursor();
    }

    /******************************************************
     * Step 3: Ensure all key fields exist in the final response
     ******************************************************/
    foreach ($surveys as &$survey) {
        $survey['equipmenttype'] = $survey['equipmenttype'] ?? "N/A";
        $survey['measuretype'] = $survey['measuretype'] ?? "N/A";
        $survey['measuredistance'] = $survey['measuredistance'] ?? "N/A";
        $survey['measureangle'] = $survey['measureangle'] ?? "N/A";
        $survey['measurex'] = $survey['measurex'] ?? "N/A";
        $survey['measurey'] = $survey['measurey'] ?? "N/A";
        $survey['liftweight'] = $survey['liftweight'] ?? "N/A";
        $survey['wallheight'] = $survey['wallheight'] ?? "N/A";
        $survey['ledge'] = $survey['ledge'] ?? "N/A";
        $survey['terrainweight'] = $survey['terrainweight'] ?? "N/A";
        $survey['openingheight'] = $survey['openingheight'] ?? "N/A";
        $survey['openingwidth'] = $survey['openingwidth'] ?? "N/A";
        $survey['entereddate'] = $survey['entereddate'] ?? "N/A";
    }

    // Return JSON response
    echo json_encode($surveys, JSON_PRETTY_PRINT);

    // Cleanup
    $pdo = null;

} catch (PDOException $e) {
    // Return a JSON error object in production
    echo json_encode(["error" => $e->getMessage()]);
    exit;
}
?>
