<?php
/**
 * نظام التوصيات الذكي للمنتجات
 */

/**
 * الحصول على توصيات المنتجات بناءً على نوع البشرة والمشاكل
 */
function getProductRecommendations($skinType, $concerns, $conn) {
    $recommendations = [];
    
    try {
        // البحث عن المنتجات المناسبة
        $query = "
            SELECT 
                p.id,
                p.name,
                p.description,
                p.price,
                p.discount_price,
                p.image,
                p.short_description,
                c.name as category_name
            FROM products p
            LEFT JOIN categories c ON p.category_id = c.id
            WHERE p.status = 'active'
            AND p.stock_quantity > 0
        ";
        
        // إضافة شروط بناءً على نوع البشرة
        $skinTypeKeywords = getSkinTypeKeywords($skinType);
        $concernKeywords = getConcernKeywords($concerns);
        
        $allKeywords = array_merge($skinTypeKeywords, $concernKeywords);
        
        if (!empty($allKeywords)) {
            $keywordConditions = [];
            foreach ($allKeywords as $keyword) {
                $keywordConditions[] = "(p.name LIKE '%{$keyword}%' OR p.description LIKE '%{$keyword}%' OR p.short_description LIKE '%{$keyword}%')";
            }
            $query .= " AND (" . implode(' OR ', $keywordConditions) . ")";
        }
        
        $query .= " ORDER BY 
            CASE 
                WHEN p.discount_price IS NOT NULL THEN 1
                ELSE 2
            END,
            p.created_at DESC
            LIMIT 6";
        
        $stmt = $conn->prepare($query);
        $stmt->execute();
        $products = $stmt->fetchAll(PDO::FETCH_ASSOC);
        
        // إذا لم نجد منتجات كافية، نجلب منتجات عامة
        if (count($products) < 4) {
            $generalQuery = "
                SELECT 
                    p.id,
                    p.name,
                    p.description,
                    p.price,
                    p.discount_price,
                    p.image,
                    p.short_description,
                    c.name as category_name
                FROM products p
                LEFT JOIN categories c ON p.category_id = c.id
                WHERE p.status = 'active'
                AND p.stock_quantity > 0
                ORDER BY p.created_at DESC
                LIMIT 6
            ";
            $stmt = $conn->prepare($generalQuery);
            $stmt->execute();
            $products = $stmt->fetchAll(PDO::FETCH_ASSOC);
        }
        
        foreach ($products as $product) {
            $recommendations[] = [
                'id' => $product['id'],
                'name' => $product['name'],
                'description' => $product['short_description'] ?? substr($product['description'], 0, 100),
                'price' => $product['price'],
                'discount_price' => $product['discount_price'],
                'image' => $product['image'],
                'category' => $product['category_name'],
                'reason' => getRecommendationReason($product, $skinType, $concerns)
            ];
        }
        
    } catch (Exception $e) {
        error_log("Product recommendations error: " . $e->getMessage());
    }
    
    return $recommendations;
}

/**
 * الحصول على الكلمات المفتاحية لنوع البشرة
 */
function getSkinTypeKeywords($skinType) {
    $keywords = [
        'oily' => ['دهنية', 'زيتية', 'لامعة', 'مسام', 'تحكم بالزيوت', 'ماتيفاي', 'mattifying'],
        'dry' => ['جافة', 'ترطيب', 'مرطب', 'هيالورونيك', 'سيراميد', 'hydrating', 'moisturizing'],
        'combination' => ['مختلطة', 'متوازن', 'توازن', 'balancing'],
        'normal' => ['عادية', 'متوازن', 'صيانة', 'maintenance'],
        'sensitive' => ['حساسة', 'لطيف', 'مهدئ', 'سينسيتيف', 'sensitive', 'gentle', 'soothing']
    ];
    
    return $keywords[$skinType] ?? [];
}

/**
 * الحصول على الكلمات المفتاحية للمشاكل
 */
function getConcernKeywords($concerns) {
    $allKeywords = [];
    
    $concernKeywords = [
        'acne' => ['حب الشباب', 'بثور', 'حبوب', 'أكني', 'acne', 'بنزويل', 'ساليسيليك'],
        'dark_spots' => ['تفتيح', 'بقع', 'تصبغات', 'نياسيناميد', 'فيتامين سي', 'brightening'],
        'wrinkles' => ['تجاعيد', 'شيخوخة', 'ريتينول', 'كولاجين', 'anti-aging', 'مضاد للشيخوخة'],
        'dryness' => ['جفاف', 'ترطيب', 'مرطب', 'هيالورونيك'],
        'large_pores' => ['مسام', 'تصغير المسام', 'نياسيناميد'],
        'dullness' => ['إشراق', 'نضارة', 'تفتيح', 'فيتامين سي', 'brightening'],
        'dark_circles' => ['هالات', 'عين', 'كافيين', 'eye cream'],
        'redness' => ['احمرار', 'تهدئة', 'مهدئ', 'سينتيلا', 'centella']
    ];
    
    foreach ($concerns as $concern) {
        if (isset($concernKeywords[$concern])) {
            $allKeywords = array_merge($allKeywords, $concernKeywords[$concern]);
        }
    }
    
    return $allKeywords;
}

