<?php
header('Content-Type: application/json; charset=utf-8');
require_once '../config/database.php';
require_once '../helpers/quiz-recommendations.php';

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

if (!$data) {
    echo json_encode(['success' => false, 'message' => 'بيانات غير صحيحة']);
    exit;
}

// Validate required fields
$required = ['answers', 'personalInfo'];
foreach ($required as $field) {
    if (!isset($data[$field])) {
        echo json_encode(['success' => false, 'message' => "حقل {$field} مطلوب"]);
        exit;
    }
}

$answers = $data['answers'];
$personalInfo = $data['personalInfo'];

// Validate personal info
if (empty($personalInfo['name']) || empty($personalInfo['email']) || empty($personalInfo['age'])) {
    echo json_encode(['success' => false, 'message' => 'الرجاء إكمال جميع الحقول المطلوبة']);
    exit;
}

try {
    $database = new Database();
    $conn = $database->getConnection();
    
    // تحليل الإجابات
    $analysis = analyzeQuizAnswers($answers, $conn);
    
    // الحصول على توصيات المنتجات
    $recommendations = getProductRecommendations($analysis['skin_type'], $analysis['concerns'], $conn);
    
    // حساب النتيجة
    $score = calculateQuizScore($answers, $analysis);
    
    // إنشاء نص التحليل
    $analysisText = generateAnalysisText($analysis);
    
    // Check if user is logged in
    $userId = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : null;
    
    // حفظ النتيجة في قاعدة البيانات
    $stmt = $conn->prepare("
        INSERT INTO skin_quiz_results 
        (user_id, name, email, phone, age, gender, quiz_answers, skin_type, skin_concerns, recommended_products, score, analysis_text)
        VALUES 
        (:user_id, :name, :email, :phone, :age, :gender, :quiz_answers, :skin_type, :skin_concerns, :recommended_products, :score, :analysis_text)
    ");
    
    $stmt->execute([
        ':user_id' => $userId,
        ':name' => $personalInfo['name'],
        ':email' => $personalInfo['email'],
        ':phone' => $personalInfo['phone'] ?? null,
        ':age' => $personalInfo['age'],
        ':gender' => $personalInfo['gender'] ?? 'female',
        ':quiz_answers' => json_encode($answers, JSON_UNESCAPED_UNICODE),
        ':skin_type' => $analysis['skin_type'],
        ':skin_concerns' => json_encode($analysis['concerns'], JSON_UNESCAPED_UNICODE),
        ':recommended_products' => json_encode($recommendations, JSON_UNESCAPED_UNICODE),
        ':score' => $score,
        ':analysis_text' => $analysisText
    ]);
    
    $resultId = $conn->lastInsertId();
    
    // إرسال إيميل (اختياري - يمكن تفعيله لاحقاً)
    // sendQuizResultEmail($personalInfo['email'], $personalInfo['name'], $resultId);
    
    echo json_encode([
        'success' => true,
        'message' => 'تم حفظ النتيجة بنجاح',
        'result_id' => $resultId,
        'score' => $score,
        'skin_type' => $analysis['skin_type']
    ]);
    
} catch (Exception $e) {
    error_log("Quiz submission error: " . $e->getMessage());
    echo json_encode([
        'success' => false,
        'message' => 'حدث خطأ أثناء حفظ النتيجة: ' . $e->getMessage()
    ]);
}

/**
 * تحليل إجابات الاختبار
 */
function analyzeQuizAnswers($answers, $conn) {
    $skinTypeScores = [
        'oily' => 0,
        'dry' => 0,
        'combination' => 0,
        'normal' => 0,
        'sensitive' => 0
    ];
    
    $concerns = [];
    
    foreach ($answers as $questionId => $answerData) {
        foreach ($answerData as $answer) {
            // تحديد نوع البشرة
            if ($answer['category'] === 'skin_type') {
                if (isset($answer['value']) && isset($skinTypeScores[$answer['value']])) {
                    $skinTypeScores[$answer['value']] += 3;
                }
                
                // من الإجابات الأخرى
                if (isset($answer['score'])) {
                    $scoreType = $answer['score'];
                    if (isset($skinTypeScores[$scoreType])) {
                        $skinTypeScores[$scoreType] += 2;
                    }
                }
            }
            
            // جمع المشاكل
            if ($answer['category'] === 'concerns' && isset($answer['value'])) {
                $concerns[] = $answer['value'];
            }
        }
    }
    
    // تحديد نوع البشرة الأكثر احتمالاً
    arsort($skinTypeScores);
    $skinType = array_key_first($skinTypeScores);
    
    // إذا كانت النتائج متقاربة جداً، قد تكون البشرة مختلطة
    $topScores = array_slice($skinTypeScores, 0, 2, true);
    if (count($topScores) === 2) {
        $diff = abs($topScores[array_key_first($topScores)] - $topScores[array_key_last($topScores)]);
        if ($diff <= 2) {
            $skinType = 'combination';
        }
    }
    
    return [
        'skin_type' => $skinType,
        'concerns' => array_unique($concerns),
        'skin_type_scores' => $skinTypeScores
    ];
}

/**
 * حساب النتيجة الإجمالية
 */
function calculateQuizScore($answers, $analysis) {
    $score = 50; // نقطة البداية
    
    // إضافة نقاط بناءً على الروتين
    foreach ($answers as $questionId => $answerData) {
        foreach ($answerData as $answer) {
            if ($answer['category'] === 'routine' && isset($answer['score'])) {
                $score += intval($answer['score']) * 5;
            }
            
            if ($answer['category'] === 'lifestyle' && isset($answer['score'])) {
                $score += intval($answer['score']) * 3;
            }
        }
    }
    
    // خصم نقاط بناءً على عدد المشاكل
    $concernsCount = count($analysis['concerns']);
    $score -= ($concernsCount * 3);
    
    // التأكد من أن النتيجة بين 0 و 100
    $score = max(0, min(100, $score));
    
    return $score;
}

/**
 * إنشاء نص التحليل
 */
function generateAnalysisText($analysis) {
    $skinTypeTexts = [
        'oily' => 'بشرتك من النوع الدهني، تتميز بإفراز زائد للزيوت مما قد يؤدي لظهور اللمعان والمسام الواسعة.',
        'dry' => 'بشرتك من النوع الجاف، تحتاج إلى ترطيب عميق ومستمر لتجنب التقشر والخشونة.',
        'combination' => 'بشرتك من النوع المختلط، دهنية في منطقة T وجافة على الخدود، تحتاج لعناية متوازنة.',
        'normal' => 'بشرتك من النوع العادي المتوازن، استمري في روتينك الحالي مع الحفاظ على الترطيب والحماية.',
        'sensitive' => 'بشرتك من النوع الحساس، تحتاج لمنتجات لطيفة خالية من المواد المهيجة.'
    ];
    
    $text = $skinTypeTexts[$analysis['skin_type']] ?? '';
    
    if (!empty($analysis['concerns'])) {
        $text .= "\n\nالمشاكل الرئيسية: ";
        $concernTexts = [
            'acne' => 'حب الشباب',
            'dark_spots' => 'البقع الداكنة',
            'wrinkles' => 'التجاعيد',
            'dryness' => 'الجفاف',
            'large_pores' => 'المسام الواسعة',
            'dullness' => 'البشرة الباهتة',
            'dark_circles' => 'الهالات السوداء',
            'redness' => 'الاحمرار'
        ];
        
        $concerns = array_map(function($c) use ($concernTexts) {
            return $concernTexts[$c] ?? $c;
        }, $analysis['concerns']);
        
        $text .= implode('، ', $concerns);
    }
    
    return $text;
}
?>
