127 lines
8.0 KiB
PHP
127 lines
8.0 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Kategori;
|
|
use App\Models\Satuan;
|
|
use App\Models\Supplier;
|
|
use App\Models\Obat;
|
|
use App\Models\ObatMasuk;
|
|
use App\Models\ObatKeluar;
|
|
use App\Models\User;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Carbon\Carbon;
|
|
|
|
class DatabaseSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
// Create superadmin user
|
|
$this->call([
|
|
SuperAdminSeeder::class,
|
|
]);
|
|
|
|
// Create admin user (apoteker)
|
|
$user = User::create([
|
|
'name' => 'Admin',
|
|
'email' => 'admin@admin.com',
|
|
'password' => Hash::make('password'),
|
|
'role' => 'apoteker',
|
|
]);
|
|
|
|
// Create dokter user
|
|
User::create([
|
|
'name' => 'Dokter',
|
|
'email' => 'dokter@admin.com',
|
|
'password' => Hash::make('password'),
|
|
'role' => 'dokter',
|
|
]);
|
|
|
|
// Create categories
|
|
$kategoris = [
|
|
['nama' => 'Analgesik', 'keterangan' => 'Obat pereda nyeri'],
|
|
['nama' => 'Antibiotik', 'keterangan' => 'Obat anti bakteri'],
|
|
['nama' => 'Antipiretik', 'keterangan' => 'Obat penurun demam'],
|
|
['nama' => 'Antihipertensi', 'keterangan' => 'Obat tekanan darah tinggi'],
|
|
['nama' => 'Antidiabetik', 'keterangan' => 'Obat diabetes'],
|
|
['nama' => 'Vitamin dan Suplemen', 'keterangan' => 'Suplemen kesehatan'],
|
|
];
|
|
|
|
foreach ($kategoris as $kategori) {
|
|
Kategori::create($kategori);
|
|
}
|
|
|
|
// Create satuans (units)
|
|
$satuans = [
|
|
['nama' => 'Tablet', 'keterangan' => 'Obat dalam bentuk tablet'],
|
|
['nama' => 'Kapsul', 'keterangan' => 'Obat dalam bentuk kapsul'],
|
|
['nama' => 'Botol', 'keterangan' => 'Obat cair dalam botol'],
|
|
['nama' => 'Strip', 'keterangan' => 'Obat dalam kemasan strip'],
|
|
['nama' => 'Box', 'keterangan' => 'Obat dalam kemasan box'],
|
|
['nama' => 'Ampul', 'keterangan' => 'Obat injeksi dalam ampul'],
|
|
['nama' => 'Tube', 'keterangan' => 'Obat salep/krim dalam tube'],
|
|
];
|
|
|
|
foreach ($satuans as $satuan) {
|
|
Satuan::create($satuan);
|
|
}
|
|
|
|
// Create suppliers
|
|
$suppliers = [
|
|
['nama' => 'PT Kimia Farma', 'alamat' => 'Jakarta Pusat', 'telepon' => '021-1234567'],
|
|
['nama' => 'PT Kalbe Farma', 'alamat' => 'Jakarta Timur', 'telepon' => '021-7654321'],
|
|
['nama' => 'PT Sanbe Farma', 'alamat' => 'Bandung', 'telepon' => '022-1234567'],
|
|
];
|
|
|
|
foreach ($suppliers as $supplier) {
|
|
Supplier::create($supplier);
|
|
}
|
|
|
|
// Create medicines (legacy - keep for reference)
|
|
$obats = [
|
|
['kategori_id' => 1, 'nama' => 'Paracetamol 500mg', 'kode' => 'OBT-001', 'satuan' => 'Tablet'],
|
|
['kategori_id' => 1, 'nama' => 'Ibuprofen 400mg', 'kode' => 'OBT-002', 'satuan' => 'Tablet'],
|
|
['kategori_id' => 2, 'nama' => 'Amoxicillin 500mg', 'kode' => 'OBT-003', 'satuan' => 'Kapsul'],
|
|
['kategori_id' => 2, 'nama' => 'Ciprofloxacin 500mg', 'kode' => 'OBT-004', 'satuan' => 'Tablet'],
|
|
['kategori_id' => 3, 'nama' => 'Aspirin 100mg', 'kode' => 'OBT-005', 'satuan' => 'Tablet'],
|
|
['kategori_id' => 4, 'nama' => 'Amlodipine 5mg', 'kode' => 'OBT-006', 'satuan' => 'Tablet'],
|
|
['kategori_id' => 4, 'nama' => 'Captopril 25mg', 'kode' => 'OBT-007', 'satuan' => 'Tablet'],
|
|
['kategori_id' => 5, 'nama' => 'Metformin 500mg', 'kode' => 'OBT-008', 'satuan' => 'Tablet'],
|
|
['kategori_id' => 6, 'nama' => 'Vitamin C 1000mg', 'kode' => 'OBT-009', 'satuan' => 'Tablet'],
|
|
['kategori_id' => 6, 'nama' => 'Vitamin D3 1000IU', 'kode' => 'OBT-010', 'satuan' => 'Kapsul'],
|
|
];
|
|
|
|
foreach ($obats as $obat) {
|
|
Obat::create($obat);
|
|
}
|
|
|
|
// Create incoming medicines with new structure
|
|
$obatMasuks = [
|
|
['nama_obat' => 'Paracetamol 500mg', 'kategori_id' => 1, 'satuan_id' => 1, 'obat_id' => 1, 'supplier_id' => 1, 'user_id' => 1, 'kode_batch' => 'BCH-2024-001', 'stok' => 100, 'harga_beli' => 1500, 'harga_jual' => 2500, 'tanggal_penerimaan' => Carbon::now()->subDays(30), 'tanggal_kadaluarsa' => Carbon::now()->addMonths(6), 'no_faktur' => 'FKT-001'],
|
|
['nama_obat' => 'Ibuprofen 400mg', 'kategori_id' => 1, 'satuan_id' => 1, 'obat_id' => 2, 'supplier_id' => 1, 'user_id' => 1, 'kode_batch' => 'BCH-2024-002', 'stok' => 80, 'harga_beli' => 2000, 'harga_jual' => 3500, 'tanggal_penerimaan' => Carbon::now()->subDays(25), 'tanggal_kadaluarsa' => Carbon::now()->addDays(45), 'no_faktur' => 'FKT-002'],
|
|
['nama_obat' => 'Amoxicillin 500mg', 'kategori_id' => 2, 'satuan_id' => 2, 'obat_id' => 3, 'supplier_id' => 2, 'user_id' => 1, 'kode_batch' => 'BCH-2024-003', 'stok' => 150, 'harga_beli' => 3000, 'harga_jual' => 5000, 'tanggal_penerimaan' => Carbon::now()->subDays(20), 'tanggal_kadaluarsa' => Carbon::now()->addMonths(12), 'no_faktur' => 'FKT-003'],
|
|
['nama_obat' => 'Ciprofloxacin 500mg', 'kategori_id' => 2, 'satuan_id' => 1, 'obat_id' => 4, 'supplier_id' => 2, 'user_id' => 1, 'kode_batch' => 'BCH-2024-004', 'stok' => 60, 'harga_beli' => 4000, 'harga_jual' => 6500, 'tanggal_penerimaan' => Carbon::now()->subDays(15), 'tanggal_kadaluarsa' => Carbon::now()->addDays(20), 'no_faktur' => 'FKT-004'],
|
|
['nama_obat' => 'Aspirin 100mg', 'kategori_id' => 3, 'satuan_id' => 1, 'obat_id' => 5, 'supplier_id' => 3, 'user_id' => 1, 'kode_batch' => 'BCH-2024-005', 'stok' => 200, 'harga_beli' => 1000, 'harga_jual' => 1800, 'tanggal_penerimaan' => Carbon::now()->subDays(10), 'tanggal_kadaluarsa' => Carbon::now()->addDays(75), 'no_faktur' => 'FKT-005'],
|
|
['nama_obat' => 'Amlodipine 5mg', 'kategori_id' => 4, 'satuan_id' => 1, 'obat_id' => 6, 'supplier_id' => 1, 'user_id' => 1, 'kode_batch' => 'BCH-2024-006', 'stok' => 120, 'harga_beli' => 2500, 'harga_jual' => 4000, 'tanggal_penerimaan' => Carbon::now()->subDays(5), 'tanggal_kadaluarsa' => Carbon::now()->addMonths(8), 'no_faktur' => 'FKT-006'],
|
|
['nama_obat' => 'Captopril 25mg', 'kategori_id' => 4, 'satuan_id' => 1, 'obat_id' => 7, 'supplier_id' => 2, 'user_id' => 1, 'kode_batch' => 'BCH-2024-007', 'stok' => 90, 'harga_beli' => 1800, 'harga_jual' => 3000, 'tanggal_penerimaan' => Carbon::now()->subDays(3), 'tanggal_kadaluarsa' => Carbon::now()->addDays(15), 'no_faktur' => 'FKT-007'],
|
|
];
|
|
|
|
foreach ($obatMasuks as $obatMasuk) {
|
|
ObatMasuk::create($obatMasuk);
|
|
}
|
|
|
|
// Create outgoing medicines
|
|
$obatKeluars = [
|
|
['obat_id' => 1, 'user_id' => 1, 'kode_batch' => 'BCH-2024-001', 'jumlah' => 20, 'tanggal_pengeluaran' => Carbon::now()->subDays(5), 'tanggal_kadaluarsa' => Carbon::now()->addMonths(6), 'no_pengeluaran' => 'OUT-001', 'nama_petugas' => 'Admin', 'nama_penerima' => 'Apotek Sehat', 'tujuan' => 'Distribusi', 'status' => 'terkirim'],
|
|
['obat_id' => 2, 'user_id' => 1, 'kode_batch' => 'BCH-2024-002', 'jumlah' => 15, 'tanggal_pengeluaran' => Carbon::now()->subDays(4), 'tanggal_kadaluarsa' => Carbon::now()->addDays(45), 'no_pengeluaran' => 'OUT-002', 'nama_petugas' => 'Admin', 'nama_penerima' => 'Puskesmas Maju', 'tujuan' => 'Distribusi', 'status' => 'terkirim'],
|
|
['obat_id' => 3, 'user_id' => 1, 'kode_batch' => 'BCH-2024-003', 'jumlah' => 30, 'tanggal_pengeluaran' => Carbon::now()->subDays(3), 'tanggal_kadaluarsa' => Carbon::now()->addMonths(12), 'no_pengeluaran' => 'OUT-003', 'nama_petugas' => 'Admin', 'nama_penerima' => 'RS Harapan', 'tujuan' => 'Distribusi', 'status' => 'proses'],
|
|
['obat_id' => 5, 'user_id' => 1, 'kode_batch' => 'BCH-2024-005', 'jumlah' => 50, 'tanggal_pengeluaran' => Carbon::now()->subDays(2), 'tanggal_kadaluarsa' => Carbon::now()->addDays(75), 'no_pengeluaran' => 'OUT-004', 'nama_petugas' => 'Admin', 'nama_penerima' => 'Klinik Pratama', 'tujuan' => 'Distribusi', 'status' => 'terkirim'],
|
|
];
|
|
|
|
foreach ($obatKeluars as $obatKeluar) {
|
|
ObatKeluar::create($obatKeluar);
|
|
}
|
|
}
|
|
}
|