<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Inertia\Inertia;
use Illuminate\Support\Facades\Storage;
use App\Models\Gallery; // Import Model Gallery
use App\Models\Campus; // Import Model Campus
use App\Http\Controllers\LandingPageController; 

class GalleryController extends Controller
{
    /**
     * Helper untuk mendapatkan URL lengkap dari path penyimpanan.
     * Mengikuti pola pada NewsController.
     * * @param string|null $path
     * @return string
     */
    private static function getFullImageUrl($path)
    {
        if ($path) {
            // 1. Cek apakah sudah berupa URL lengkap
            if (filter_var($path, FILTER_VALIDATE_URL)) {
                return $path;
            }
            // 2. Jika path lokal, gunakan asset('storage/')
            return asset('storage/' . $path); 
        }
        // Fallback URL jika tidak ada gambar
        return 'https://placehold.co/800x600/CCCCCC/333333?text=Foto+Galeri+Tidak+Tersedia'; 
    }

    /**
     * Mengambil daftar foto galeri dari database berdasarkan slug kampus.
     * * @param string $slug Slug kampus (e.g., 'akbid', 'umiba')
     * @return \Illuminate\Support\Collection
     */
    public static function getGalleryDataBySlug(string $slug)
    {
        $normalizedSlug = strtolower($slug);

        // 1. Cari Campus ID berdasarkan Slug
        $campus = Campus::where('slug', $normalizedSlug)->first();

        if (!$campus) {
            return collect([]);
        }

        // 2. Query Galeri
        $galleryList = Gallery::where('campus_id', $campus->id)
                             // Ambil kolom yang diperlukan
                             ->select('id', 'title', 'category', 'image_path') 
                             ->orderBy('created_at', 'desc') 
                             ->get();

        // 3. Memformat data
        return $galleryList->map(function ($item) use ($slug) {
            
            // Format URL Gambar (mengganti 'image_path' dengan 'image_url' di frontend)
            $item->image_url = self::getFullImageUrl($item->image_path);

            // Optional: Tambahkan URL detail jika galeri memiliki halaman detail (biasanya untuk modal)
            try {
                $item->url = route('campus.galeri.detail', ['slug' => $slug, 'id' => $item->id]);
            } catch (\Exception $e) {
                $item->url = "/{$slug}/galeri/{$item->id}";
            }
            
            // Hapus properti DB asli yang tidak diperlukan di frontend
            unset($item->image_path);

            return $item;
        });
    }

    /**
     * Menampilkan halaman Galeri (GalleryPage.jsx) yang berdiri sendiri.
     *
     * @param  string $slug
     * @return \Inertia\Response
     */
    public function show($slug)
    {
        // 1. Ambil data dasar (tema, footer, navbar)
        $campusData = LandingPageController::getBaseCampusData($slug);
        
        if (!$campusData) {
            abort(404, "Data kampus tidak ditemukan untuk slug: " . $slug);
        }

        // 2. Ambil data galeri dari helper dinamis
        $galleryImages = self::getGalleryDataBySlug($slug)->all(); 
        
        // 3. Definisikan kategori untuk filter (dapat diubah menjadi dinamis dari DB)
        // Kita gunakan kategori yang umum untuk filter di frontend.
        $galleryCategories = ['Semua', 'Fasilitas', 'Kegiatan', 'Prestasi', 'Lainnya'];
        
        // 4. Render view 'GalleryPage'
        return Inertia::render('GalleryPage', [
            'campus' => $campusData,
            'images' => $galleryImages, 
            'categories' => $galleryCategories, 
        ]);
    }
}