siakad-itm/database/seeders/UserSeeder.php
2026-08-30 11:35:10 +07:00

176 lines
6.3 KiB
PHP

<?php
namespace Database\Seeders;
use App\Enums\StudentStatus;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
class UserSeeder extends Seeder
{
public function run(): void
{
$users = [
[
'username' => 'dwi',
'email' => 'dwi@lecturer.itmpwk.ac.id',
'roles' => ['dosen'],
'profile' => [
'full_name' => 'Dwi Saputra',
'phone_number' => '081234567801',
'address' => 'Jl. Kampus No. 1, Purwakarta',
'gender' => 'male',
'birth_place' => 'Bandung',
'birth_date' => '1985-03-15',
],
'lecturer' => [
'lecturer_number' => '0012345601',
'department_id' => 1,
],
],
[
'username' => 'rina',
'email' => 'rina@lecturer.itmpwk.ac.id',
'roles' => ['dosen'],
'profile' => [
'full_name' => 'Rina Marlina',
'phone_number' => '081234567802',
'address' => 'Jl. Kampus No. 1, Purwakarta',
'gender' => 'female',
'birth_place' => 'Jakarta',
'birth_date' => '1987-07-20',
],
'lecturer' => [
'lecturer_number' => '0012345602',
'department_id' => 2,
],
],
[
'username' => 'budi',
'email' => 'budi@lecturer.itmpwk.ac.id',
'roles' => ['dosen'],
'profile' => [
'full_name' => 'Budi Hartono',
'phone_number' => '081234567803',
'address' => 'Jl. Kampus No. 1, Purwakarta',
'gender' => 'male',
'birth_place' => 'Surabaya',
'birth_date' => '1983-11-10',
],
'lecturer' => [
'lecturer_number' => '0012345603',
'department_id' => 3,
],
],
[
'username' => 'pangestu',
'email' => 'pangestu@student.itmpwk.ac.id',
'roles' => ['mahasiswa', 'developer'],
'profile' => [
'full_name' => 'Yoga Pangestu',
'phone_number' => '082121495806',
'address' => 'Jl. Merdeka No. 1, Purwakarta',
'gender' => 'male',
'birth_place' => 'Subang',
'birth_date' => '2005-03-13',
],
'student' => [
'student_number' => '23010001',
'department_id' => 1,
'enrollment_year' => 2023,
'academic_advisor_id' => 1,
'status' => StudentStatus::Active,
],
],
[
'username' => 'doni',
'email' => 'doni@student.itmpwk.ac.id',
'roles' => ['mahasiswa', 'developer'],
'profile' => [
'full_name' => 'Doni Setiawan Ramadhan',
'phone_number' => '085793462823',
'address' => 'Jl. Merdeka No. 1, Purwakarta',
'gender' => 'male',
'birth_place' => 'Purwakarta',
'birth_date' => '2004-10-30',
],
'student' => [
'student_number' => '23020002',
'department_id' => 2,
'enrollment_year' => 2023,
'academic_advisor_id' => 2,
'status' => StudentStatus::Active,
],
],
[
'username' => 'asep',
'email' => 'asep@student.itmpwk.ac.id',
'roles' => ['mahasiswa', 'developer'],
'profile' => [
'full_name' => 'Asep Saepudin',
'phone_number' => '081546505033',
'address' => 'Jl. Merdeka No. 1, Purwakarta',
'gender' => 'male',
'birth_place' => 'Purwakarta',
'birth_date' => '2005-09-24',
],
'student' => [
'student_number' => '24010003',
'department_id' => 1,
'enrollment_year' => 2024,
'academic_advisor_id' => 1,
'status' => StudentStatus::Active,
],
],
[
'username' => 'komala',
'email' => 'komala@student.itmpwk.ac.id',
'roles' => ['mahasiswa'],
'profile' => [
'full_name' => 'Komala Dewi',
'phone_number' => '085819894938',
'address' => 'Jl. Merdeka No. 1, Purwakarta',
'gender' => 'female',
'birth_place' => 'Purwakarta',
'birth_date' => '2005-05-04',
],
'student' => [
'student_number' => '24020004',
'department_id' => 2,
'enrollment_year' => 2024,
'academic_advisor_id' => 2,
'status' => StudentStatus::Active,
],
],
];
foreach ($users as $userData) {
$roles = $userData['roles'];
$profile = $userData['profile'];
unset($userData['profile'], $userData['roles']);
$student = $userData['student'] ?? null;
$lecturer = $userData['lecturer'] ?? null;
unset($userData['profile'], $userData['student'], $userData['lecturer']);
$userData['password'] = Hash::make(config('app.default_password'));
$user = User::create($userData);
$user->profile()->create($profile);
$user->assignRole($roles);
if ($lecturer) {
$user->lecturer()->create($lecturer);
}
if ($student) {
$user->student()->create($student);
}
}
}
}