in src/modules/form-submissions/form-submissions.controller.ts [566:611]
public async checkFields(
@Headers(ACCESS_TOKEN_NAME) accessToken: string,
@Param('formKey') formKey: string,
@Body() body: FormFieldsCheckDTO,
): Promise<{
code?: number;
fields: Record<string, boolean>;
message?: string;
}> {
this._logging.logger.info(`Loading schema [${formKey}]`);
const schema = await this._getSchema(accessToken, formKey);
const checkedFields = this._validation.checkFieldsExistence(schema, body.fields ?? []);
const badFields: string[] = [];
checkedFields.forEach((value, field) => {
if (!value) {
badFields.push(field);
}
});
if (badFields.length) {
this._logging.logger.error(`Task form does not have fields with names: ${badFields.join(', ')}`, {
responseCode: 422,
});
throw new HttpException(
{
traceId: this._logging.traceId,
code: VALIDATION_ERROR_CODE,
details: {
errors: [...checkedFields.entries()]
.filter(([, isExisting]) => !isExisting)
.map(([field]) => ({ field, message: `Field "${field}" does not exist!` })),
},
},
422,
);
} else {
this._logging.logger.info(`Requested fields exist`, {
responseCode: 200,
});
return {
code: 200,
fields: Object.fromEntries(checkedFields),
};
}
}