diff --git a/app/Services/Admin/Services/LetterRequestService.php b/app/Services/Admin/Services/LetterRequestService.php index 4c64d65..a035f1c 100644 --- a/app/Services/Admin/Services/LetterRequestService.php +++ b/app/Services/Admin/Services/LetterRequestService.php @@ -14,10 +14,11 @@ class LetterRequestService public function paginated(User $user, int $perPage = 25, string $search = '', ?string $status = null): LengthAwarePaginator { return LetterRequest::query() - ->with(['user.profile', 'user.student.department', 'processor.profile']) + ->with(['user.profile', 'user.student.department', 'user.lecturer.departments', 'processor.profile']) ->when($search, fn ($q) => $q->where('letter_type', 'like', "%{$search}%") ->orWhereHas('user', fn ($q) => $q->whereHas('profile', fn ($q) => $q->where('full_name', 'like', "%{$search}%")) - ->orWhereHas('student', fn ($q) => $q->where('student_number', 'like', "%{$search}%")))) + ->orWhereHas('student', fn ($q) => $q->where('student_number', 'like', "%{$search}%")) + ->orWhereHas('lecturer', fn ($q) => $q->where('lecturer_number', 'like', "%{$search}%")))) ->when($status, fn ($q) => $q->where('status', $status)) ->when($user->hasRole(UserRole::Mahasiswa->value) || $user->hasRole(UserRole::Dosen->value), fn ($q) => $q->where('user_id', $user->id)) ->latest() diff --git a/resources/js/pages/admin/services/letter-requests/columns.tsx b/resources/js/pages/admin/services/letter-requests/columns.tsx index 03a6cf9..04403b1 100644 --- a/resources/js/pages/admin/services/letter-requests/columns.tsx +++ b/resources/js/pages/admin/services/letter-requests/columns.tsx @@ -49,10 +49,15 @@ export function createLetterRequestColumns( const columns: ColumnDef[] = [ { - accessorKey: 'user.student.student_number', - header: () => Mahasiswa, + id: 'requester', + header: () => Pemohon, cell: ({ row }) => { const user = row.original.user; + const identifier = user?.student + ? `${user.student.student_number} · ${user.student.department?.name ?? '-'}` + : user?.lecturer + ? `${user.lecturer.lecturer_number} · ${user.lecturer.departments.map((d) => d.name).join(', ') || '-'}` + : '-'; return (
@@ -60,8 +65,7 @@ export function createLetterRequestColumns( {user?.profile?.full_name ?? 'N/A'}

- {user?.student?.student_number} ·{' '} - {user?.student?.department?.name ?? '-'} + {identifier}

); diff --git a/resources/js/pages/admin/services/letter-requests/index.tsx b/resources/js/pages/admin/services/letter-requests/index.tsx index 660353b..c49ddc6 100644 --- a/resources/js/pages/admin/services/letter-requests/index.tsx +++ b/resources/js/pages/admin/services/letter-requests/index.tsx @@ -212,7 +212,7 @@ export default function LetterRequestIndex({ }} title="Hapus Surat Permohonan" description={(letterRequest) => - `Apakah Anda yakin ingin menghapus permohonan "${letterRequest.letter_type}" milik "${letterRequest.user?.profile?.full_name ?? 'mahasiswa ini'}"? Tindakan ini tidak dapat dibatalkan.` + `Apakah Anda yakin ingin menghapus permohonan "${letterRequest.letter_type}" milik "${letterRequest.user?.profile?.full_name ?? 'pemohon ini'}"? Tindakan ini tidak dapat dibatalkan.` } onConfirm={handleDelete} /> @@ -237,7 +237,7 @@ function LetterRequestFields({ diff --git a/resources/js/types/letter-request.ts b/resources/js/types/letter-request.ts index e14762c..434c896 100644 --- a/resources/js/types/letter-request.ts +++ b/resources/js/types/letter-request.ts @@ -21,6 +21,10 @@ export type LetterRequestUser = { student_number: string; department: { id: number; name: string } | null; } | null; + lecturer: { + lecturer_number: string; + departments: { id: number; name: string }[]; + } | null; }; export type LetterRequestProcessor = {