<?php

namespace App\Controllers;

class AiController extends BaseController
{
    public function chatbot()
    {
        $message = strtolower($this->request->getVar('message') ?: '');
        $reply = '';

        if (empty($message)) {
            return $this->response->setJSON([
                'status' => 'error',
                'message' => 'Pesan tidak boleh kosong'
            ])->setStatusCode(400);
        }

        // Local semantic routing for chatbot answers
        if (strpos($message, 'pinjam') !== false || strpos($message, 'kredit') !== false || strpos($message, 'loan') !== false) {
            $reply = "💳 **Informasi Pinjaman Digital KopMart:**\n" .
                     "1. Anda dapat mengajukan pinjaman mulai dari Rp500.000 secara online.\n" .
                     "2. Bunga flat **1.5% per bulan**.\n" .
                     "3. Tenor tersedia: **3, 6, 12, dan 24 bulan**.\n" .
                     "4. Pengajuan memerlukan persetujuan berjenjang: Staff Keuangan (Tingkat 1) dan Ketua Koperasi (Tingkat 2). Dana langsung masuk ke saldo digital Anda setelah disetujui.";
        } else if (strpos($message, 'simpan') !== false || strpos($message, 'tabung') !== false || strpos($message, 'saving') !== false) {
            $reply = "💰 **Informasi Simpanan Koperasi:**\n" .
                     "Kami menyediakan 3 jenis simpanan:\n" .
                     "- **Simpanan Pokok:** Dibayar sekali saat mendaftar.\n" .
                     "- **Simpanan Wajib:** Dibayar rutin setiap bulan.\n" .
                     "- **Simpanan Sukarela:** Setoran bebas kapan saja untuk menambah porsi modal Anda.\n\n" .
                     "Semakin besar simpanan Anda, semakin besar pula porsi pembagian SHU tahunan Anda!";
        } else if (strpos($message, 'shu') !== false || strpos($message, 'hasil usaha') !== false) {
            $reply = "📈 **Mekanisme Perhitungan SHU Otomatis:**\n" .
                     "Sisa Hasil Usaha (SHU) dibagikan secara transparan tiap tahun berdasarkan:\n" .
                     "- **Porsi Simpanan (40%):** Dihitung dari rasio tabungan Anda dibanding total tabungan koperasi.\n" .
                     "- **Porsi Transaksi (60%):** Dihitung dari total volume belanja Anda di Marketplace KopMart dibanding total transaksi.\n\n" .
                     "Belanja dan menabung lebih banyak untuk memaksimalkan SHU Anda!";
        } else if (strpos($message, 'order') !== false || strpos($message, 'kirim') !== false || strpos($message, 'lacak') !== false || strpos($message, 'pesan') !== false) {
            $reply = "📦 **Status Pengiriman & Pesanan:**\n" .
                     "Anda dapat melacak pesanan Anda di tab 'Pesanan' pada aplikasi mobile. Status pesanan meliputi:\n" .
                     "- *Menunggu Pembayaran*: Jika belum membayar.\n" .
                     "- *Diproses*: Seller sedang mempacking barang.\n" .
                     "- *Dikirim*: Barang sedang dalam perjalanan kurir.\n" .
                     "- *Diterima/Selesai*: Barang sudah sampai dan dikonfirmasi.";
        } else if (strpos($message, 'saldo') !== false || strpos($message, 'topup') !== false || strpos($message, 'bayar') !== false) {
            $reply = "📱 **KopMart Pay (Saldo Koperasi):**\n" .
                     "Gunakan saldo KopMart untuk transaksi instan tanpa biaya admin!\n" .
                     "- Anda dapat melakukan top-up melalui transfer bank.\n" .
                     "- Saldo dapat digunakan untuk belanja di Marketplace, membayar tagihan, atau melakukan transfer antar anggota.";
        } else {
            $reply = "👋 Halo! Saya **KopMart AI Assistant**. Saya dapat membantu Anda tentang:\n" .
                     "- 💳 Syarat & pengajuan **Pinjaman online**\n" .
                     "- 💰 Jenis-jenis **Simpanan** koperasi\n" .
                     "- 📈 Cara hitung **SHU tahunan** secara otomatis\n" .
                     "- 📦 Pelacakan status **Pesanan & Pengiriman**\n\n" .
                     "Silakan ajukan pertanyaan Anda!";
        }

        return $this->response->setJSON([
            'status' => 'success',
            'sender' => 'KopMart AI',
            'reply' => $reply
        ]);
    }

