Skip to content

Commit 532f92f

Browse files
Merge pull request #328 from lara-learning/feat/feedback-for-mentor
feat: feedback for mentor
2 parents b76a4b5 + 84acda1 commit 532f92f

28 files changed

+450
-56
lines changed

packages/api/schema.gql

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ input PaperInput {
143143
subject: String!
144144
status: PaperStatus!
145145
briefing: [PaperEntryInput!]!
146-
feedback: [PaperEntryInput!]!
146+
feedbackTrainee: [PaperEntryInput!]!
147+
feedbackMentor: [PaperEntryInput!]!
147148
}
148149

149150
input PaperUpdateInput {
@@ -159,7 +160,8 @@ input PaperUpdateInput {
159160
subject: String!
160161
status: PaperStatus!
161162
briefing: [PaperEntryInput!]!
162-
feedback: [PaperEntryInput!]!
163+
feedbackTrainee: [PaperEntryInput!]!
164+
feedbackMentor: [PaperEntryInput!]!
163165
}
164166

165167
input AnswerPaperInput {
@@ -735,7 +737,8 @@ type Paper {
735737
trainerId: ID!
736738
status: PaperStatus!
737739
briefing: [PaperFormData!]!
738-
feedback: [PaperFormData!]!
740+
feedbackTrainee: [PaperFormData!]!
741+
feedbackMentor: [PaperFormData!]!
739742
conclusion: String
740743
archivedAt: String
741744
createdAt: String

packages/api/src/graphql.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,8 @@ export type GqlPaper = {
548548
client: Scalars['String']['output'];
549549
conclusion?: Maybe<Scalars['String']['output']>;
550550
createdAt?: Maybe<Scalars['String']['output']>;
551-
feedback: Array<GqlPaperFormData>;
551+
feedbackMentor: Array<GqlPaperFormData>;
552+
feedbackTrainee: Array<GqlPaperFormData>;
552553
id: Scalars['ID']['output'];
553554
mentorId: Scalars['ID']['output'];
554555
periodEnd?: Maybe<Scalars['String']['output']>;
@@ -581,7 +582,8 @@ export type GqlPaperFormData = {
581582
export type GqlPaperInput = {
582583
briefing: Array<GqlPaperEntryInput>;
583584
client: Scalars['String']['input'];
584-
feedback: Array<GqlPaperEntryInput>;
585+
feedbackMentor: Array<GqlPaperEntryInput>;
586+
feedbackTrainee: Array<GqlPaperEntryInput>;
585587
mentorId: Scalars['ID']['input'];
586588
periodEnd?: InputMaybe<Scalars['String']['input']>;
587589
periodStart?: InputMaybe<Scalars['String']['input']>;
@@ -604,7 +606,8 @@ export type GqlPaperStatus =
604606
export type GqlPaperUpdateInput = {
605607
briefing: Array<GqlPaperEntryInput>;
606608
client: Scalars['String']['input'];
607-
feedback: Array<GqlPaperEntryInput>;
609+
feedbackMentor: Array<GqlPaperEntryInput>;
610+
feedbackTrainee: Array<GqlPaperEntryInput>;
608611
id: Scalars['ID']['input'];
609612
mentorId: Scalars['ID']['input'];
610613
periodEnd?: InputMaybe<Scalars['String']['input']>;
@@ -1211,7 +1214,8 @@ export type GqlPaperResolvers<ContextType = Context, ParentType extends GqlResol
12111214
client?: Resolver<GqlResolversTypes['String'], ParentType, ContextType>;
12121215
conclusion?: Resolver<Maybe<GqlResolversTypes['String']>, ParentType, ContextType>;
12131216
createdAt?: Resolver<Maybe<GqlResolversTypes['String']>, ParentType, ContextType>;
1214-
feedback?: Resolver<Array<GqlResolversTypes['PaperFormData']>, ParentType, ContextType>;
1217+
feedbackMentor?: Resolver<Array<GqlResolversTypes['PaperFormData']>, ParentType, ContextType>;
1218+
feedbackTrainee?: Resolver<Array<GqlResolversTypes['PaperFormData']>, ParentType, ContextType>;
12151219
id?: Resolver<GqlResolversTypes['ID'], ParentType, ContextType>;
12161220
mentorId?: Resolver<GqlResolversTypes['ID'], ParentType, ContextType>;
12171221
periodEnd?: Resolver<Maybe<GqlResolversTypes['String']>, ParentType, ContextType>;

packages/api/src/models.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,10 @@ export type Report = Omit<GqlReport, 'days' | 'comments' | 'nextReportLink' | 'p
7070
traineeId: string
7171
}
7272

73-
export type Paper = Omit<GqlPaper, 'briefing' | 'feedback'> & {
73+
export type Paper = Omit<GqlPaper, 'briefing' | 'feedbackTrainee' | 'feedbackMentor'> & {
7474
briefing: GqlPaperFormData[]
75-
feedback: GqlPaperFormData[]
75+
feedbackTrainee: GqlPaperFormData[]
76+
feedbackMentor: GqlPaperFormData[]
7677
}
7778

7879
export type PaperFormData = Omit<GqlPaperFormData, 'answer' | 'question' | 'questionId' | 'hint' | 'id'> & {

packages/backend/seeds/papers.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"subject": "Android Entwicklung",
1313
"status": "NotStarted",
1414
"briefing": [],
15-
"feedback": []
15+
"feedbackTrainee": [],
16+
"feedbackMentor": []
1617
},
1718
{
1819
"id": "2",
@@ -27,6 +28,7 @@
2728
"subject": "IOS Entwicklung",
2829
"status": "NotStarted",
2930
"briefing": [],
30-
"feedback": []
31+
"feedbackTrainee": [],
32+
"feedbackMentor": []
3133
}
3234
]

packages/backend/src/permissions.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ export const isMentor = (user: User): user is Mentor => {
2626
return user.type === 'Mentor'
2727
}
2828

29+
const mentor = rule({ cache: 'contextual' })(
30+
(_parent, _args, ctx: AuthenticatedContext) => isMentor(ctx.currentUser) || 'Wrong Usertype'
31+
)
32+
2933
export const isAdmin = (user: User): user is Admin => {
3034
return user.type === 'Admin'
3135
}
@@ -95,9 +99,11 @@ export const permissions = shield<unknown, Context>(
9599
claimTrainee: and(authenticated, trainer),
96100
unclaimTrainee: and(authenticated, trainer),
97101
createPaper: and(authenticated, or(trainee, trainer)),
98-
updatePaper: and(authenticated, or(trainee, trainer)),
99102
deletePaper: and(authenticated, or(trainee, trainer)),
100103

104+
// Trainer and Trainee and Mentor mutations
105+
updatePaper: and(authenticated, or(trainee, trainer, mentor)),
106+
101107
//Admin mutations
102108
createTrainee: and(authenticated, admin),
103109
updateTrainee: and(authenticated, admin),

packages/backend/src/resolvers/paper.resolver.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@ export const paperResolver: GqlResolvers<AuthenticatedContext> = {
1010
},
1111
updatePaper: async (_parent, { input }) => {
1212
const briefing = input.briefing.map((entry: GqlPaperEntryInput) => generatePaperEntry(entry))
13-
return await updatePaper({ ...input, briefing }, { updateKeys: ['briefing', 'feedback', 'status'] })
13+
return await updatePaper(
14+
{ ...input, briefing },
15+
{ updateKeys: ['briefing', 'feedbackTrainee', 'feedbackMentor', 'status'] }
16+
)
1417
},
1518
deletePaper: async (_parent, { paperId }, { currentUser }) => {
1619
const papers = await papersByTrainer(currentUser.id)

packages/backend/src/services/paper.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,7 @@ export const generatePaper = (paperInput: GqlPaperInput): GqlPaper => {
1313
createdAt: new Date().toISOString(),
1414
...paperInput,
1515
briefing: paperInput.briefing.map((entry) => generatePaperEntry(entry)),
16+
feedbackTrainee: paperInput.feedbackTrainee.map((entry) => generatePaperEntry(entry)),
17+
feedbackMentor: paperInput.feedbackMentor.map((entry) => generatePaperEntry(entry)),
1618
}
1719
}

packages/backend/src/services/print.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ const transformPaper = (paper: Paper): PrintPaper => {
136136
return {
137137
status: paper.status,
138138
briefing: transformPaperForm(paper.briefing),
139-
feedback: transformPaperForm(paper.feedback),
139+
feedback: transformPaperForm(paper.feedbackTrainee),
140140
client: paper.client,
141141
periodStart: paper.periodStart ?? '',
142142
periodEnd: paper.periodEnd ?? '',

packages/backend/src/test/paper.service.test.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ describe('createPaperData', () => {
4747
hint: 'TestHint',
4848
},
4949
],
50-
feedback: [],
50+
feedbackTrainee: [],
51+
feedbackMentor: [],
5152
}
5253

5354
paper = generatePaper(paperInput)

0 commit comments

Comments
 (0)