<?php
namespace App\Modules\Analytics\Controllers;

class AnalyticsController extends \Core\Controller {

    public function index() {
        $model = $this->model('Analytics/Models/AnalyticsModel');

        // Fetch standard analytics
        $taskData    = $model->getTaskCompletion($this->userId, 30);
        $weightData  = $model->getWeightTrend($this->userId, 90);
        $financeData = $model->getIncomeVsExpense($this->userId, 6);
        $skillsData  = $model->getSkillLevels($this->userId);

        // Core Intelligence Injection
        require_once __DIR__ . '/../../../../core/Services/BehaviorIntelligenceService.php';
        $intelligenceService = new \Core\Services\BehaviorIntelligenceService();
        $disciplineScore = $intelligenceService->getUnifiedDisciplineScore($this->userId);

        // Advisor Engine Integration
        require_once __DIR__ . '/../../../../core/Services/AdvisorEngine.php';
        $advisorEngine = new \Core\Services\AdvisorEngine();
        $advisorData = $advisorEngine->generateInsights($this->userId);
        
        $topInsights = $advisorData['top'];
        $isCritical = false;
        
        if (empty($topInsights)) {
            $insight = "العمليات مستقرة بالكامل والمسار آمن. مؤشر الانضباط الكلي لك هو {$disciplineScore}/100. لا توجد تهديدات مسجلة حالياً.";
            $actions = [
                "حافظ على مستوى الزخم الحالي.",
                "استمر في تدوين يومياتك لتثبيت الهوية الإيجابية."
            ];
        } else {
            $insightText = [];
            $actionsHash = [];
            foreach ($topInsights as $item) {
                if ($item['severity'] === 'critical' || $item['severity'] === 'warning') $isCritical = true;
                $insightText[] = "<div class='mb-2'><i class='fa-solid {$item['icon']} me-1 text-" . ($item['severity'] == 'critical' ? 'danger' : 'primary') . "'></i> {$item['message']}</div>";
                
                // Formulate actions
                switch ($item['category']) {
                    case 'health': $actionsHash['راجع مؤشرات الكتلة وسجل المياه والأدوية اليومية لتثبيت الأساس الجسدي'] = true; break;
                    case 'finance': $actionsHash['راجع سجل المصروفات وفعل بروتوكول التجميد المالي للحد من النزيف'] = true; break;
                    case 'behavior': $actionsHash['قم بمراجعة العادات اليومية وحدد المحفزات السلبية لتجنبها غداً'] = true; break;
                    case 'spiritual': $actionsHash['جدد نيتك ولا تفوت وردك وصلاوتك اليوم لتصحيح المسار الروحي'] = true; break;
                    case 'cross': $actionsHash['خذ وقفة تحليل شاملة واربط بين سلوكياتك اليومية والمخاطر المذكورة'] = true; break;
                    default: $actionsHash['استمر في تسجيل التقدم لزيادة دقة التحليل الخوارزمي'] = true; break;
                }
            }
            $insight = implode("", $insightText);
            $actions = array_keys($actionsHash);
        }

        // Pre-encode for Chart.js
        $taskLabels  = array_column($taskData, 'date');
        $taskValues  = array_column($taskData, 'pct');
        $weightDates = array_column((array)$weightData, 'date');
        $weightVals  = array_column((array)$weightData, 'weight');
        $finLabels   = array_column($financeData, 'label');
        $finIncome   = array_column($financeData, 'income');
        $finExpense  = array_column($financeData, 'expense');
        $skillNames  = array_column((array)$skillsData, 'name');
        $skillLevels = array_column((array)$skillsData, 'level');

        $this->view('Analytics/Views/index', [
            'title'        => 'التحليلات والمستشار | OTIS',
            'insight'      => $insight,
            'isCritical'   => $isCritical,
            'actions'      => $actions,
            'disciplineScore' => $disciplineScore,
            'taskLabels'   => json_encode($taskLabels),
            'taskValues'   => json_encode($taskValues),
            'weightDates'  => json_encode($weightDates),
            'weightVals'   => json_encode($weightVals),
            'finLabels'    => json_encode($finLabels),
            'finIncome'    => json_encode($finIncome),
            'finExpense'   => json_encode($finExpense),
            'skillNames'   => json_encode($skillNames),
            'skillLevels'  => json_encode($skillLevels),
        ]);
    }
}