/**
 * الحصول على سبب التوصية
 */
function getRecommendationReason($product, $skinType, $concerns) {
    $reasons = [];
    
    $skinTypeReasons = [
        'oily' => 'مناسب للبشرة الدهنية',
        'dry' => 'يوفر ترطيب عميق للبشرة الجافة',
        'combination' => 'يوازن البشرة المختلطة',
        'normal' => 'يحافظ على توازن البشرة',
        'sensitive' => 'لطيف على البشرة الحساسة'
    ];
    
    if (isset($skinTypeReasons[$skinType])) {
        $reasons[] = $skinTypeReasons[$skinType];
    }
    
    // إضافة أسباب بناءً على المشاكل
    $concernReasons = [
        'acne' => 'يساعد في علاج حب الشباب',
        'dark_spots' => 'يفتح البقع الداكنة',
        'wrinkles' => 'يقلل من ظهور التجاعيد',
        'dryness' => 'يرطب البشرة بعمق',
        'large_pores' => 'يصغر المسام الواسعة',
        'dullness' => 'يعيد النضارة والإشراق',
        'dark_circles' => 'يقلل الهالات السوداء',
        'redness' => 'يهدئ الاحمرار'
    ];
    
    foreach ($concerns as $concern) {
        if (isset($concernReasons[$concern])) {
            $reasons[] = $concernReasons[$concern];
            break; // نأخذ سبب واحد فقط
        }
    }
    
    return !empty($reasons) ? implode(' و ', $reasons) : 'موصى به لبشرتك';
}

/**
 * الحصول على نصائح العناية بناءً على نوع البشرة
 */
function getSkinCareTips($skinType, $concerns) {
    $tips = [];
    
    // نصائح عامة لكل نوع بشرة
    $skinTypeTips = [
        'oily' => [
            'استخدمي غسول خفيف مرتين يومياً',
            'تجنبي المنتجات الزيتية الثقيلة',
            'استخدمي تونر قابض للمسام',
            'لا تنسي المرطب الخفيف حتى للبشرة الدهنية'
        ],
        'dry' => [
            'استخدمي مرطب غني بالزيوت الطبيعية',
            'تجنبي الماء الساخن عند الغسيل',
            'استخدمي سيروم الهيالورونيك أسيد',
            'اشربي كمية كافية من الماء'
        ],
        'combination' => [
            'استخدمي منتجات متوازنة',
            'ركزي على المنطقة T بمنتجات خفيفة',
            'رطبي الخدود بمرطب أغنى',
            'استخدمي ماسك الطين مرة أسبوعياً'
        ],
        'normal' => [
            'حافظي على روتينك الحالي',
            'استخدمي واقي شمس يومياً',
            'نظفي بشرتك مرتين يومياً',
            'استخدمي مقشر لطيف مرة أسبوعياً'
        ],
        'sensitive' => [
            'استخدمي منتجات خالية من العطور',
            'اختبري المنتجات الجديدة على منطقة صغيرة أولاً',
            'تجنبي المقشرات القاسية',
            'استخدمي منتجات مهدئة تحتوي على الصبار'
        ]
    ];
    
    if (isset($skinTypeTips[$skinType])) {
        $tips = array_merge($tips, $skinTypeTips[$skinType]);
    }
    
    // نصائح إضافية بناءً على المشاكل
    if (in_array('acne', $concerns)) {
        $tips[] = 'لا تلمسي وجهك بيديك كثيراً';
        $tips[] = 'غيري غطاء الوسادة بانتظام';
    }
    
    if (in_array('dark_spots', $concerns)) {
        $tips[] = 'استخدمي واقي شمس SPF 50+ يومياً';
        $tips[] = 'استخدمي منتجات تحتوي على فيتامين C';
    }
    
    if (in_array('wrinkles', $concerns)) {
        $tips[] = 'استخدمي منتجات تحتوي على الريتينول ليلاً';
        $tips[] = 'احصلي على نوم كافٍ (7-8 ساعات)';
    }
    
    return $tips;
}
?>
