diff --git a/app/Services/Admin/Master/DepartmentService.php b/app/Services/Admin/Master/DepartmentService.php
index 3f71ed8..eb1252b 100644
--- a/app/Services/Admin/Master/DepartmentService.php
+++ b/app/Services/Admin/Master/DepartmentService.php
@@ -10,7 +10,7 @@ class DepartmentService
{
public function getAllForSelect(): Collection
{
- return Department::select(['id', 'code', 'name'])->get();
+ return Department::select(['id', 'code', 'name', 'degree_level'])->get();
}
public function paginated(int $perPage = 25, string $search = ''): LengthAwarePaginator
diff --git a/database/seeders/DepartmentSeeder.php b/database/seeders/DepartmentSeeder.php
index 1ccd287..67d3f15 100644
--- a/database/seeders/DepartmentSeeder.php
+++ b/database/seeders/DepartmentSeeder.php
@@ -11,21 +11,21 @@ public function run(): void
{
Department::insert([
[
- 'code' => 'SI',
+ 'code' => 'SI-S1',
'name' => 'Sistem Informasi',
'degree_level' => 'S1',
'created_at' => now(),
'updated_at' => now(),
],
[
- 'code' => 'TI',
+ 'code' => 'TI-S1',
'name' => 'Teknik Industri',
'degree_level' => 'S1',
'created_at' => now(),
'updated_at' => now(),
],
[
- 'code' => 'BD',
+ 'code' => 'BD-S1',
'name' => 'Bisnis Digital',
'degree_level' => 'S1',
'created_at' => now(),
diff --git a/resources/js/pages/admin/announcements/index.tsx b/resources/js/pages/admin/announcements/index.tsx
index 5aad5cc..c9b3f6c 100644
--- a/resources/js/pages/admin/announcements/index.tsx
+++ b/resources/js/pages/admin/announcements/index.tsx
@@ -31,6 +31,7 @@ import type {
Announcement,
AnnouncementDepartment,
} from '@/types/announcement';
+import { formatDepartmentLabel } from '@/types/department';
import { createAnnouncementColumns } from './columns';
type Props = {
@@ -64,7 +65,7 @@ export default function AnnouncementIndex({
label: 'Jurusan',
options: departments.map((department) => ({
value: String(department.id),
- label: department.name,
+ label: formatDepartmentLabel(department),
})),
},
];
@@ -255,7 +256,7 @@ function AnnouncementFields({
key={department.id}
value={String(department.id)}
>
- {department.name}
+ {formatDepartmentLabel(department)}
))}
diff --git a/resources/js/pages/admin/manage/courses/index.tsx b/resources/js/pages/admin/manage/courses/index.tsx
index 9a6f451..05a5dae 100644
--- a/resources/js/pages/admin/manage/courses/index.tsx
+++ b/resources/js/pages/admin/manage/courses/index.tsx
@@ -27,9 +27,10 @@ import {
update,
} from '@/routes/admin/manage/courses';
import type { Course } from '@/types/course';
+import { formatDepartmentLabel } from '@/types/department';
import { createCourseColumns } from './columns';
-type Department = { id: number; name: string };
+type Department = { id: number; name: string; degree_level: string | null };
type Props = {
courses: {
@@ -62,7 +63,7 @@ export default function CourseIndex({
label: 'Jurusan',
options: departments.map((department) => ({
value: String(department.id),
- label: department.name,
+ label: formatDepartmentLabel(department),
})),
},
];
@@ -256,7 +257,7 @@ function CreateForm({
key={dept.id}
value={String(dept.id)}
>
- {dept.name}
+ {formatDepartmentLabel(dept)}
))}
@@ -362,7 +363,7 @@ function EditForm({
key={dept.id}
value={String(dept.id)}
>
- {dept.name}
+ {formatDepartmentLabel(dept)}
))}
diff --git a/resources/js/pages/admin/users/lecturers/create.tsx b/resources/js/pages/admin/users/lecturers/create.tsx
index d620a0e..7837297 100644
--- a/resources/js/pages/admin/users/lecturers/create.tsx
+++ b/resources/js/pages/admin/users/lecturers/create.tsx
@@ -24,8 +24,9 @@ import { PhoneInput } from '@/components/ui/phone-input';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Textarea } from '@/components/ui/textarea';
import { index, store } from '@/routes/admin/users/lecturers';
+import { formatDepartmentLabel } from '@/types/department';
-type Department = { id: number; name: string };
+type Department = { id: number; name: string; degree_level: string | null };
type Props = {
departments: Department[];
@@ -283,8 +284,8 @@ export default function LecturerCreate({ departments }: Props) {
onValueChange={
setSelectedDepartments
}
- itemToStringLabel={(dept) =>
- dept.name
+ itemToStringLabel={
+ formatDepartmentLabel
}
isItemEqualToValue={(a, b) =>
a.id === b.id
@@ -297,11 +298,13 @@ export default function LecturerCreate({ departments }: Props) {
(dept) => (
- {dept.name}
+ {formatDepartmentLabel(
+ dept,
+ )}
),
)}
@@ -326,7 +329,9 @@ export default function LecturerCreate({ departments }: Props) {
key={dept.id}
value={dept}
>
- {dept.name}
+ {formatDepartmentLabel(
+ dept,
+ )}
))}
diff --git a/resources/js/pages/admin/users/lecturers/edit.tsx b/resources/js/pages/admin/users/lecturers/edit.tsx
index 50a6b5a..184a44c 100644
--- a/resources/js/pages/admin/users/lecturers/edit.tsx
+++ b/resources/js/pages/admin/users/lecturers/edit.tsx
@@ -24,8 +24,9 @@ import { PhoneInput } from '@/components/ui/phone-input';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Textarea } from '@/components/ui/textarea';
import { index, update } from '@/routes/admin/users/lecturers';
+import { formatDepartmentLabel } from '@/types/department';
-type Department = { id: number; name: string };
+type Department = { id: number; name: string; degree_level: string | null };
type User = {
id: number;
@@ -41,7 +42,11 @@ type User = {
} | null;
lecturer: {
lecturer_number: string;
- departments: { id: number; name: string }[];
+ departments: {
+ id: number;
+ name: string;
+ degree_level: string | null;
+ }[];
} | null;
};
@@ -318,8 +323,8 @@ export default function LecturerEdit({ user, departments }: Props) {
onValueChange={
setSelectedDepartments
}
- itemToStringLabel={(dept) =>
- dept.name
+ itemToStringLabel={
+ formatDepartmentLabel
}
isItemEqualToValue={(a, b) =>
a.id === b.id
@@ -332,11 +337,13 @@ export default function LecturerEdit({ user, departments }: Props) {
(dept) => (
- {dept.name}
+ {formatDepartmentLabel(
+ dept,
+ )}
),
)}
@@ -361,7 +368,9 @@ export default function LecturerEdit({ user, departments }: Props) {
key={dept.id}
value={dept}
>
- {dept.name}
+ {formatDepartmentLabel(
+ dept,
+ )}
))}
diff --git a/resources/js/pages/admin/users/lecturers/index.tsx b/resources/js/pages/admin/users/lecturers/index.tsx
index ca7ba33..1e6960b 100644
--- a/resources/js/pages/admin/users/lecturers/index.tsx
+++ b/resources/js/pages/admin/users/lecturers/index.tsx
@@ -19,10 +19,11 @@ import {
update_user_status,
exportMethod as exportLecturers,
} from '@/routes/admin/users/lecturers';
+import { formatDepartmentLabel } from '@/types/department';
import type { Lecturer } from './columns';
import { createLecturerColumns } from './columns';
-type Department = { id: number; name: string };
+type Department = { id: number; name: string; degree_level: string | null };
type Props = {
lecturers: {
@@ -61,7 +62,7 @@ export default function LecturerIndex({
label: 'Jurusan',
options: departments.map((department) => ({
value: String(department.id),
- label: department.name,
+ label: formatDepartmentLabel(department),
})),
},
];
diff --git a/resources/js/pages/admin/users/students/create.tsx b/resources/js/pages/admin/users/students/create.tsx
index 3f7449f..19947e1 100644
--- a/resources/js/pages/admin/users/students/create.tsx
+++ b/resources/js/pages/admin/users/students/create.tsx
@@ -28,8 +28,9 @@ import {
} from '@/components/ui/select';
import { Textarea } from '@/components/ui/textarea';
import { index, store } from '@/routes/admin/users/students';
+import { formatDepartmentLabel } from '@/types/department';
-type Department = { id: number; name: string };
+type Department = { id: number; name: string; degree_level: string | null };
type Lecturer = {
id: number;
lecturer_number: string;
@@ -289,7 +290,9 @@ export default function StudentCreate({ departments, lecturers }: Props) {
key={dept.id}
value={String(dept.id)}
>
- {dept.name}
+ {formatDepartmentLabel(
+ dept,
+ )}
))}
diff --git a/resources/js/pages/admin/users/students/edit.tsx b/resources/js/pages/admin/users/students/edit.tsx
index 83ec83e..9c25ea3 100644
--- a/resources/js/pages/admin/users/students/edit.tsx
+++ b/resources/js/pages/admin/users/students/edit.tsx
@@ -28,8 +28,9 @@ import {
} from '@/components/ui/select';
import { Textarea } from '@/components/ui/textarea';
import { index, update } from '@/routes/admin/users/students';
+import { formatDepartmentLabel } from '@/types/department';
-type Department = { id: number; name: string };
+type Department = { id: number; name: string; degree_level: string | null };
type Lecturer = {
id: number;
lecturer_number: string;
@@ -336,7 +337,9 @@ export default function StudentEdit({ user, departments, lecturers }: Props) {
key={dept.id}
value={String(dept.id)}
>
- {dept.name}
+ {formatDepartmentLabel(
+ dept,
+ )}
))}
diff --git a/resources/js/pages/admin/users/students/index.tsx b/resources/js/pages/admin/users/students/index.tsx
index aa39512..e851abd 100644
--- a/resources/js/pages/admin/users/students/index.tsx
+++ b/resources/js/pages/admin/users/students/index.tsx
@@ -21,10 +21,11 @@ import {
exportMethod as exportStudents,
index as studentsIndex,
} from '@/routes/admin/users/students';
+import { formatDepartmentLabel } from '@/types/department';
import { createStudentColumns } from './columns';
import type { Student } from './columns';
-type Department = { id: number; name: string };
+type Department = { id: number; name: string; degree_level: string | null };
type StatusOption = { value: string; label: string };
type Props = {
@@ -70,7 +71,7 @@ export default function StudentIndex({
label: 'Jurusan',
options: departments.map((department) => ({
value: String(department.id),
- label: department.name,
+ label: formatDepartmentLabel(department),
})),
},
{
diff --git a/resources/js/types/announcement.ts b/resources/js/types/announcement.ts
index 8f5de5b..83c9363 100644
--- a/resources/js/types/announcement.ts
+++ b/resources/js/types/announcement.ts
@@ -2,6 +2,7 @@ export type AnnouncementDepartment = {
id: number;
code: string;
name: string;
+ degree_level: string | null;
};
export type AnnouncementCreator = {
diff --git a/resources/js/types/department.ts b/resources/js/types/department.ts
index 214ef5d..e555475 100644
--- a/resources/js/types/department.ts
+++ b/resources/js/types/department.ts
@@ -10,3 +10,12 @@ export type Department = {
created_at: string;
updated_at: string;
};
+
+export function formatDepartmentLabel(department: {
+ name: string;
+ degree_level?: string | null;
+}): string {
+ return department.degree_level
+ ? `${department.name} (${department.degree_level})`
+ : department.name;
+}