feat: enhance AcademicAdvisingLogService to filter logs based on student role; update RolePermissionSeeder to include view-academic-advising-logs permission; rename 'Pembimbing Akademik' to 'Dosen' in UI
This commit is contained in:
parent
51e943572a
commit
37ce3c15ea
@ -13,6 +13,11 @@ public function paginated(User $user, int $perPage = 25, string $search = '', ?i
|
|||||||
{
|
{
|
||||||
return AcademicAdvisingLog::query()
|
return AcademicAdvisingLog::query()
|
||||||
->with([
|
->with([
|
||||||
|
'students' => function ($q) use ($user) {
|
||||||
|
if ($user->hasRole(UserRole::Mahasiswa->value)) {
|
||||||
|
$q->where('students.id', $user->student?->id);
|
||||||
|
}
|
||||||
|
},
|
||||||
'students.user.profile',
|
'students.user.profile',
|
||||||
'students.department',
|
'students.department',
|
||||||
'lecturer.user.profile',
|
'lecturer.user.profile',
|
||||||
@ -23,6 +28,7 @@ public function paginated(User $user, int $perPage = 25, string $search = '', ?i
|
|||||||
->orWhereHas('user.profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%"))))
|
->orWhereHas('user.profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%"))))
|
||||||
->when($lecturerId, fn ($q) => $q->where('lecturer_id', $lecturerId))
|
->when($lecturerId, fn ($q) => $q->where('lecturer_id', $lecturerId))
|
||||||
->when($user->hasRole(UserRole::Dosen->value), fn ($q) => $q->where('lecturer_id', $user->lecturer?->id))
|
->when($user->hasRole(UserRole::Dosen->value), fn ($q) => $q->where('lecturer_id', $user->lecturer?->id))
|
||||||
|
->when($user->hasRole(UserRole::Mahasiswa->value), fn ($q) => $q->whereHas('students', fn ($q) => $q->where('students.id', $user->student?->id)))
|
||||||
->latest()
|
->latest()
|
||||||
->paginate($perPage, ['id', 'lecturer_id', 'topic', 'notes', 'created_at']);
|
->paginate($perPage, ['id', 'lecturer_id', 'topic', 'notes', 'created_at']);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,6 +40,7 @@ public function run(): void
|
|||||||
'mahasiswa' => [
|
'mahasiswa' => [
|
||||||
'view-dashboard',
|
'view-dashboard',
|
||||||
'view-academic-terms',
|
'view-academic-terms',
|
||||||
|
'view-academic-advising-logs',
|
||||||
'view-courses',
|
'view-courses',
|
||||||
'view-course-registrations',
|
'view-course-registrations',
|
||||||
'view-letter-requests',
|
'view-letter-requests',
|
||||||
|
|||||||
@ -58,7 +58,7 @@ export function createAcademicAdvisingLogColumns(
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
accessorKey: 'lecturer.user.profile.full_name',
|
accessorKey: 'lecturer.user.profile.full_name',
|
||||||
header: () => <span>Pembimbing Akademik</span>,
|
header: () => <span>Dosen</span>,
|
||||||
cell: ({ row }) => {
|
cell: ({ row }) => {
|
||||||
const lecturer = row.original.lecturer;
|
const lecturer = row.original.lecturer;
|
||||||
|
|
||||||
|
|||||||
@ -258,7 +258,7 @@ function ViewDetailDialog({
|
|||||||
|
|
||||||
<div className="grid gap-1">
|
<div className="grid gap-1">
|
||||||
<Label className="text-muted-foreground">
|
<Label className="text-muted-foreground">
|
||||||
Pembimbing Akademik
|
Dosen
|
||||||
</Label>
|
</Label>
|
||||||
<p>
|
<p>
|
||||||
{log.lecturer?.user?.profile?.full_name ??
|
{log.lecturer?.user?.profile?.full_name ??
|
||||||
@ -338,7 +338,7 @@ function AdvisingLogFields({
|
|||||||
<>
|
<>
|
||||||
<div className="grid gap-2">
|
<div className="grid gap-2">
|
||||||
<Label>
|
<Label>
|
||||||
Pembimbing Akademik{' '}
|
Dosen{' '}
|
||||||
<span className="text-destructive">*</span>
|
<span className="text-destructive">*</span>
|
||||||
</Label>
|
</Label>
|
||||||
<input
|
<input
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user