<?php

namespace Database\Seeders;

use App\Models\Post;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;

class PostSeeder extends Seeder
{
    public function run(): void
    {
        $editor  = User::role('editor')->first();
        $anggota = User::role('anggota')->first();
        $ketua   = User::role('ketua')->first();

        $posts = [
            // Published — sudah melalui full workflow
            [
                'title'        => 'Selamat Datang di Website Persegi',
                'category'     => 'pengumuman',
                'content'      => '<p>Kami dengan bangga mempersembahkan website resmi organisasi Persegi. Melalui website ini, masyarakat dapat mengikuti perkembangan kegiatan dan informasi terbaru dari organisasi kami.</p>',
                'author_id'    => $ketua?->id,
                'status'       => 'published',
                'approved_by'  => $editor?->id,
                'approved_at'  => now()->subDays(11),
                'reviewed_by'  => $editor?->id,
                'published_at' => now()->subDays(10),
            ],
            [
                'title'        => 'Rekrutmen Anggota Baru 2026',
                'category'     => 'pengumuman',
                'content'      => '<p>Persegi membuka pendaftaran anggota baru untuk periode 2026. Bagi pemuda Desa Karangdadap yang ingin bergabung, silakan hubungi pengurus melalui kontak yang tersedia.</p><p>Pendaftaran dibuka hingga akhir bulan April 2026.</p>',
                'author_id'    => $ketua?->id,
                'status'       => 'published',
                'approved_by'  => $editor?->id,
                'approved_at'  => now()->subDays(6),
                'reviewed_by'  => $editor?->id,
                'published_at' => now()->subDays(5),
            ],
            [
                'title'        => 'Laporan Kegiatan Kerja Bakti Desa',
                'category'     => 'berita',
                'content'      => '<p>Kegiatan kerja bakti yang dilaksanakan pada bulan lalu berjalan dengan lancar. Sebanyak 30 anggota turut berpartisipasi dalam membersihkan lingkungan desa.</p><p>Terima kasih kepada seluruh anggota yang telah berkontribusi.</p>',
                'author_id'    => $anggota?->id,
                'status'       => 'published',
                'approved_by'  => $editor?->id,
                'approved_at'  => now()->subDays(3),
                'reviewed_by'  => $editor?->id,
                'published_at' => now()->subDays(2),
            ],
            // Approved — sudah disetujui editor, belum diterbitkan
            [
                'title'        => 'Jadwal Rapat Bulanan April 2026',
                'category'     => 'pengumuman',
                'content'      => '<p>Rapat bulanan akan dilaksanakan pada akhir April 2026. Seluruh anggota diharapkan hadir.</p>',
                'author_id'    => $anggota?->id,
                'status'       => 'approved',
                'approved_by'  => $editor?->id,
                'approved_at'  => now()->subDay(),
                'reviewed_by'  => $editor?->id,
                'published_at' => null,
            ],
            // Pending — menunggu review editor
            [
                'title'        => 'Kegiatan Sosial Ramadan 2026',
                'category'     => 'berita',
                'content'      => '<p>Persegi berencana mengadakan kegiatan sosial berbagi sembako selama bulan Ramadan.</p>',
                'author_id'    => $anggota?->id,
                'status'       => 'pending',
                'published_at' => null,
            ],
            // Draft — belum diajukan
            [
                'title'        => 'Profil Divisi Olahraga',
                'category'     => 'umum',
                'content'      => '<p>Divisi olahraga Persegi aktif mengadakan kegiatan rutin setiap minggu.</p>',
                'author_id'    => $anggota?->id,
                'status'       => 'draft',
                'published_at' => null,
            ],
        ];

        foreach ($posts as $data) {
            Post::firstOrCreate(
                ['slug' => Str::slug($data['title'])],
                $data
            );
        }
    }
}
