<?php

namespace App\Controllers;
use App\Models\DasboardModel;
use App\Models\TutorialModel;
use App\Models\InfoModel; 
use Parsedown;

class Home extends BaseController
{

    protected $dasboard;
    protected $tutorial;
    protected $infografis;

    public function __construct()
    {

     $this->dasboard = new DasboardModel();
     $this->tutorial = new TutorialModel();
     $this->infografis = new InfoModel();
 }


 public function index(): string
 {
    $data = [
        'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
        'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
        'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
        'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
        'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip'),
        'dokumen_terbaru' => $this->dasboard->getDokumenMix(),
        'tutorial_terbaru' => $this->tutorial->getTutorialterbaru(),
    ];
    return view('user/dasboard',$data);
}

    // Tambahkan parameter $type di dalam kurung fungsi
public function dokumenfile()
{
         // 1. Ambil semua data dokumen secara berurutan dari yang terbaru
    $allDokumen = $this->dasboard->orderBy('id', 'DESC')->findAll();

        // 2. Siapkan wadah kosong untuk mengelompokkan data sesuai ekspektasi JavaScript
    $database = [
        'word'  => [],
        'excel' => [],
        'ppt'   => [],
        'pdf'   => [],
        'zip'   => []
    ];

        // 3. Lakukan looping untuk memilah data berdasarkan kolom 't_dokumen'
    foreach ($allDokumen as $row) {
            // Ubah ke lowercase untuk mengantisipasi ketidaksesuaian huruf kapital
        $tipe = strtolower($row['t_dokumen']); 

        if (array_key_exists($tipe, $database)) {
            $database[$tipe][] = [
                'id'        => $row['id'],
                    'n_dokumen' => $row['n_dokumen'], // Pastikan nama kolom di DB Anda adalah n_dokumen
                    'link_dokumen' => $row['link_dokumen'] // Pastikan nama kolom di DB Anda adalah n_dokumen
                ];
            }
        }

        // 4. Kirim data ke view
        $data['database'] = $database;
        $data['tutorial_terbaru'] = $this->tutorial->getTutorialterbaru();
        $data['pojok_terbaru'] = $this->tutorial->getPojokterbaru();
        $data['info_terbaru'] = $this->infografis->getInfografisterbaru();
        // Opsional: jika Anda tetap butuh data mentah tanpa dikelompokkan
        $data['dokumen'] = $allDokumen; 

        return view('user/dokumenfile', $data);
    }

    public function tutorial()
    {
        // 1. Ambil data yang khusus memiliki jenis 'tutorial'
        $allTutorial = $this->tutorial->where('jenis', 'tutorial')->findAll();

        // 2. Format data ke bentuk struktur yang dipahami JavaScript kamu
        $formattedData = [];
        foreach ($allTutorial as $row) {
            $formattedData[] = [
        'id'           => $row['id'], // Ambil ID untuk parameter link baca
        'tipe'         => ucfirst($row['kategori'] ?? 'Umum'),
        'warnaCover'   => '#ede9fe',  // Satu warna netral
        'icon'         => '📄',        // Satu icon netral
        'judul'        => esc($row['judul'] ?? ''),
        'meta'         => 'Panduan Baca', 
        'tags'         => !empty($row['kategori']) ? [esc($row['kategori'])] : ['Dokumen'],
        // Kolom 'isi' tetap disimpan di memory untuk kebutuhan lain, tapi tidak akan dicetak di card
        'isi'          => $row['isi'] ?? '' 
    ];
}

$data = [
    'json_database' => json_encode($formattedData),
    'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
    'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
    'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
    'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
    'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip'),
     'pojok_terbaru' => $this->tutorial->getPojokterbaru(),
     'info_terbaru' => $this->infografis->getInfografisterbaru(),
];

return view('user/tutorial',$data);
}

