<?php
/**
 * Calculate and Return Analysis Results
 * حساب وإرجاع نتائج التحليل
 */

header('Content-Type: application/json');
require_once '../config/database.php';

// Initialize database connection
$database = new Database();
$conn = $database->getConnection();

if (!$conn) {
    echo json_encode([
        'success' => false,
        'message' => 'Database connection failed'
    ]);
    exit;
}

$input = json_decode(file_get_contents('php://input'), true);

if (!isset($input['session_id'])) {
    echo json_encode([
        'success' => false,
        'message' => 'Session ID is required'
    ]);
    exit;
}

$sessionId = $input['session_id'];

try {
    // Get detected concerns
    $stmt = $conn->prepare("
        SELECT * FROM skin_concerns_detected 
        WHERE session_id = ? 
        ORDER BY severity_level DESC, concern_count DESC
    ");
    $stmt->execute([$sessionId]);
    $concerns = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    if (empty($concerns)) {
        echo json_encode([
            'success' => false,
            'message' => 'No concerns found for this session'
        ]);
        exit;
    }
    
    // Get selected symptoms
    $stmt = $conn->prepare("
        SELECT ss.*, avs.severity_weight 
        FROM selected_symptoms ss
        JOIN available_symptoms avs ON ss.symptom_id = avs.id
        WHERE ss.session_id = ?
    ");
    $stmt->execute([$sessionId]);
    $symptoms = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Calculate severity score
    $baseScore = 0;
    $severityWeights = [
        'low' => 1.0,
        'medium' => 1.5,
        'high' => 2.0,
        'critical' => 2.5
    ];
    
    foreach ($concerns as $concern) {
        $weight = $severityWeights[$concern['severity_level']] ?? 1.0;
        $baseScore += ($concern['concern_count'] * $weight * 10);
    }
    
    // Add symptom weights
    $symptomScore = 0;
    foreach ($symptoms as $symptom) {
        $symptomScore += ($symptom['severity_weight'] * 5);
    }
    
    $totalScore = $baseScore + $symptomScore;
    
    // Normalize to percentage (0-100)
    $maxPossibleScore = 100;
    $severityPercentage = min(100, round(($totalScore / $maxPossibleScore) * 100));
    
    // Determine risk level
    $riskLevel = 'low';
    if ($severityPercentage >= 75) {
        $riskLevel = 'critical';
    } elseif ($severityPercentage >= 50) {
        $riskLevel = 'high';
    } elseif ($severityPercentage >= 25) {
        $riskLevel = 'moderate';
    }
    
    // Get primary concern
    $primaryConcern = $concerns[0]['concern_type'];
    
    // Check if result already exists
    $stmt = $conn->prepare("SELECT id FROM analysis_results WHERE session_id = ?");
    $stmt->execute([$sessionId]);
    $existingResult = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($existingResult) {
        // Update existing result
        $stmt = $conn->prepare("
            UPDATE analysis_results 
            SET overall_score = ?, severity_percentage = ?, risk_level = ?, primary_concern = ?
            WHERE session_id = ?
        ");
        $stmt->execute([100 - $severityPercentage, $severityPercentage, $riskLevel, $primaryConcern, $sessionId]);
        $resultId = $existingResult['id'];
    } else {
        // Insert new result
        $stmt = $conn->prepare("
            INSERT INTO analysis_results 
            (session_id, overall_score, severity_percentage, risk_level, primary_concern) 
            VALUES (?, ?, ?, ?, ?)
        ");
        $stmt->execute([$sessionId, 100 - $severityPercentage, $severityPercentage, $riskLevel, $primaryConcern]);
        $resultId = $conn->lastInsertId();
    }
    
    // Update session status
    $stmt = $conn->prepare("UPDATE skin_analysis_sessions SET status = 'completed', completed_at = NOW() WHERE id = ?");
    $stmt->execute([$sessionId]);
    
    // Get recommended clinics (mock data for now)
    $clinics = [
        [
            'id' => 1,
            'name' => 'عيادة النضارة للجلدية',
            'rating' => 4.8,
            'distance' => '1.5 كم',
            'image' => 'assets/images/clinic1.jpg'
        ],
        [
            'id' => 2,
            'name' => 'مركز الجمال الطبي',
            'rating' => 4.6,
            'distance' => '2.3 كم',
            'image' => 'assets/images/clinic2.jpg'
        ],
        [
            'id' => 3,
            'name' => 'عيادة د. سارة للتجميل',
            'rating' => 4.9,
            'distance' => '3.1 كم',
            'image' => 'assets/images/clinic3.jpg'
        ]
    ];
    
    echo json_encode([
        'success' => true,
        'result' => [
            'id' => $resultId,
            'overall_score' => 100 - $severityPercentage,
            'severity_percentage' => $severityPercentage,
            'risk_level' => $riskLevel,
            'primary_concern' => $primaryConcern,
            'concerns_count' => count($concerns),
            'symptoms_count' => count($symptoms)
        ],
        'clinics' => $clinics,
        'message' => 'Results calculated successfully'
    ]);
    
} catch (PDOException $e) {
    echo json_encode([
        'success' => false,
        'message' => 'Database error: ' . $e->getMessage()
    ]);
}
?>
