feat: update AcademicAdvisingLogController and AcademicAdvisingLogService to accept User parameter for improved access control; enhance query scoping based on user roles
This commit is contained in:
parent
80997b97b4
commit
51e943572a
@ -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'),
|
||||
),
|
||||
|
||||
@ -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']);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user