Fixed webhook on backend
This commit is contained in:
parent
21d0a3257b
commit
bf21ecd1d3
@ -7,6 +7,7 @@ import { SubmissionSetFieldMutation } from './submission.set.field.mutation'
|
|||||||
import { SubmissionStartMutation } from './submission.start.mutation'
|
import { SubmissionStartMutation } from './submission.start.mutation'
|
||||||
import { SubmissionStatisticQuery } from './submission.statistic.query'
|
import { SubmissionStatisticQuery } from './submission.statistic.query'
|
||||||
import { SubmissionStatisticResolver } from './submission.statistic.resolver'
|
import { SubmissionStatisticResolver } from './submission.statistic.resolver'
|
||||||
|
import { SubmissionFinishMutation } from './submission.finish.mutation'
|
||||||
|
|
||||||
export const submissionResolvers = [
|
export const submissionResolvers = [
|
||||||
SubmissionFieldResolver,
|
SubmissionFieldResolver,
|
||||||
@ -15,6 +16,7 @@ export const submissionResolvers = [
|
|||||||
SubmissionQuery,
|
SubmissionQuery,
|
||||||
SubmissionResolver,
|
SubmissionResolver,
|
||||||
SubmissionSetFieldMutation,
|
SubmissionSetFieldMutation,
|
||||||
|
SubmissionFinishMutation,
|
||||||
SubmissionStartMutation,
|
SubmissionStartMutation,
|
||||||
SubmissionStatisticQuery,
|
SubmissionStatisticQuery,
|
||||||
SubmissionStatisticResolver,
|
SubmissionStatisticResolver,
|
||||||
|
|||||||
34
src/resolver/submission/submission.finish.mutation.ts
Normal file
34
src/resolver/submission/submission.finish.mutation.ts
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
import { Injectable } from '@nestjs/common'
|
||||||
|
import { Args, Context, ID, Mutation } from '@nestjs/graphql'
|
||||||
|
import { User } from '../../decorator/user.decorator'
|
||||||
|
import { SubmissionProgressModel } from '../../dto/submission/submission.progress.model'
|
||||||
|
import { SubmissionSetFieldInput } from '../../dto/submission/submission.set.field.input'
|
||||||
|
import { SubmissionEntity } from '../../entity/submission.entity'
|
||||||
|
import { UserEntity } from '../../entity/user.entity'
|
||||||
|
import { SubmissionService } from '../../service/submission/submission.service'
|
||||||
|
import { SubmissionSetFieldService } from '../../service/submission/submission.set.field.service'
|
||||||
|
import { ContextCache } from '../context.cache'
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class SubmissionFinishMutation {
|
||||||
|
constructor(
|
||||||
|
private readonly submissionService: SubmissionService,
|
||||||
|
private readonly setFieldService: SubmissionSetFieldService,
|
||||||
|
) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Mutation(() => SubmissionProgressModel)
|
||||||
|
async submissionFinish(
|
||||||
|
@User() user: UserEntity,
|
||||||
|
@Args({ name: 'submission', type: () => ID }) id: string,
|
||||||
|
@Context('cache') cache: ContextCache,
|
||||||
|
): Promise<SubmissionProgressModel> {
|
||||||
|
const submission = await this.submissionService.findById(id)
|
||||||
|
|
||||||
|
await this.setFieldService.finishSubmission(submission)
|
||||||
|
|
||||||
|
cache.add(cache.getCacheKey(SubmissionEntity.name, submission.id), submission)
|
||||||
|
|
||||||
|
return new SubmissionProgressModel(submission)
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -59,8 +59,9 @@ export class SubmissionHookService {
|
|||||||
return {
|
return {
|
||||||
field: submissionField.field.id,
|
field: submissionField.field.id,
|
||||||
slug: submissionField.field.slug || null,
|
slug: submissionField.field.slug || null,
|
||||||
value: submissionField.field.value,
|
default_value: submissionField.field.value,
|
||||||
}
|
content: submissionField.content,
|
||||||
|
}
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -51,23 +51,28 @@ export class SubmissionSetFieldService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (submission.percentageComplete === 1) {
|
if (submission.percentageComplete === 1) {
|
||||||
this.webHook.process(submission).catch(e => {
|
this.finishSubmission(submission)
|
||||||
this.logger.error({
|
|
||||||
submission: submission.id,
|
|
||||||
form: submission.formId,
|
|
||||||
error: serializeError(e),
|
|
||||||
}, 'failed to send webhooks')
|
|
||||||
})
|
|
||||||
this.notifications.process(submission).catch(e => {
|
|
||||||
this.logger.error({
|
|
||||||
submission: submission.id,
|
|
||||||
form: submission.formId,
|
|
||||||
error: serializeError(e),
|
|
||||||
}, 'failed to send notifications')
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async finishSubmission(submission: SubmissionEntity) {
|
||||||
|
submission.percentageComplete = 1
|
||||||
|
this.webHook.process(submission).catch(e => {
|
||||||
|
this.logger.error({
|
||||||
|
submission: submission.id,
|
||||||
|
form: submission.formId,
|
||||||
|
error: serializeError(e),
|
||||||
|
}, 'failed to send webhooks')
|
||||||
|
})
|
||||||
|
this.notifications.process(submission).catch(e => {
|
||||||
|
this.logger.error({
|
||||||
|
submission: submission.id,
|
||||||
|
form: submission.formId,
|
||||||
|
error: serializeError(e),
|
||||||
|
}, 'failed to send notifications')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
private parseData(
|
private parseData(
|
||||||
field: SubmissionFieldEntity,
|
field: SubmissionFieldEntity,
|
||||||
data: string
|
data: string
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user