fix saving of submission id

This commit is contained in:
Michael Schramm 2022-01-03 00:36:16 +01:00
parent 8e87ca5eed
commit 6c0181c09d
4 changed files with 23 additions and 18 deletions

View File

@ -2,6 +2,13 @@ import { createParamDecorator, ExecutionContext } from '@nestjs/common'
import { GqlExecutionContext } from '@nestjs/graphql'
export const User = createParamDecorator(
(data: unknown, ctx: ExecutionContext) =>
GqlExecutionContext.create(ctx).getContext().req.user,
(data: unknown, ctx: ExecutionContext) => {
const user = GqlExecutionContext.create(ctx).getContext().req.user
if (!user) {
return null
}
return user
},
);

View File

@ -28,6 +28,12 @@ export class SubmissionStartMutation {
): Promise<SubmissionProgressModel> {
const form = await this.formService.findById(id)
if (!form.isLive && !this.formService.isAdmin(form, user)) {
throw new Error('invalid form')
}
console.log('user', user)
const submission = await this.startService.start(form, input, user, ipAddr)
cache.add(cache.getCacheKey(SubmissionEntity.name, submission.id), submission)

View File

@ -43,15 +43,7 @@ export class SubmissionService {
}
async findById(id: string): Promise<SubmissionEntity> {
const submission = await this.submissionRepository.findOne(
id,
{
relations: [
'form',
'form.admin',
],
}
);
const submission = await this.submissionRepository.findOne(id);
if (!submission) {
throw new Error('no form found')

View File

@ -27,9 +27,12 @@ export class SubmissionSetFieldService {
async saveField(submission: SubmissionEntity, input: SubmissionSetFieldInput): Promise<void> {
let field = submission.fields.find(field => field.field.id.toString() === input.field)
submission.timeElapsed = dayjs().diff(dayjs(submission.created), 'second')
if (field) {
field.content = this.parseData(field, input.data)
await this.submissionRepository.save(submission)
await this.submissionFieldRepository.save(field)
} else {
field = new SubmissionFieldEntity()
@ -39,17 +42,14 @@ export class SubmissionSetFieldService {
field.type = field.field.type
field.content = this.parseData(field, input.data)
field = await this.submissionFieldRepository.save(field)
submission.fields.push(field)
submission.percentageComplete = (submission.fields.length) / submission.form.fields.length
// figure out why this cannot be after field save...
await this.submissionRepository.save(submission)
await this.submissionFieldRepository.save(field)
}
submission.timeElapsed = dayjs().diff(dayjs(submission.created), 'second')
await this.submissionRepository.save(submission)
if (submission.percentageComplete === 1) {
this.webHook.process(submission).catch(e => {
this.logger.error({