siakad-itm/app/Services/Admin/Manage/ClassEnrollmentService.php
Yoga Pangestu 015cbc229b feat: add course and class enrollment management
- Implemented ClassEnrollmentIndex component for managing class enrollments, including adding and removing students.
- Created CourseClassIndex component for managing course classes with CRUD functionality.
- Developed columns for course management in createCourseColumns function.
- Added CourseIndex component for managing courses with CRUD operations.
- Introduced types for class enrollment and course class to enhance type safety.
- Updated routes to include endpoints for managing courses, course classes, and enrollments.
2026-08-21 19:06:05 +07:00

44 lines
1.2 KiB
PHP

<?php
namespace App\Services\Admin\Manage;
use App\Models\ClassEnrollment;
use App\Models\CourseClass;
use App\Models\Student;
use Illuminate\Database\Eloquent\Collection;
class ClassEnrollmentService
{
public function forClass(CourseClass $courseClass): Collection
{
return $courseClass->enrollments()
->with(['student.user.profile', 'student.department'])
->latest('enrolled_at')
->get();
}
public function availableStudents(CourseClass $courseClass): Collection
{
return Student::query()
->where('department_id', $courseClass->course->department_id)
->whereDoesntHave('enrollments', fn ($q) => $q->where('course_class_id', $courseClass->id))
->with(['user.profile', 'department'])
->get();
}
public function enrollMany(CourseClass $courseClass, array $studentIds): void
{
foreach ($studentIds as $studentId) {
$courseClass->enrollments()->firstOrCreate(
['student_id' => $studentId],
['enrolled_at' => now()],
);
}
}
public function unenroll(ClassEnrollment $enrollment): bool
{
return $enrollment->delete();
}
}