feat: refactor DatabaseSeeder and UserSeeder for improved structure and local environment handling

This commit is contained in:
Yoga Pangestu 2026-09-02 18:15:21 +07:00
parent cdd81caf22
commit 378ddebac9
2 changed files with 44 additions and 91 deletions

View File

@ -11,27 +11,35 @@ class DatabaseSeeder extends Seeder
public function run(): void public function run(): void
{ {
$this->call([ $seeders = [
RolePermissionSeeder::class, RolePermissionSeeder::class,
DepartmentSeeder::class, DepartmentSeeder::class,
AcademicTermSeeder::class, AcademicTermSeeder::class,
UserSeeder::class, UserSeeder::class,
DepartmentLeadershipSeeder::class, ];
CourseSeeder::class,
CourseClassSeeder::class, if (app()->environment('local')) {
ClassEnrollmentSeeder::class, $seeders = [
// CourseRegistrationSeeder::class, ...$seeders,
MaterialSeeder::class, DepartmentLeadershipSeeder::class,
AssignmentSeeder::class, CourseSeeder::class,
SubmissionSeeder::class, CourseClassSeeder::class,
ScheduleSeeder::class, ClassEnrollmentSeeder::class,
AttendanceSeeder::class, CourseRegistrationSeeder::class,
// TuitionInvoiceSeeder::class, MaterialSeeder::class,
// TuitionPaymentSeeder::class, AssignmentSeeder::class,
AnnouncementSeeder::class, SubmissionSeeder::class,
LetterRequestSeeder::class, ScheduleSeeder::class,
AcademicAdvisingLogSeeder::class, AttendanceSeeder::class,
NotificationSeeder::class, TuitionInvoiceSeeder::class,
]); TuitionPaymentSeeder::class,
AnnouncementSeeder::class,
LetterRequestSeeder::class,
AcademicAdvisingLogSeeder::class,
NotificationSeeder::class,
];
}
$this->call($seeders);
} }
} }

View File

@ -2,6 +2,7 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Enums\Gender;
use App\Enums\Semester; use App\Enums\Semester;
use App\Enums\StudentStatus; use App\Enums\StudentStatus;
use App\Models\AcademicTerm; use App\Models\AcademicTerm;
@ -20,86 +21,28 @@ public function run(): void
$users = [ $users = [
[ [
'username' => 'pangestu', 'username' => 'pangestu',
'email' => 'pangestu@student.itmpwk.ac.id', 'email' => 'project.pangestuyoga@gmail.com',
'roles' => ['mahasiswa', 'developer'], 'roles' => ['developer'],
'profile' => [ 'profile' => [
'full_name' => 'Yoga Pangestu', 'full_name' => 'Yoga Pangestu',
'phone_number' => '082121495806', 'phone_number' => '082121495806',
'address' => 'Jl. Merdeka No. 1, Purwakarta', 'gender' => Gender::Male,
'gender' => 'male',
'birth_place' => 'Subang', 'birth_place' => 'Subang',
'birth_date' => '2005-03-13', 'birth_date' => '2005-03-13',
], 'address' => 'Jl. Raya Cijambe No. 123, Subang, Jawa Barat',
'student' => [
'student_number' => '23010001',
'department_id' => 1,
'enrollment_year' => 2023,
'current_semester' => 5,
'academic_advisor_id' => null,
'status' => StudentStatus::Active,
], ],
], ],
[ [
'username' => 'doni', 'username' => 'administrator',
'email' => 'doni@student.itmpwk.ac.id', 'email' => 'administrator@gmail.com',
'roles' => ['mahasiswa'], 'roles' => ['staff-admin'],
'profile' => [ 'profile' => [
'full_name' => 'Doni Setiawan Ramadhan', 'full_name' => 'Administrator',
'phone_number' => '085793462823', 'phone_number' => '082121212121',
'address' => 'Jl. Merdeka No. 1, Purwakarta', 'gender' => Gender::Male,
'gender' => 'male',
'birth_place' => 'Purwakarta', 'birth_place' => 'Purwakarta',
'birth_date' => '2004-10-30', 'birth_date' => '2000-01-01',
],
'student' => [
'student_number' => '23020002',
'department_id' => 1,
'enrollment_year' => 2023,
'current_semester' => 5,
'academic_advisor_id' => null,
'status' => StudentStatus::Active,
],
],
[
'username' => 'asep',
'email' => 'asep@student.itmpwk.ac.id',
'roles' => ['mahasiswa'],
'profile' => [
'full_name' => 'Asep Saepudin',
'phone_number' => '081546505033',
'address' => 'Jl. Merdeka No. 1, Purwakarta', '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,
'current_semester' => 3,
'academic_advisor_id' => null,
'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' => 1,
'enrollment_year' => 2024,
'current_semester' => 3,
'academic_advisor_id' => null,
'status' => StudentStatus::Active,
], ],
], ],
]; ];
@ -135,9 +78,11 @@ public function run(): void
} }
} }
$this->seedRandomLecturers(); if (app()->environment('local')) {
$this->seedRandomStudents(); $this->seedRandomLecturers();
$this->seedOtherStaff(); $this->seedRandomStudents();
$this->seedOtherStaff();
}
} }
/** /**
@ -193,7 +138,7 @@ private function seedRandomStudents(): void
$departments = Department::all(); $departments = Department::all();
foreach (AcademicTerm::all() as $term) { foreach (AcademicTerm::all() as $term) {
[$startYear, $endYear] = explode('/', $term->name); [$startYear, $endYear] = explode('/', $term->academic_year);
$enrollmentYear = $term->semester === Semester::even ? (int) $endYear : (int) $startYear; $enrollmentYear = $term->semester === Semester::even ? (int) $endYear : (int) $startYear;
foreach ($departments as $department) { foreach ($departments as $department) {