From 0376cffb193f230faedeaaeb4dbf4c273abed229 Mon Sep 17 00:00:00 2001 From: elweyn Date: Mon, 22 Aug 2022 10:30:48 +0200 Subject: [PATCH] First steps createContributionMessage method of ContributionMessageResolver. --- .../resolver/ContributionMessageResolver.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 backend/src/graphql/resolver/ContributionMessageResolver.ts diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.ts b/backend/src/graphql/resolver/ContributionMessageResolver.ts new file mode 100644 index 000000000..e10bcf853 --- /dev/null +++ b/backend/src/graphql/resolver/ContributionMessageResolver.ts @@ -0,0 +1,33 @@ +import { RIGHTS } from '@/auth/RIGHTS' +import { Context, getUser } from '@/server/context' +import { ContributionMessage } from '@entity/ContributionMessage' +import { Args, Authorized, Ctx, Mutation, Resolver } from 'type-graphql' +import ContributionMessageArgs from '@arg/ContributionMessageArgs' +import { Contribution } from '@entity/Contribution' +import { ContributionMessageType } from '@enum/MessageType' + +@Resolver() +export class ContributionResolver { + @Authorized([RIGHTS.CREATE_CONTRIBUTION_MESSAGE]) + @Mutation(() => ContributionMessage) + async createContributionMessage( + @Args() { contributionId, message }: ContributionMessageArgs, + @Ctx() context: Context, + ): Promise { + const user = getUser(context) + const contribution = await Contribution.findOneOrFail({ id: contributionId }) + if (!user.isAdmin && contribution.userId !== user.id) { + throw new Error('Can not send message to contribution of another user') + } + + const contributionMessage = new ContributionMessage() + contributionMessage.contributionId = contributionId + contributionMessage.createdAt = new Date() + contributionMessage.message = message + contributionMessage.userId = user.id + contributionMessage.type = ContributionMessageType.DIALOG + + ContributionMessage.save(contributionMessage) + return contributionMessage + } +}