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
{
$this->call([
$seeders = [
RolePermissionSeeder::class,
DepartmentSeeder::class,
AcademicTermSeeder::class,
UserSeeder::class,
DepartmentLeadershipSeeder::class,
CourseSeeder::class,
CourseClassSeeder::class,
ClassEnrollmentSeeder::class,
// CourseRegistrationSeeder::class,
MaterialSeeder::class,
AssignmentSeeder::class,
SubmissionSeeder::class,
ScheduleSeeder::class,
AttendanceSeeder::class,
// TuitionInvoiceSeeder::class,
// TuitionPaymentSeeder::class,
AnnouncementSeeder::class,
LetterRequestSeeder::class,
AcademicAdvisingLogSeeder::class,
NotificationSeeder::class,
]);
];
if (app()->environment('local')) {
$seeders = [
...$seeders,
DepartmentLeadershipSeeder::class,
CourseSeeder::class,
CourseClassSeeder::class,
ClassEnrollmentSeeder::class,
CourseRegistrationSeeder::class,
MaterialSeeder::class,
AssignmentSeeder::class,
SubmissionSeeder::class,
ScheduleSeeder::class,
AttendanceSeeder::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;
use App\Enums\Gender;
use App\Enums\Semester;
use App\Enums\StudentStatus;
use App\Models\AcademicTerm;
@ -20,86 +21,28 @@ public function run(): void
$users = [
[
'username' => 'pangestu',
'email' => 'pangestu@student.itmpwk.ac.id',
'roles' => ['mahasiswa', 'developer'],
'email' => 'project.pangestuyoga@gmail.com',
'roles' => ['developer'],
'profile' => [
'full_name' => 'Yoga Pangestu',
'phone_number' => '082121495806',
'address' => 'Jl. Merdeka No. 1, Purwakarta',
'gender' => 'male',
'gender' => Gender::Male,
'birth_place' => 'Subang',
'birth_date' => '2005-03-13',
],
'student' => [
'student_number' => '23010001',
'department_id' => 1,
'enrollment_year' => 2023,
'current_semester' => 5,
'academic_advisor_id' => null,
'status' => StudentStatus::Active,
'address' => 'Jl. Raya Cijambe No. 123, Subang, Jawa Barat',
],
],
[
'username' => 'doni',
'email' => 'doni@student.itmpwk.ac.id',
'roles' => ['mahasiswa'],
'username' => 'administrator',
'email' => 'administrator@gmail.com',
'roles' => ['staff-admin'],
'profile' => [
'full_name' => 'Doni Setiawan Ramadhan',
'phone_number' => '085793462823',
'address' => 'Jl. Merdeka No. 1, Purwakarta',
'gender' => 'male',
'full_name' => 'Administrator',
'phone_number' => '082121212121',
'gender' => Gender::Male,
'birth_place' => 'Purwakarta',
'birth_date' => '2004-10-30',
],
'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',
'birth_date' => '2000-01-01',
'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();
$this->seedRandomStudents();
$this->seedOtherStaff();
if (app()->environment('local')) {
$this->seedRandomLecturers();
$this->seedRandomStudents();
$this->seedOtherStaff();
}
}
/**
@ -193,7 +138,7 @@ private function seedRandomStudents(): void
$departments = Department::all();
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;
foreach ($departments as $department) {