diff --git a/app/Http/Controllers/Admin/Services/AcademicAdvisingLogController.php b/app/Http/Controllers/Admin/Services/AcademicAdvisingLogController.php index 3a51511..c887ba4 100644 --- a/app/Http/Controllers/Admin/Services/AcademicAdvisingLogController.php +++ b/app/Http/Controllers/Admin/Services/AcademicAdvisingLogController.php @@ -25,6 +25,7 @@ public function index(PaginatedRequest $request): Response { return Inertia::render('admin/services/academic-advising-logs/index', [ 'logs' => $this->service->paginated( + $request->user(), ...$request->validatedWithDefaults(), lecturerId: $request->validated('lecturer_id'), ), diff --git a/app/Services/Admin/Services/AcademicAdvisingLogService.php b/app/Services/Admin/Services/AcademicAdvisingLogService.php index 2d360f0..981ed8d 100644 --- a/app/Services/Admin/Services/AcademicAdvisingLogService.php +++ b/app/Services/Admin/Services/AcademicAdvisingLogService.php @@ -2,17 +2,16 @@ namespace App\Services\Admin\Services; +use App\Enums\UserRole; use App\Models\AcademicAdvisingLog; +use App\Models\User; use Illuminate\Contracts\Pagination\LengthAwarePaginator; class AcademicAdvisingLogService { - public function paginated(int $perPage = 25, string $search = '', ?int $lecturerId = null): LengthAwarePaginator + public function paginated(User $user, int $perPage = 25, string $search = '', ?int $lecturerId = null): LengthAwarePaginator { - $user = auth()->user(); - return AcademicAdvisingLog::query() - ->select(['id', 'lecturer_id', 'topic', 'notes', 'created_at']) ->with([ 'students.user.profile', 'students.department', @@ -23,9 +22,9 @@ public function paginated(int $perPage = 25, string $search = '', ?int $lecturer ->orWhereHas('students', fn ($q) => $q->where('student_number', 'like', "%{$search}%") ->orWhereHas('user.profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%")))) ->when($lecturerId, fn ($q) => $q->where('lecturer_id', $lecturerId)) - ->when($user->hasRole('dosen'), fn ($q) => $q->where('lecturer_id', $user->lecturer?->id)) + ->when($user->hasRole(UserRole::Dosen->value), fn ($q) => $q->where('lecturer_id', $user->lecturer?->id)) ->latest() - ->paginate($perPage); + ->paginate($perPage, ['id', 'lecturer_id', 'topic', 'notes', 'created_at']); } public function create(array $data): AcademicAdvisingLog @@ -43,10 +42,11 @@ public function create(array $data): AcademicAdvisingLog public function update(AcademicAdvisingLog $log, array $data): AcademicAdvisingLog { - $log->lecturer_id = $data['lecturer_id']; - $log->topic = $data['topic'] ?? null; - $log->notes = $data['notes'] ?? null; - $log->update(); + $log->update([ + 'lecturer_id' => $data['lecturer_id'], + 'topic' => $data['topic'] ?? null, + 'notes' => $data['notes'] ?? null, + ]); $log->students()->sync($data['student_ids']);