public function infografis()
{
     // 1. Ambil data yang khusus memiliki jenis 'infografis'
    $allInfografis = $this->infografis->where('jenis', 'infografis')->findAll();

        // 2. Format data ke bentuk struktur yang dipahami JavaScript kamu
    $formattedData = [];

    foreach ($allInfografis as $row) {
        $drive_id = $row['tautan']; 
        $url_gambar = "https://lh3.googleusercontent.com/d/" . $drive_id;
        $formattedData[] = [
        'id'           => $row['id'], // Ambil ID untuk parameter link baca
        'kategori'         => ucfirst($row['kategori'] ?? 'Umum'),
        'warnaKat'   => '#15803d',  // Satu warna netral
        'icon'         => $url_gambar ,
        'judul'        => esc($row['judul'] ?? '')
    ];
}

$data = [
    'json_database' => json_encode($formattedData),
    'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
    'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
    'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
    'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
    'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip'),
    'pojok_terbaru' => $this->tutorial->getPojokterbaru(),
    'tutorial_terbaru' => $this->tutorial->getTutorialterbaru(),
];

return view('user/infografis',$data);
}


public function perpustakaan()
{
     // 1. Ambil data yang khusus memiliki jenis 'infografis'
    $allPerpus = $this->infografis->where('jenis', 'perpustakaan')->findAll();

        // 2. Format data ke bentuk struktur yang dipahami JavaScript kamu
    $formattedData = [];

    foreach ($allPerpus as $row) {
        $formattedData[] = [
        'id'           => $row['id'], // Ambil ID untuk parameter link baca
        'kategori'         => ucfirst($row['kategori'] ?? 'Umum'),
        'warnaKat'   => '#fce7f3',  // Satu warna netral
        'icon'         => '📕' ,
        'judul'        => esc($row['judul'] ?? '')
    ];
}

$data = [
    'json_database' => json_encode($formattedData),
    'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
    'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
    'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
    'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
    'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip'),
    'tutorial_terbaru' => $this->tutorial->getTutorialterbaru(),
];

return view('user/perpustakaan',$data);
}

public function pojokilmu()
{
    // 1. Ambil data yang khusus memiliki jenis 'tutorial'
    $allPojok = $this->tutorial->where('jenis', 'pojok_ilmu')->findAll();

        // 2. Format data ke bentuk struktur yang dipahami JavaScript kamu
    $formattedData = [];
    foreach ($allPojok as $row) {
        $formattedData[] = [
        'id'           => $row['id'], // Ambil ID untuk parameter link baca
        'tipe'         => ucfirst($row['kategori'] ?? 'Umum'),
        'warnaCover'   => '#ede9fe',  // Satu warna netral
        'icon'         => '💡',        // Satu icon netral
        'judul'        => esc($row['judul'] ?? ''),
        'meta'         => 'Panduan Baca', 
        'tags'         => !empty($row['kategori']) ? [esc($row['kategori'])] : ['Dokumen'],
        // Kolom 'isi' tetap disimpan di memory untuk kebutuhan lain, tapi tidak akan dicetak di card
        'isi'          => $row['isi'] ?? '' 
    ];
}

$data = [
    'json_database' => json_encode($formattedData),
    'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
    'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
    'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
    'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
    'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip'),
     'tutorial_terbaru' => $this->tutorial->getTutorialterbaru(),
];

return view('user/pojokilmu',$data);
}

public function tools()
{
    $data = [
        'pojok_terbaru' => $this->tutorial->getPojokterbaru(),
    'tutorial_terbaru' => $this->tutorial->getTutorialterbaru(),
        'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
    'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
    'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
    'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
    'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip'),
    'info_terbaru' => $this->infografis->getInfografisterbaru()
    ];

    return view('user/tools',$data);
}

public function kontak()
{
    return view('user/kontak');
}

public function detdoc()
{
    // 1. Ambil data 'id' dan 'type' dari URL Query String
    $id   = $this->request->getGet('id');
    $type = $this->request->getGet('type'); // Jika nanti kamu butuh variabel $type

    // 2. Validasi jika ID tidak ada di URL
    if (!$id) {
        throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Dokumen tidak ditemukan.");
    }



    // 4. Cari data berdasarkan ID yang diambil dari URL
    $dokumen = $this->dasboard->find($id);

    if (!$dokumen) {
        throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Dokumen dengan ID $id tidak ditemukan.");
    }

    // 5. Kirim ke View

    $data = [
        'title'   => 'Detail - ' . $dokumen['n_dokumen'],
        'dokumen' => $dokumen,
        'type'    => $type, // Dikirim ke view jika sewaktu-waktu ingin mengecek tipe file
        'tutorial_terbaru' => $this->tutorial->getTutorialterbaru(),
        'pojok_terbaru' => $this->tutorial->getPojokterbaru(),
        'info_terbaru' => $this->infografis->getInfografisterbaru()
    ];

    return view('user/detail_dokumen', $data);
}

