157 lines
8.8 KiB
PHP
157 lines
8.8 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\Category;
|
||
use App\Models\KnowledgeItem;
|
||
use Illuminate\Database\Seeder;
|
||
|
||
class KnowledgeItemSeeder extends Seeder
|
||
{
|
||
/**
|
||
* Sample FAQ untuk development dan demo awal.
|
||
* Data ini bukan fakta sebenar — untuk tujuan ujian sahaja.
|
||
*/
|
||
public function run(): void
|
||
{
|
||
$items = [
|
||
// ── Pelesenan ─────────────────────────────────────────────────
|
||
[
|
||
'category_slug' => 'pelesenan',
|
||
'item_type' => KnowledgeItem::TYPE_FAQ,
|
||
'title' => 'Apakah dokumen yang diperlukan untuk memohon lesen perniagaan baru?',
|
||
'content' => "Untuk memohon lesen perniagaan baru, pemohon perlu menyediakan dokumen berikut:\n\n" .
|
||
"1. Salinan kad pengenalan pemohon (MyKad)\n" .
|
||
"2. Borang permohonan yang telah dilengkapkan\n" .
|
||
"3. Salinan geran tanah atau perjanjian sewaan premis\n" .
|
||
"4. Pelan lantai premis perniagaan\n" .
|
||
"5. Sijil pendaftaran perniagaan (SSM)\n" .
|
||
"6. Gambar premis dari dalam dan luar\n\n" .
|
||
"Sila hubungi Bahagian Pelesenan untuk maklumat lanjut.",
|
||
'tags' => ['lesen', 'perniagaan', 'permohonan', 'dokumen'],
|
||
'is_active' => true,
|
||
],
|
||
[
|
||
'category_slug' => 'pelesenan',
|
||
'item_type' => KnowledgeItem::TYPE_FAQ,
|
||
'title' => 'Berapa lama masa yang diperlukan untuk kelulusan lesen perniagaan?',
|
||
'content' => "Proses kelulusan lesen perniagaan biasanya mengambil masa 14 hingga 30 hari bekerja " .
|
||
"bergantung kepada jenis lesen dan kelengkapan dokumen yang dikemukakan.\n\n" .
|
||
"Pemohon boleh semak status permohonan melalui kaunter Bahagian Pelesenan atau " .
|
||
"menghubungi talian hotline kami.",
|
||
'tags' => ['lesen', 'tempoh', 'kelulusan'],
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ── Cukai ─────────────────────────────────────────────────────
|
||
[
|
||
'category_slug' => 'cukai',
|
||
'item_type' => KnowledgeItem::TYPE_FAQ,
|
||
'title' => 'Bila tarikh akhir pembayaran cukai taksiran?',
|
||
'content' => "Cukai taksiran perlu dibayar dalam dua penggal:\n\n" .
|
||
"• Penggal pertama: 28 Februari setiap tahun\n" .
|
||
"• Penggal kedua: 31 Ogos setiap tahun\n\n" .
|
||
"Bayaran lewat akan dikenakan denda atau caj penalti. " .
|
||
"Pembayaran boleh dibuat di kaunter, atas talian, atau melalui bank.",
|
||
'tags' => ['cukai', 'taksiran', 'tarikh', 'bayaran'],
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ── WiFi Johor ────────────────────────────────────────────────
|
||
[
|
||
'category_slug' => 'wifi-johor',
|
||
'item_type' => KnowledgeItem::TYPE_FAQ,
|
||
'title' => 'Bagaimana cara untuk sambung ke WiFi Johor?',
|
||
'content' => "Cara menyambung ke WiFi Johor:\n\n" .
|
||
"1. Hidupkan WiFi pada peranti anda\n" .
|
||
"2. Pilih rangkaian 'WiFi Johor' atau 'WiFiJohor'\n" .
|
||
"3. Buka pelayar web — halaman log masuk akan muncul\n" .
|
||
"4. Daftar menggunakan nombor telefon atau e-mel\n" .
|
||
"5. Masukkan OTP yang diterima\n" .
|
||
"6. Anda kini boleh menggunakan internet percuma\n\n" .
|
||
"WiFi Johor tersedia di taman awam, perpustakaan, dan bangunan kerajaan terpilih.",
|
||
'tags' => ['wifi', 'johor', 'internet', 'sambung'],
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ── Penguatkuasaan ────────────────────────────────────────────
|
||
[
|
||
'category_slug' => 'penguatkuasaan',
|
||
'item_type' => KnowledgeItem::TYPE_FAQ,
|
||
'title' => 'Bagaimana cara untuk membuat aduan berkaitan penguatkuasaan?',
|
||
'content' => "Aduan berkaitan penguatkuasaan boleh dibuat melalui cara berikut:\n\n" .
|
||
"1. Kaunter aduan di Jabatan Penguatkuasaan\n" .
|
||
"2. Hotline: 07-XXX XXXX (Isnin-Jumaat, 8pagi-5ptg)\n" .
|
||
"3. E-mel: penguatkuasaan@majlis.gov.my\n" .
|
||
"4. Sistem aduan atas talian\n\n" .
|
||
"Sertakan maklumat berikut dalam aduan:\n" .
|
||
"• Nama dan nombor telefon pengadu\n" .
|
||
"• Lokasi kejadian\n" .
|
||
"• Tarikh dan masa kejadian\n" .
|
||
"• Penerangan ringkas masalah",
|
||
'tags' => ['aduan', 'penguatkuasaan', 'prosedur'],
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ── Sewaan Gerai ──────────────────────────────────────────────
|
||
[
|
||
'category_slug' => 'sewaan-gerai-majlis',
|
||
'item_type' => KnowledgeItem::TYPE_FAQ,
|
||
'title' => 'Apakah syarat untuk menyewa gerai majlis?',
|
||
'content' => "Syarat-syarat untuk menyewa gerai majlis:\n\n" .
|
||
"1. Pemohon mestilah warganegara Malaysia\n" .
|
||
"2. Berumur 18 tahun ke atas\n" .
|
||
"3. Tiada tunggakan dengan pihak majlis\n" .
|
||
"4. Mempunyai lesen perniagaan yang sah (jika berniaga)\n" .
|
||
"5. Menandatangani perjanjian sewaan\n\n" .
|
||
"Kadar sewa bergantung kepada lokasi dan jenis gerai. " .
|
||
"Sila rujuk jadual kadar sewa yang terkini di kaunter.",
|
||
'tags' => ['gerai', 'sewa', 'syarat', 'permohonan'],
|
||
'is_active' => true,
|
||
],
|
||
|
||
// ── Lain-lain ─────────────────────────────────────────────────
|
||
[
|
||
'category_slug' => 'lain-lain',
|
||
'item_type' => KnowledgeItem::TYPE_FAQ,
|
||
'title' => 'Apakah waktu operasi pejabat majlis?',
|
||
'content' => "Waktu operasi pejabat majlis adalah seperti berikut:\n\n" .
|
||
"• Isnin – Khamis: 8:00 pagi – 5:00 petang\n" .
|
||
"• Jumaat: 8:00 pagi – 12:00 tengah hari (tutup 12:15 – 2:45 ptg)\n" .
|
||
"• Sabtu, Ahad, dan Cuti Umum: Tutup\n\n" .
|
||
"Perkhidmatan kaunter ditutup 15 minit sebelum masa tutup pejabat.",
|
||
'tags' => ['waktu', 'operasi', 'pejabat', 'jadual'],
|
||
'is_active' => true,
|
||
],
|
||
];
|
||
|
||
$count = 0;
|
||
foreach ($items as $data) {
|
||
$slug = $data['category_slug'];
|
||
unset($data['category_slug']);
|
||
|
||
$category = Category::where('slug', $slug)->first();
|
||
if (!$category) {
|
||
$this->command->warn(" Kategori '{$slug}' tidak dijumpai. Skip.");
|
||
continue;
|
||
}
|
||
|
||
KnowledgeItem::updateOrCreate(
|
||
[
|
||
'category_id' => $category->id,
|
||
'title' => $data['title'],
|
||
],
|
||
array_merge($data, [
|
||
'category_id' => $category->id,
|
||
'language' => 'ms',
|
||
'is_public' => true,
|
||
])
|
||
);
|
||
|
||
$count++;
|
||
}
|
||
|
||
$this->command->info("✓ {$count} knowledge items (sample FAQ) berjaya dibuat.");
|
||
}
|
||
}
|