<?php

namespace App\Http\Controllers;

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

class StrukturOrganisasiController extends Controller
{
    /**
     * Mengambil data Struktur Organisasi kampus dari database berdasarkan slug.
     * Mencari data terbaru dan aktif (is_active = true) berdasarkan campus_id.
     * * @param string $slug Slug kampus (e.g., 'akbid', 'umiba')
     * @return array
     */
    public static function getOrganizationChartDataBySlug(string $slug): array
    {
        $normalizedSlug = strtolower($slug);
        
        // 1. Cari Model Campus berdasarkan Slug untuk mendapatkan ID lokal
        $campus = Campus::where('slug', $normalizedSlug)->first();

        // Data fallback jika kampus tidak ditemukan atau data belum ada
        $fallbackContent = [
            'title' => 'Struktur Organisasi Kampus',
            'imageUrl' => null,
            'description' => 'Data struktur organisasi untuk kampus ini belum tersedia atau tidak ditemukan.',
        ];

        if (!$campus) {
             return $fallbackContent;
        }

        // 2. Cari data OrganizationChart berdasarkan campus_id
        // Diasumsikan:
        // a. OrganizationChart memiliki kolom 'campus_id' yang terhubung ke model Campus
        // b. Hanya data aktif (is_active = true) yang ditampilkan
        // c. Kita ambil satu data terbaru (jika ada lebih dari satu yang aktif)
        $chart = OrganizationChart::where('campus_id', $campus->id)
                                  ->where('is_active', true)
                                  ->latest()
                                  ->first();

        if (!$chart) {
            // Konten fallback jika data Struktur Organisasi di DB belum ada
            return [
                'title' => 'Struktur Organisasi ' . ($campus->name ?? ucfirst($slug)),
                'imageUrl' => null,
                'description' => 'Struktur organisasi kampus sedang dalam proses pembaruan oleh administrator.'
            ];
        }
        
        // 3. Format data dari Model OrganizationChart ke struktur frontend
        $imageUrl = null;
        if ($chart->image_url) {
            // Cek keberadaan file di storage/app/public/
            if (Storage::disk('public')->exists($chart->image_url)) {
                $imageUrl = Storage::url($chart->image_url);
            }
        }

        return [
            'title' => $chart->title ?? ('Struktur Organisasi ' . ($campus->name ?? ucfirst($slug))),
            'imageUrl' => $imageUrl, 
            'description' => $chart->description ?? null, // Deskripsi opsional
        ];
    }
    
    /**
     * Menampilkan halaman Struktur Organisasi dinamis berdasarkan slug.
     *
     * @param  string $slug Slug kampus (e.g., 'akbid', 'umiba')
     * @return \Inertia\Response|\Illuminate\Http\Response
     */
    public function show($slug)
    {
        // 1. Ambil data dasar kampus (tema, footer, logo, dll.) dari LandingPageController
        $campusData = LandingPageController::getBaseCampusData($slug);

        // Handle jika slug tidak valid (data dasar tidak ditemukan)
        if (!$campusData) {
            abort(404, "Data kampus tidak ditemukan untuk slug: " . $slug);
        }

        // 2. Ambil konten spesifik Struktur Organisasi dari Database menggunakan method static
        $chartContent = self::getOrganizationChartDataBySlug($slug);

        // 3. Kirim data ke view Inertia 'StrukturOrganisasiPage'
        return Inertia::render('StrukturOrganisasiPage', [
            // Kirim data dasar kampus (untuk LandingLayout)
            'campus' => $campusData,

            // Kirim data spesifik halaman Struktur Organisasi (dari DB)
            'content' => $chartContent,
        ]);
    }
}