public function baca($id)
{
    // Ambil hanya 1 baris data berdasarkan ID yang diklik
    $tutorial = $this->tutorial->find($id);

    // Jika data tidak ditemukan di database, balikkan ke halaman utama
    if (!$tutorial) {
        return redirect()->to(base_url('tutorial'))->with('error', 'Data tidak ditemukan');
    }

    // Inisialisasi Parsedown
    $parsedown = new Parsedown();

    $tutorial['isi_html'] = $parsedown->text($tutorial['isi']);

    $data = [
        'tutorial' => $tutorial
    ];

    // Panggil view baca ini (misal namanya baca_view.php)
    return view('user/baca_tutorial', $data);
}


public function pojok_ilmu($id)
{
    // Ambil hanya 1 baris data berdasarkan ID yang diklik
    $pojok = $this->tutorial->find($id);

    // Jika data tidak ditemukan di database, balikkan ke halaman utama
    if (!$pojok) {
        return redirect()->to(base_url('tutorial'))->with('error', 'Data tidak ditemukan');
    }

    // Inisialisasi Parsedown
    $parsedown = new Parsedown();

    $pojok['isi_html'] = $parsedown->text($pojok['isi']);

    $data = [
        'pojok' => $pojok,
        'tutorial_terbaru' => $this->tutorial->getTutorialterbaru()
    ];

    // Panggil view baca ini (misal namanya baca_view.php)
    return view('user/baca_pojok', $data);
}

public function lihatinfo($id)
{
    // Ambil hanya 1 baris data berdasarkan ID yang diklik
    $infografis = $this->infografis->find($id);

    // Jika data tidak ditemukan di database, balikkan ke halaman utama
    if (!$infografis) {
        return redirect()->to(base_url('infografis'))->with('error', 'Data tidak ditemukan');
    }


    $data = [
        'title'   => 'Detail - ' . $infografis['judul'],
        'infografis' => $infografis,
        'type'    => 'Gambar', // Dikirim ke view jika sewaktu-waktu ingin mengecek tipe file
        'pojok_terbaru' => $this->tutorial->getPojokterbaru(),
    'tutorial_terbaru' => $this->tutorial->getTutorialterbaru(),
        'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
    'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
    'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
    'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
    'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip')
    ];

    // Panggil view baca ini (misal namanya baca_view.php)
    return view('user/lihat_infografis', $data);
}

public function lihatperpus($id)
{
    // Ambil hanya 1 baris data berdasarkan ID yang diklik
    $infografis = $this->infografis->find($id);

    // Jika data tidak ditemukan di database, balikkan ke halaman utama
    if (!$infografis) {
        return redirect()->to(base_url('infografis'))->with('error', 'Data tidak ditemukan');
    }


    $data = [
        'title'   => 'Detail - ' . $infografis['judul'],
        'infografis' => $infografis,
        'type'    => 'PDF', // Dikirim ke view jika sewaktu-waktu ingin mengecek tipe file
         'pojok_terbaru' => $this->tutorial->getPojokterbaru(),
        'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
    'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
    'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
    'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
    'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip')
    ];

    // Panggil view baca ini (misal namanya baca_view.php)
    return view('user/lihat_perpus', $data);
}

public function resize(){

    return view('user/resize_tools');
}


public function compres(){

    return view('user/compres_image');
}

public function convert(){

    return view('user/convert_image');
}

public function qrcode(){

    return view('user/create_qr');
}

public function tandatangan(){

    return view('user/tandatangan');
}

public function about(){

    $data = [
        'total_pdf'  => $this->dasboard->hitungTotalPerTipe('pdf'),
    'total_word' => $this->dasboard->hitungTotalPerTipe('word'),
    'total_xls'  => $this->dasboard->hitungTotalPerTipe('excel'),
    'total_ppt'  => $this->dasboard->hitungTotalPerTipe('ppt'),
    'total_zip'  => $this->dasboard->hitungTotalPerTipe('zip')
    ];

    return view('user/about',$data);
}

public function kebijakan(){

    return view('user/kebijakan');
}

public function profil(){

    return view('user/profil');
}

}
