<?php

namespace App\Http\Controllers;

// Import View untuk return type declaration
use Illuminate\Contracts\View\View;
use App\Models\Article;
use App\Models\Post;

class PageController extends Controller
{
    /**
     * Menampilkan halaman beranda dengan 3 artikel terbaru.
     */
    public function home(): View
    {
        // Ambil 3 artikel terbaru, lebih efisien menggunakan 'limit()'
        $articles = Article::latest()->limit(3)->get();
        
        // Kirim data artikel ke view 'beranda'
        return view('beranda', compact('articles'));
    }

    /**
     * Menampilkan halaman indeks berita yang sudah dipublikasikan.
     */
    public function newsIndex(): View
    {
        // PENYEMPURNAAN: Menggunakan Query Scope 'published()' dari model Post
        $posts = Post::published()->paginate(10);

        return view('berita.index', compact('posts'));
    }

    /**
     * Menampilkan satu berita spesifik.
     */
    public function newsShow(Post $post): View
    {
        // PERBAIKAN PENTING: Cek apakah post sudah dipublikasikan
        // Jika belum, tampilkan halaman 404 Not Found untuk mencegah akses ke draf.
        if (!$post->published_at) {
            abort(404);
        }

        return view('berita.show', compact('post'));
    }
}