diff --git a/frontend/src/api/schedule.ts b/frontend/src/api/schedule.ts
index a45e783..b083cb9 100644
--- a/frontend/src/api/schedule.ts
+++ b/frontend/src/api/schedule.ts
@@ -1,4 +1,5 @@
import axiosInstance from './axiosInstance'
+import { Student } from './students'
interface TermOfDefences {
id: number
@@ -8,7 +9,7 @@ interface TermOfDefences {
members_of_committee: {
members: { first_name: string; last_name: string }[]
}
- group: { name: string }
+ group: { name: string; students: Student[] }
}
export const getTermsOfDefences = (scheduleId: number) => {
@@ -16,6 +17,13 @@ export const getTermsOfDefences = (scheduleId: number) => {
term_of_defences: TermOfDefences[]
}>(`coordinator/enrollments/${scheduleId}/term-of-defences/`)
}
+export const getTermsOfDefencesWithGroups = (scheduleId: number) => {
+ return axiosInstance.get<{
+ term_of_defences: TermOfDefences[]
+ }>(
+ `coordinator/enrollments/${scheduleId}/assigned-group-to-term-of-defences/`,
+ )
+}
export const getStudentsTermsOfDefences = (
scheduleId: number,
diff --git a/frontend/src/views/coordinator/EditSchedule.tsx b/frontend/src/views/coordinator/EditSchedule.tsx
index 96117f7..ac2d546 100644
--- a/frontend/src/views/coordinator/EditSchedule.tsx
+++ b/frontend/src/views/coordinator/EditSchedule.tsx
@@ -89,7 +89,19 @@ const EditSchedule = ({
))}
{eventData.resource.group && (
-
Grupa: {eventData.resource.group.name}
+ <>
+ Grupa: {eventData.resource.group.name}
+
+ {eventData.resource.group.students?.map((member: any) => (
+ -
+ {member.first_name} {member.last_name}
+
+ ))}
+
+ >
)}
>
) : (
diff --git a/frontend/src/views/coordinator/Schedule.tsx b/frontend/src/views/coordinator/Schedule.tsx
index e9a184e..336a552 100644
--- a/frontend/src/views/coordinator/Schedule.tsx
+++ b/frontend/src/views/coordinator/Schedule.tsx
@@ -6,6 +6,7 @@ import {
createEvent,
downloadSchedule,
getTermsOfDefences,
+ getTermsOfDefencesWithGroups,
setDateOfExaminationSchedule,
} from '../../api/schedule'
import { useParams } from 'react-router-dom'
@@ -92,36 +93,64 @@ const Schedule = () => {
},
)
- const { refetch } = useQuery(
+ const { refetch, isFetching } = useQuery(
['schedules'],
() => getTermsOfDefences(Number(id)),
{
- onSuccess: (data) => {
- setEvents(
- data.data.term_of_defences.map(
- ({
- id,
- start_date,
- end_date,
- title = 'Obrona',
- members_of_committee,
- group,
- }) => {
- return {
+ onSettled: (data) => {
+ if (data) {
+ setEvents(
+ data.data.term_of_defences.map(
+ ({
id,
- title: `${group?.name ?? '-'}`,
- start: new Date(start_date),
- end: new Date(end_date),
- resource: {
- members_of_committee,
- },
- }
- },
- ),
- )
+ start_date,
+ end_date,
+ title = 'Obrona',
+ members_of_committee,
+ group,
+ }) => {
+ return {
+ id,
+ title: `${group?.name ?? '-'}`,
+ start: new Date(start_date),
+ end: new Date(end_date),
+ resource: {
+ members_of_committee,
+ group,
+ },
+ }
+ },
+ ),
+ )
+ }
},
},
)
+
+ const { refetch: refetchWithGroups } = useQuery(
+ ['schedules_groups'],
+ () => getTermsOfDefencesWithGroups(Number(id)),
+ {
+ onSettled: (data) => {
+ data?.data.term_of_defences.forEach((term) => {
+ const index = events.findIndex((event) => event.id === term.id)
+ if (index !== -1) {
+ const eventsCopy = [...events]
+ eventsCopy[index] = {
+ ...eventsCopy[index],
+ resource: {
+ ...eventsCopy[index].resource,
+ group: term.group,
+ },
+ }
+ setEvents(eventsCopy)
+ }
+ })
+ },
+ enabled: !isFetching,
+ },
+ )
+
const { mutateAsync: mutateCreateEvent } = useMutation(
['createEvent'],
(data: {
@@ -197,6 +226,7 @@ const Schedule = () => {
project_supervisors: data?.project_supervisors,
})
refetch()
+ refetchWithGroups()
reset()
closeModal()
}
diff --git a/frontend/src/views/coordinator/Students.tsx b/frontend/src/views/coordinator/Students.tsx
index 5a81491..439fdb9 100644
--- a/frontend/src/views/coordinator/Students.tsx
+++ b/frontend/src/views/coordinator/Students.tsx
@@ -132,7 +132,7 @@ const Students = () => {
))}
- */}
{
Nazwisko |
Indeks |
Zapisany |
- Tryb |
|
@@ -185,7 +184,6 @@ const Students = () => {
{last_name} |
{index} |
{group === null ? 'Nie' : 'Tak'} |
- {mode ? 'Stacjonarny' : 'Niestacjonarny'} |
|