    public function sellerAssistant()
    {
        $keywords = $this->request->getVar('keywords') ?: '';
        if (empty($keywords)) {
            return $this->response->setJSON([
                'status' => 'error',
                'message' => 'Kata kunci produk diperlukan'
            ])->setStatusCode(400);
        }

        // Mock AI generator based on input keyword
        $title = "Premium " . ucwords($keywords);
        $tags = str_replace(' ', ', ', strtolower($keywords)) . ", premium, berkualitas, umkm, koperasi, terlaris";
        
        $description = "Membawa kehangatan dan kebanggaan lokal, " . ucwords($keywords) . " Premium ini diproduksi dengan cinta oleh pengrajin/produsen lokal mitra Koperasi KopMart.\n\n" .
                       "**Kenapa Memilih Produk Ini?**\n" .
                       "- Bahan baku 100% alami pilihan berkualitas tinggi.\n" .
                       "- Membantu pertumbuhan ekonomi UMKM lokal koperasi.\n" .
                       "- Pengemasan higienis, rapi, dan ramah lingkungan.\n\n" .
                       "Dapatkan keuntungan berupa poin reward dan sisa hasil usaha (SHU) koperasi untuk setiap transaksi belanja Anda di KopMart. Pesan sekarang sebelum kehabisan!";

        return $this->response->setJSON([
            'status' => 'success',
            'ai_model' => 'KopMart-NLP-Gen-v2.6',
            'generated' => [
                'title' => $title,
                'tags' => $tags,
                'description' => $description
            ]
        ]);
    }

    public function reviewAnalysis()
    {
        $reviewText = $this->request->getVar('review_text') ?: '';
        if (empty($reviewText)) {
            return $this->response->setJSON([
                'status' => 'error',
                'message' => 'Teks ulasan diperlukan'
            ])->setStatusCode(400);
        }

        // Mock Sentiment Analysis Engine
        $text = strtolower($reviewText);
        $positiveKeywords = ['bagus', 'mantap', 'puas', 'cepat', 'enak', 'ramah', 'keren', 'premium', 'recomended', 'suka', 'cinta'];
        $negativeKeywords = ['kecewa', 'jelek', 'lambat', 'rusak', 'kurang', 'buruk', 'mahal', 'pecah', 'nyesel', 'salah'];

        $posCount = 0;
        $negCount = 0;
        $extractedKeywords = [];

        foreach ($positiveKeywords as $word) {
            if (strpos($text, $word) !== false) {
                $posCount++;
                $extractedKeywords[] = $word;
            }
        }

        foreach ($negativeKeywords as $word) {
            if (strpos($text, $word) !== false) {
                $negCount++;
                $extractedKeywords[] = $word;
            }
        }

        $sentiment = 'Neutral';
        $score = 0.5;

        if ($posCount > $negCount) {
            $sentiment = 'Positive';
            $score = 0.7 + ($posCount * 0.05);
            if ($score > 1.0) $score = 1.0;
        } else if ($negCount > $posCount) {
            $sentiment = 'Negative';
            $score = 0.3 - ($negCount * 0.05);
            if ($score < 0.0) $score = 0.0;
        }

        return $this->response->setJSON([
            'status' => 'success',
            'ai_model' => 'KopMart-Sentiment-Analyzer-v1.0',
            'analysis' => [
                'sentiment' => $sentiment,
                'confidence_score' => $score,
                'detected_sentiment_keywords' => array_unique($extractedKeywords),
                'action_recommendation' => ($sentiment === 'Negative') 
                    ? 'Hubungi pelanggan segera untuk memberikan kompensasi atau retur produk.' 
                    : 'Terima kasih atas ulasan positif! Bagikan ulasan ini ke media sosial toko.'
            ]
        ]);
    }
}
