siakad-itm/app/Services/Admin/Manage/ClassEnrollmentService.php
Yoga Pangestu c74a7c7792
Some checks failed
tests / ci (pull_request) Has been cancelled
feat: add academic advising logs and letter requests management
- Implemented academic advising logs functionality with create, edit, and delete capabilities.
- Created UI components for displaying academic advising logs in a data table format.
- Added letter requests management with similar CRUD operations and UI components.
- Refactored routes to organize academic classes, announcements, finances, and services under appropriate namespaces.
2026-08-25 23:05:19 +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();
}
}