public async checkFields()

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),
      };
    }
  }