diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 68d3d4a8d..9a5609b75 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -62,9 +62,10 @@ import { MEMO_MAX_CHARS, MEMO_MIN_CHARS, } from './const/const' -import { ContributionMessage } from '@entity/ContributionMessage' +import { ContributionMessage as DbContributionMessage } from '@entity/ContributionMessage' import ContributionMessageArgs from '@arg/ContributionMessageArgs' import { ContributionMessageType } from '@enum/MessageType' +import { ContributionMessage } from '@model/ContributionMessage' // const EMAIL_OPT_IN_REGISTER = 1 // const EMAIL_OPT_UNKNOWN = 3 // elopage? @@ -710,16 +711,18 @@ export class AdminResolver { const queryRunner = getConnection().createQueryRunner() await queryRunner.connect() await queryRunner.startTransaction('READ UNCOMMITTED') - const contributionMessage = new ContributionMessage() + const contributionMessage = DbContributionMessage.create() try { - const contribution = await Contribution.findOneOrFail({ id: contributionId }) - + const contribution = await Contribution.findOne({ id: contributionId }) + if (!contribution) { + throw new Error('Contribution not found') + } contributionMessage.contributionId = contributionId contributionMessage.createdAt = new Date() contributionMessage.message = message contributionMessage.userId = user.id contributionMessage.type = ContributionMessageType.DIALOG - await queryRunner.manager.insert(ContributionMessage, contributionMessage) + await queryRunner.manager.insert(DbContributionMessage, contributionMessage) if ( contribution.contributionStatus === ContributionStatus.DELETED || @@ -737,6 +740,6 @@ export class AdminResolver { } finally { await queryRunner.release() } - return contributionMessage + return new ContributionMessage(contributionMessage, new User(user)) } } diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.ts b/backend/src/graphql/resolver/ContributionMessageResolver.ts index a9529dfe7..dbffc77ce 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.ts @@ -1,17 +1,18 @@ import { backendLogger as logger } from '@/server/logger' import { RIGHTS } from '@/auth/RIGHTS' import { Context, getUser } from '@/server/context' -import { ContributionMessage } from '@entity/ContributionMessage' +import { ContributionMessage as DbContributionMessage } 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' import { ContributionStatus } from '@enum/ContributionStatus' import { getConnection } from '@dbTools/typeorm' +import { ContributionMessage } from '@model/ContributionMessage' +import { User } from '@model/User' @Resolver() export class ContributionResolver { - // TODO: Have two method one for admin on for @Authorized([RIGHTS.CREATE_CONTRIBUTION_MESSAGE]) @Mutation(() => ContributionMessage) async createContributionMessage( @@ -22,9 +23,12 @@ export class ContributionResolver { const queryRunner = getConnection().createQueryRunner() await queryRunner.connect() await queryRunner.startTransaction('READ UNCOMMITTED') - const contributionMessage = new ContributionMessage() + const contributionMessage = DbContributionMessage.create() try { - const contribution = await Contribution.findOneOrFail({ id: contributionId }) + const contribution = await Contribution.findOne({ id: contributionId }) + if (!contribution) { + throw new Error('Contribution not found') + } if (contribution.userId !== user.id) { throw new Error('Can not send message to contribution of another user') } @@ -34,7 +38,7 @@ export class ContributionResolver { contributionMessage.message = message contributionMessage.userId = user.id contributionMessage.type = ContributionMessageType.DIALOG - await queryRunner.manager.insert(ContributionMessage, contributionMessage) + await queryRunner.manager.insert(DbContributionMessage, contributionMessage) if (contribution.contributionStatus === ContributionStatus.IN_PROGRESS) { contribution.contributionStatus = ContributionStatus.PENDING @@ -48,6 +52,6 @@ export class ContributionResolver { } finally { await queryRunner.release() } - return contributionMessage + return new ContributionMessage(contributionMessage, new User(user)) } }