2026-04-03 05:18:34 +07:00
< ? php
namespace Database\Seeders ;
use App\Models\Post ;
use App\Models\User ;
use Illuminate\Database\Seeder ;
2026-04-05 06:21:16 +07:00
use Illuminate\Support\Str ;
2026-04-03 05:18:34 +07:00
class PostSeeder extends Seeder
{
public function run () : void
{
2026-04-05 06:21:16 +07:00
$editor = User :: role ( 'editor' ) -> first ();
$anggota = User :: role ( 'anggota' ) -> first ();
$ketua = User :: role ( 'ketua' ) -> first ();
2026-04-03 05:18:34 +07:00
$posts = [
2026-04-05 06:21:16 +07:00
// Published — sudah melalui full workflow
2026-04-03 05:18:34 +07:00
[
'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>' ,
2026-04-05 06:21:16 +07:00
'author_id' => $ketua ? -> id ,
'status' => 'published' ,
'approved_by' => $editor ? -> id ,
'approved_at' => now () -> subDays ( 11 ),
'reviewed_by' => $editor ? -> id ,
2026-04-03 05:18:34 +07:00
'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>' ,
2026-04-05 06:21:16 +07:00
'author_id' => $ketua ? -> id ,
'status' => 'published' ,
'approved_by' => $editor ? -> id ,
'approved_at' => now () -> subDays ( 6 ),
'reviewed_by' => $editor ? -> id ,
2026-04-03 05:18:34 +07:00
'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>' ,
2026-04-05 06:21:16 +07:00
'author_id' => $anggota ? -> id ,
'status' => 'published' ,
'approved_by' => $editor ? -> id ,
'approved_at' => now () -> subDays ( 3 ),
'reviewed_by' => $editor ? -> id ,
2026-04-03 05:18:34 +07:00
'published_at' => now () -> subDays ( 2 ),
],
2026-04-05 06:21:16 +07:00
// 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 ,
],
2026-04-03 05:18:34 +07:00
];
foreach ( $posts as $data ) {
Post :: firstOrCreate (
2026-04-05 06:21:16 +07:00
[ 'slug' => Str :: slug ( $data [ 'title' ])],
$data
2026-04-03 05:18:34 +07:00
);
}
}
}