<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\File;

class DocumentController extends Controller
{
    // Menampilkan halaman upload & list file
    public function index()
    {
        // Kita ambil list file langsung dari folder rag_engine
        $path = env('RAG_DOCUMENTS_PATH');
        
        // Cek apakah folder ada
        if (!File::exists($path)) {
            // Jika folder belum ada (untuk testing), buat array kosong
            $files = [];
        } else {
            $files = File::files($path);
        }

        return view('admin.documents.index', compact('files'));
    }

    // Proses Upload & Trigger Ingestion
    public function store(Request $request)
    {
        $request->validate([
            'document' => 'required|mimes:pdf|max:10240', // Max 10MB
        ]);

        // 1. Ambil File
        $file = $request->file('document');
        $filename = time() . '_' . str_replace(' ', '_', $file->getClientOriginalName());
        
        // 2. Tentukan Tujuan Simpan (Folder rag_engine/documents)
        $destinationPath = env('RAG_DOCUMENTS_PATH');

        // Pastikan folder tujuan ada
        if (!File::exists($destinationPath)) {
            return back()->with('error', 'Folder tujuan dokumen tidak ditemukan. Cek konfigurasi .env');
        }

        try {
            // 3. Pindahkan File ke Folder Python
            $file->move($destinationPath, $filename);

            // 4. Panggil API Flask untuk Re-ingest (Update Otak AI)
            // Ini akan memicu endpoint /re-ingest di app.py
            $response = Http::timeout(300)->post(env('RAG_API_URL') . '/re-ingest');

            if ($response->successful()) {
                return back()->with('success', 'Dokumen berhasil diupload dan Pengetahuan Chatbot telah diperbarui!');
            } else {
                return back()->with('error', 'File terupload, tapi gagal update Chatbot: ' . $response->body());
            }

        } catch (\Exception $e) {
            return back()->with('error', 'Terjadi kesalahan: ' . $e->getMessage());
        }
    }
    public function destroy($filename)
{
    // 1. Tentukan Path File
    $path = env('RAG_DOCUMENTS_PATH') . '/' . $filename;

    // 2. Cek apakah file ada
    if (File::exists($path)) {
        try {
            // 3. Hapus File Fisik
            File::delete($path);

            // 4. Panggil API Flask untuk Re-ingest (Update Database AI)
            // Ini penting! Supaya AI "lupa" dengan isi dokumen yang dihapus.
            $response = Http::timeout(300)->post(env('RAG_API_URL') . '/re-ingest');

            if ($response->successful()) {
                return back()->with('success', 'Dokumen berhasil dihapus dan Pengetahuan Chatbot diperbarui.');
            } else {
                return back()->with('error', 'File terhapus, tapi gagal update Chatbot: ' . $response->body());
            }

        } catch (\Exception $e) {
            return back()->with('error', 'Gagal menghapus file: ' . $e->getMessage());
        }
    }

    return back()->with('error', 'File tidak ditemukan.');
}
}