diff --git a/backend/src/graphql/arg/AdminUpdateContributionArgs.ts b/backend/src/graphql/arg/AdminUpdateContributionArgs.ts index 392365b38..65f1cf3f3 100644 --- a/backend/src/graphql/arg/AdminUpdateContributionArgs.ts +++ b/backend/src/graphql/arg/AdminUpdateContributionArgs.ts @@ -6,9 +6,6 @@ export default class AdminUpdateContributionArgs { @Field(() => Int) id: number - @Field(() => String) - email: string - @Field(() => Decimal) amount: Decimal diff --git a/backend/src/graphql/model/Contribution.ts b/backend/src/graphql/model/Contribution.ts index 69b372e40..989dd32b2 100644 --- a/backend/src/graphql/model/Contribution.ts +++ b/backend/src/graphql/model/Contribution.ts @@ -22,6 +22,7 @@ export class Contribution { this.deletedAt = contribution.deletedAt this.deletedBy = contribution.deletedBy this.moderatorId = contribution.moderatorId + this.userId = contribution.userId } @Field(() => Number) @@ -69,8 +70,11 @@ export class Contribution { @Field(() => String) state: string - @Field(() => Number, { nullable: true }) + @Field(() => Int, { nullable: true }) moderatorId: number | null + + @Field(() => Int, { nullable: true }) + userId: number | null } @ObjectType() diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 2469f60ba..561d5c88c 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -313,41 +313,27 @@ export class ContributionResolver { @Authorized([RIGHTS.ADMIN_UPDATE_CONTRIBUTION]) @Mutation(() => AdminUpdateContribution) async adminUpdateContribution( - @Args() { id, email, amount, memo, creationDate }: AdminUpdateContributionArgs, + @Args() { id, amount, memo, creationDate }: AdminUpdateContributionArgs, @Ctx() context: Context, ): Promise { const clientTimezoneOffset = getClientTimezoneOffset(context) - const emailContact = await UserContact.findOne({ - where: { email }, - withDeleted: true, - relations: ['user'], - }) - if (!emailContact || !emailContact.user) { - throw new LogError('Could not find User', email) - } - if (emailContact.deletedAt || emailContact.user.deletedAt) { - throw new LogError('User was deleted', email) - } const moderator = getUser(context) const contributionToUpdate = await DbContribution.findOne({ where: { id, confirmedAt: IsNull(), deniedAt: IsNull() }, }) + if (!contributionToUpdate) { throw new LogError('Contribution not found', id) } - if (contributionToUpdate.userId !== emailContact.user.id) { - throw new LogError('User of the pending contribution and send user does not correspond') - } - if (contributionToUpdate.moderatorId === null) { throw new LogError('An admin is not allowed to update an user contribution') } const creationDateObj = new Date(creationDate) - let creations = await getUserCreation(emailContact.user.id, clientTimezoneOffset) + let creations = await getUserCreation(contributionToUpdate.userId, clientTimezoneOffset) // TODO: remove this restriction if (contributionToUpdate.contributionDate.getMonth() === creationDateObj.getMonth()) { @@ -371,9 +357,13 @@ export class ContributionResolver { result.memo = contributionToUpdate.memo result.date = contributionToUpdate.contributionDate - result.creation = await getUserCreation(emailContact.user.id, clientTimezoneOffset) + result.creation = await getUserCreation(contributionToUpdate.userId, clientTimezoneOffset) - await EVENT_ADMIN_CONTRIBUTION_UPDATE(emailContact.user.id, contributionToUpdate.id, amount) + await EVENT_ADMIN_CONTRIBUTION_UPDATE( + contributionToUpdate.userId, + contributionToUpdate.id, + amount, + ) return result }