MIF_E31222851/database/seeders/AntrianPuskesmasSeeder.php

185 lines
6.1 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
class AntrianPuskesmasSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Admin data is seeded in AdminSeeder to avoid duplication
// Seed polis table with upsert to avoid duplicates
$polis = [
['id' => 1, 'nama_poli' => 'umum'],
['id' => 2, 'nama_poli' => 'gigi'],
['id' => 3, 'nama_poli' => 'kesehatan jiwa'],
['id' => 4, 'nama_poli' => 'kesehatan tradisional'],
];
foreach ($polis as $poli) {
DB::table('polis')->updateOrInsert(
['id' => $poli['id']],
['nama_poli' => $poli['nama_poli'], 'updated_at' => now()]
);
}
// Seed users table with upsert
DB::table('users')->updateOrInsert(
['id' => 1],
[
'nama' => 'Budi Santoso',
'alamat' => 'Jl. Merdeka No.1',
'jenis_kelamin' => 'laki-laki',
'no_hp' => '08123456789',
'no_ktp' => '1234567890123456',
'pekerjaan' => 'Petani',
'password' => Hash::make('password'),
'updated_at' => now(),
]
);
// Seed antrians table with upsert (removed loket_id reference)
DB::table('antrians')->updateOrInsert(
['id' => 1],
[
'user_id' => 1,
'poli_id' => 1,
'no_antrian' => 'U1',
'tanggal_antrian' => now()->toDateString(),
'is_call' => 0,
'status' => 'menunggu',
'waktu_panggil' => null,
'waktu_hadir' => null,
'waktu_mulai_periksa' => null,
'updated_at' => now(),
]
);
// Add more antrian data for testing - Poli Gigi
DB::table('antrians')->updateOrInsert(
['id' => 2],
[
'user_id' => 1,
'poli_id' => 2,
'no_antrian' => 'G1',
'tanggal_antrian' => now()->toDateString(),
'is_call' => 0,
'status' => 'menunggu',
'waktu_panggil' => null,
'waktu_hadir' => null,
'waktu_mulai_periksa' => null,
'updated_at' => now(),
]
);
// Poli Jiwa - Status dipanggil untuk testing
DB::table('antrians')->updateOrInsert(
['id' => 3],
[
'user_id' => 1,
'poli_id' => 3,
'no_antrian' => 'J1',
'tanggal_antrian' => now()->toDateString(),
'is_call' => 1,
'status' => 'dipanggil',
'waktu_panggil' => now(),
'waktu_hadir' => null,
'waktu_mulai_periksa' => null,
'updated_at' => now(),
]
);
// Poli Tradisional - Status sedang diperiksa untuk testing
DB::table('antrians')->updateOrInsert(
['id' => 4],
[
'user_id' => 1,
'poli_id' => 4,
'no_antrian' => 'T1',
'tanggal_antrian' => now()->toDateString(),
'is_call' => 1,
'status' => 'sedang_diperiksa',
'waktu_panggil' => now()->subMinutes(10),
'waktu_hadir' => now()->subMinutes(8),
'waktu_mulai_periksa' => now()->subMinutes(5),
'updated_at' => now(),
]
);
// Tambah satu lagi data sedang diperiksa untuk testing filter
DB::table('antrians')->updateOrInsert(
['id' => 5],
[
'user_id' => 1,
'poli_id' => 1,
'no_antrian' => 'U2',
'tanggal_antrian' => now()->toDateString(),
'is_call' => 1,
'status' => 'sedang_diperiksa',
'waktu_panggil' => now()->subMinutes(15),
'waktu_hadir' => now()->subMinutes(12),
'waktu_mulai_periksa' => now()->subMinutes(8),
'updated_at' => now(),
]
);
// Tambah data dengan status batal untuk testing filter
DB::table('antrians')->updateOrInsert(
['id' => 6],
[
'user_id' => 1,
'poli_id' => 2,
'no_antrian' => 'G2',
'tanggal_antrian' => now()->toDateString(),
'is_call' => 0,
'status' => 'batal',
'waktu_panggil' => null,
'waktu_hadir' => null,
'waktu_mulai_periksa' => null,
'updated_at' => now(),
]
);
// Tambah satu lagi data batal untuk testing filter
DB::table('antrians')->updateOrInsert(
['id' => 7],
[
'user_id' => 1,
'poli_id' => 3,
'no_antrian' => 'J2',
'tanggal_antrian' => now()->toDateString(),
'is_call' => 0,
'status' => 'batal',
'waktu_panggil' => null,
'waktu_hadir' => null,
'waktu_mulai_periksa' => null,
'updated_at' => now(),
]
);
// Tambah data dengan status selesai untuk testing filter
DB::table('antrians')->updateOrInsert(
['id' => 8],
[
'user_id' => 1,
'poli_id' => 4,
'no_antrian' => 'T2',
'tanggal_antrian' => now()->toDateString(),
'is_call' => 1,
'status' => 'selesai',
'waktu_panggil' => now()->subMinutes(30),
'waktu_hadir' => now()->subMinutes(25),
'waktu_mulai_periksa' => now()->subMinutes(20),
'updated_at' => now(),
]
);
}
}