<?php
namespace App\Modules\Advisor\Models;

class AdvisorModel extends \Core\Model {
    protected $moduleName = 'Advisor';
    protected $useSoftDeletes = false; // Read-only recommendation engine

    public function analyzeUserLearning($userId) {
        $analysis = [
            'strong_skills' => [],
            'weak_skills' => [],
            'stalled_courses' => [],
            'learning_velocity' => 'متوسط', 
            'recommendations' => [],
            'last_analyzed' => date('Y-m-d H:i:s')
        ];

        // 1. Fetch Skills
        $skills = $this->query("SELECT * FROM edu_skills WHERE user_id = ? AND deleted_at IS NULL ORDER BY level DESC, progress_percent DESC", [$userId])->fetchAll();
        
        if (!empty($skills)) {
            $analysis['strong_skills'] = array_slice($skills, 0, 3);
            
            // Get weakest skills (progress < 50 for early levels is weak)
            $weakest = array_filter($skills, fn($s) => $s->progress_percent < 50 && $s->level < 5);
            usort($weakest, fn($a, $b) => $a->progress_percent <=> $b->progress_percent);
            $analysis['weak_skills'] = array_slice($weakest, 0, 3);
        }

        // 2. Fetch Courses
        $courses = $this->query("SELECT * FROM edu_courses WHERE user_id = ? AND deleted_at IS NULL", [$userId])->fetchAll();
        
        $stalled = array_filter($courses, fn($c) => $c->status === 'learning' && $c->progress_percent < 100);
        usort($stalled, fn($a, $b) => strcmp($a->updated_at ?? '2000-01-01', $b->updated_at ?? '2000-01-01')); // oldest updated first
        $analysis['stalled_courses'] = array_slice($stalled, 0, 3);

        $notStarted = array_filter($courses, fn($c) => $c->status === 'planned');

        // 3. Generate Smart Recommendations
        
        // REC 1: What to learn now? (Focus on weakest skill)
        if (!empty($analysis['weak_skills'])) {
            $targetSkill = $analysis['weak_skills'][0];
            $analysis['recommendations'][] = [
                'type' => 'focus',
                'title' => 'ركز على مهارة: ' . htmlspecialchars($targetSkill->name),
                'description' => "مستوى إتقانك لهذه المهارة هو {$targetSkill->progress_percent}% حتى المستوى التالي. خصص 30 دقيقة اليوم لتطويرها للوصول للمستوى التالي.",
                'action_text' => 'أضف كـ مهمة تركيز ليومك',
                'action_url' => '/advisor/createTask',
                'action_params' => [
                    'title' => 'تطوير مهارة ' . $targetSkill->name,
                    'category' => $targetSkill->track_name ?? 'التعلم',
                    'skill_id' => $targetSkill->id
                ],
                'icon' => 'fa-solid fa-dumbbell',
                'color' => 'warning'
            ];
        }

        // REC 2: What to complete? (Stalled course)
        if (!empty($analysis['stalled_courses'])) {
            $targetCourse = (object)$analysis['stalled_courses'][0];
            $titleStr = $targetCourse->title ?? '';
            $progressStr = $targetCourse->progress_percent ?? 0;
            $analysis['recommendations'][] = [
                'type' => 'complete',
                'title' => 'استكمل دورة: ' . htmlspecialchars($titleStr),
                'description' => "لقد توقفت عند {$progressStr}%. أكمل درساً وحداً اليوم للحفاظ على زخم الاستمرارية.",
                'action_text' => 'جدولة هذا الأسبوع',
                'action_url' => '/advisor/createCalendarEvent',
                'action_params' => [
                    'title' => 'مذاكرة كورس ' . $titleStr,
                    'category' => 'education'
                ],
                'icon' => 'fa-solid fa-forward-step',
                'color' => 'primary'
            ];
        }

        // REC 3: What to start? (Planned courses)
        if (!empty($notStarted)) {
            $targetStart = array_values($notStarted)[0];
            $analysis['recommendations'][] = [
                'type' => 'start',
                'title' => 'ابدأ انطلاقة جديدة: ' . htmlspecialchars($targetStart->title),
                'description' => 'هذا الكورس موجود في خطتك ولم تبدأه بعد. الانطلاق هو نصف الإنجاز، ابدأ اليوم بتصفح الفهرس.',
                'action_text' => 'ابدأ الكورس الآن',
                // We will direct to education dashboard where they can manage it
                'action_url' => '/education',
                'icon' => 'fa-solid fa-rocket',
                'color' => 'success'
            ];
        }
        
        // Fallback Logic if everything is perfect
        if(empty($analysis['recommendations'])) {
            $analysis['recommendations'][] = [
                'type' => 'celebrate',
                'title' => 'أداء مثالي!',
                'description' => 'ليس لديك كورسات متأخرة أو مهارات ضعيفة جداً. أنت في المسار الصحيح. استمر في البناء ولا تتوقف!',
                'action_text' => 'راجع يومياتك',
                'action_url' => '/todo',
                'icon' => 'fa-regular fa-star',
                'color' => 'info'
            ];
        }

        return $analysis;
    }
}
