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 { SubmissionStatisticQuery } from './submission.statistic.query'
|
||||
import { SubmissionStatisticResolver } from './submission.statistic.resolver'
|
||||
import { SubmissionFinishMutation } from './submission.finish.mutation'
|
||||
|
||||
export const submissionResolvers = [
|
||||
SubmissionFieldResolver,
|
||||
@ -15,6 +16,7 @@ export const submissionResolvers = [
|
||||
SubmissionQuery,
|
||||
SubmissionResolver,
|
||||
SubmissionSetFieldMutation,
|
||||
SubmissionFinishMutation,
|
||||
SubmissionStartMutation,
|
||||
SubmissionStatisticQuery,
|
||||
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 {
|
||||
field: submissionField.field.id,
|
||||
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) {
|
||||
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')
|
||||
})
|
||||
this.finishSubmission(submission)
|
||||
}
|
||||
}
|
||||
|
||||
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(
|
||||
field: SubmissionFieldEntity,
|
||||
data: string
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user