refactor: update CourseClassRequest and CourseClassSeeder for lecturer validation and dynamic seeding
Some checks failed
tests / ci (pull_request) Has been cancelled

This commit is contained in:
Yoga Pangestu 2026-08-30 13:42:30 +07:00
parent 7af236a379
commit cbed63f43c
2 changed files with 28 additions and 19 deletions

View File

@ -23,7 +23,7 @@ public function rules(): array
'lecturer_id' => [ 'lecturer_id' => [
'required', 'required',
'integer', 'integer',
Rule::exists('lecturers', 'id')->where('department_id', $departmentId), Rule::exists('lecturer_department', 'lecturer_id')->where('department_id', $departmentId),
], ],
'academic_term_id' => ['required', 'integer', Rule::exists('academic_terms', 'id')], 'academic_term_id' => ['required', 'integer', Rule::exists('academic_terms', 'id')],
'method' => ['nullable', 'string', Rule::in(ClassMethod::values())], 'method' => ['nullable', 'string', Rule::in(ClassMethod::values())],

View File

@ -2,30 +2,39 @@
namespace Database\Seeders; namespace Database\Seeders;
use App\Enums\ClassMethod;
use App\Models\AcademicTerm;
use App\Models\Course;
use App\Models\CourseClass; use App\Models\CourseClass;
use App\Models\Lecturer;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
class CourseClassSeeder extends Seeder class CourseClassSeeder extends Seeder
{ {
public function run(): void public function run(): void
{ {
CourseClass::insert([ $academicTermId = AcademicTerm::where('is_active', true)->value('id')
[ ?? AcademicTerm::query()->value('id');
'course_id' => 1,
'lecturer_id' => 1, if (! $academicTermId) {
'academic_term_id' => 2, return;
'method' => 'hybrid', }
'created_at' => '2026-01-10 08:00:00',
'updated_at' => '2026-01-10 08:00:00', Course::all()->each(function (Course $course) use ($academicTermId) {
], $lecturer = Lecturer::whereHas('departments', fn ($q) => $q->where('departments.id', $course->department_id))
[ ->inRandomOrder()
'course_id' => 2, ->first();
'lecturer_id' => 2,
'academic_term_id' => 2, if (! $lecturer) {
'method' => 'offline', return;
'created_at' => '2026-01-10 08:00:00', }
'updated_at' => '2026-01-10 08:00:00',
], CourseClass::create([
'course_id' => $course->id,
'lecturer_id' => $lecturer->id,
'academic_term_id' => $academicTermId,
'method' => fake()->randomElement(ClassMethod::values()),
]); ]);
});
} }
} }