From 722598cea9775d9f8f4f4526d6d8cfc6ae05ba0f Mon Sep 17 00:00:00 2001 From: Julian-Wogersien Date: Tue, 11 Nov 2025 15:13:22 +0100 Subject: [PATCH 1/2] feat: allow trainers to comment --- packages/frontend/src/graphql/index.tsx | 59 ++++++++++++++++++- .../paper-feedback-discussion-page-data.gql | 57 ++++++++++++++++++ packages/frontend/src/locales/de.ts | 1 + packages/frontend/src/locales/en.ts | 1 + packages/frontend/src/locales/translation.ts | 1 + .../pages/paper-feedback-discussion-page.tsx | 8 +-- .../frontend/src/pages/trainer-paper-page.tsx | 14 ++++- packages/frontend/src/routes.tsx | 1 + 8 files changed, 134 insertions(+), 8 deletions(-) diff --git a/packages/frontend/src/graphql/index.tsx b/packages/frontend/src/graphql/index.tsx index e40fce32..90e0728e 100644 --- a/packages/frontend/src/graphql/index.tsx +++ b/packages/frontend/src/graphql/index.tsx @@ -1314,7 +1314,7 @@ export type OnboardingPageDataQuery = { __typename?: 'Query', currentUser?: { __ export type FeedbackDiscussionPageDataQueryVariables = Exact<{ [key: string]: never; }>; -export type FeedbackDiscussionPageDataQuery = { __typename?: 'Query', currentUser?: { __typename?: 'Admin', id: string, firstName: string, lastName: string } | { __typename?: 'Mentor', id: string, firstName: string, lastName: string, papers?: Array<{ __typename?: 'Paper', id: string, traineeId: string, trainerId: string, client: string, mentorId: string, periodStart?: string | undefined, periodEnd?: string | undefined, schoolPeriodStart?: string | undefined, schoolPeriodEnd?: string | undefined, subject: string, status: PaperStatus, briefing: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, lastName: string, firstName: string, userId: string, published: boolean }> }>, feedbackTrainee: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }>, feedbackMentor: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }> } | undefined> | undefined } | { __typename?: 'Trainee', id: string, firstName: string, lastName: string, papers?: Array<{ __typename?: 'Paper', id: string, traineeId: string, trainerId: string, client: string, mentorId: string, periodStart?: string | undefined, periodEnd?: string | undefined, schoolPeriodStart?: string | undefined, schoolPeriodEnd?: string | undefined, subject: string, status: PaperStatus, briefing: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }>, feedbackTrainee: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }>, feedbackMentor: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }> } | undefined> | undefined } | { __typename?: 'Trainer', id: string, firstName: string, lastName: string } | undefined }; +export type FeedbackDiscussionPageDataQuery = { __typename?: 'Query', currentUser?: { __typename?: 'Admin', id: string, firstName: string, lastName: string } | { __typename?: 'Mentor', id: string, firstName: string, lastName: string, papers?: Array<{ __typename?: 'Paper', id: string, traineeId: string, trainerId: string, client: string, mentorId: string, periodStart?: string | undefined, periodEnd?: string | undefined, schoolPeriodStart?: string | undefined, schoolPeriodEnd?: string | undefined, subject: string, status: PaperStatus, briefing: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, lastName: string, firstName: string, userId: string, published: boolean }> }>, feedbackTrainee: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }>, feedbackMentor: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }> } | undefined> | undefined } | { __typename?: 'Trainee', id: string, firstName: string, lastName: string, papers?: Array<{ __typename?: 'Paper', id: string, traineeId: string, trainerId: string, client: string, mentorId: string, periodStart?: string | undefined, periodEnd?: string | undefined, schoolPeriodStart?: string | undefined, schoolPeriodEnd?: string | undefined, subject: string, status: PaperStatus, briefing: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }>, feedbackTrainee: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }>, feedbackMentor: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }> } | undefined> | undefined } | { __typename?: 'Trainer', id: string, firstName: string, lastName: string, papers?: Array<{ __typename?: 'Paper', id: string, traineeId: string, trainerId: string, client: string, mentorId: string, periodStart?: string | undefined, periodEnd?: string | undefined, schoolPeriodStart?: string | undefined, schoolPeriodEnd?: string | undefined, subject: string, status: PaperStatus, briefing: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }>, feedbackTrainee: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }>, feedbackMentor: Array<{ __typename?: 'PaperFormData', id: string, questionId: string, question: string, answer?: string | undefined, hint?: string | undefined, comments: Array<{ __typename?: 'PaperComment', text: string, userId: string, lastName: string, firstName: string, published: boolean }> }> } | undefined> | undefined } | undefined }; export type PrintDataQueryVariables = Exact<{ ids: Array | Scalars['ID']['input']; @@ -3086,6 +3086,63 @@ export const FeedbackDiscussionPageDataDocument = gql` } } } + ... on Trainer { + papers { + id + traineeId + trainerId + client + mentorId + periodStart + periodEnd + schoolPeriodStart + schoolPeriodEnd + subject + status + briefing { + id + questionId + question + answer + hint + comments { + text + userId + lastName + firstName + published + } + } + feedbackTrainee { + id + questionId + question + answer + hint + comments { + text + userId + lastName + firstName + published + } + } + feedbackMentor { + id + questionId + question + answer + hint + comments { + text + userId + lastName + firstName + published + } + } + } + } } } `; diff --git a/packages/frontend/src/graphql/queries/paper-feedback-discussion-page-data.gql b/packages/frontend/src/graphql/queries/paper-feedback-discussion-page-data.gql index fc88cac0..a86c6723 100644 --- a/packages/frontend/src/graphql/queries/paper-feedback-discussion-page-data.gql +++ b/packages/frontend/src/graphql/queries/paper-feedback-discussion-page-data.gql @@ -117,5 +117,62 @@ query FeedbackDiscussionPageData { } } } + ... on Trainer { + papers { + id + traineeId + trainerId + client + mentorId + periodStart + periodEnd + schoolPeriodStart + schoolPeriodEnd + subject + status + briefing { + id + questionId + question + answer + hint + comments { + text + userId + lastName + firstName + published + } + } + feedbackTrainee { + id + questionId + question + answer + hint + comments { + text + userId + lastName + firstName + published + } + } + feedbackMentor { + id + questionId + question + answer + hint + comments { + text + userId + lastName + firstName + published + } + } + } + } } } diff --git a/packages/frontend/src/locales/de.ts b/packages/frontend/src/locales/de.ts index 490d2f44..1f8f8ac8 100644 --- a/packages/frontend/src/locales/de.ts +++ b/packages/frontend/src/locales/de.ts @@ -15,6 +15,7 @@ const germanTranslation: Translation = { save: 'Speichern', edit: 'Bearbeiten', done: 'Fertig', + comment: 'Kommentiere', markDelete: 'für Löschung markieren', unmarkDelete: 'Löschmarkierung aufheben', deleteAt: 'Löschen nach', diff --git a/packages/frontend/src/locales/en.ts b/packages/frontend/src/locales/en.ts index 1fc43e7d..2a7f5e34 100644 --- a/packages/frontend/src/locales/en.ts +++ b/packages/frontend/src/locales/en.ts @@ -16,6 +16,7 @@ const englishTranslation: Translation = { cancel: 'Cancel', edit: 'edit', done: 'done', + comment: 'Comment', markDelete: 'mark for deletion', unmarkDelete: 'remove deletion mark', deleteAt: 'delete at', diff --git a/packages/frontend/src/locales/translation.ts b/packages/frontend/src/locales/translation.ts index 154c5e14..d5b1693b 100644 --- a/packages/frontend/src/locales/translation.ts +++ b/packages/frontend/src/locales/translation.ts @@ -14,6 +14,7 @@ export default interface Translation { cancel: string edit: string done: string + comment: string markDelete: string unmarkDelete: string deleteAt: string diff --git a/packages/frontend/src/pages/paper-feedback-discussion-page.tsx b/packages/frontend/src/pages/paper-feedback-discussion-page.tsx index 2897d9e1..2f832b5f 100644 --- a/packages/frontend/src/pages/paper-feedback-discussion-page.tsx +++ b/packages/frontend/src/pages/paper-feedback-discussion-page.tsx @@ -72,7 +72,9 @@ export const PaperFeedbackDiscussionPage: React.FC = () => { const data = useFeedbackDiscussionPageDataQuery() const currentUser = - data.data?.currentUser?.__typename === 'Mentor' || data.data?.currentUser?.__typename === 'Trainee' + data.data?.currentUser?.__typename === 'Mentor' || + data.data?.currentUser?.__typename === 'Trainee' || + data.data?.currentUser?.__typename === 'Trainer' ? data.data.currentUser : undefined @@ -82,10 +84,6 @@ export const PaperFeedbackDiscussionPage: React.FC = () => { const [updatePaper] = useUpdatePaperMutation() - console.log('current user: ', currentUser) - console.log('paper: ', paper) - console.log('papers: ', papers) - if (!paper || !currentUser) { return (