@tsed/formio
Version:
Formio package for Ts.ED framework
42 lines (41 loc) • 1.62 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Inject } from "@tsed/di";
import async from "async";
import { Alter } from "../decorators/alter.js";
import { FormioDatabase } from "../services/FormioDatabase.js";
let AlterTemplateImportSteps = class AlterTemplateImportSteps {
transform(queue, install, template) {
queue.push(async.apply(this.importSubmissions.bind(this), template));
return queue;
}
async importSubmissions(template, done) {
if (template && template.submissions) {
// clean all submissions
await this.database.submissionModel.deleteMany({});
const ctxData = await this.database.getFormioMapper();
const entries = Object.entries(template.submissions);
for (const entry of entries) {
for (const submission of entry[1]) {
await this.importSubmission({ ...submission, form: submission.form || entry[0] }, ctxData);
}
}
}
done();
}
async importSubmission(submission, mapper) {
const value = {
...mapper.mapToImport(submission),
roles: [...new Set(mapper.mapToImport(submission.roles || []))].filter(Boolean)
};
await this.database.submissionModel.create(value);
return value;
}
};
__decorate([
Inject(),
__metadata("design:type", FormioDatabase)
], AlterTemplateImportSteps.prototype, "database", void 0);
AlterTemplateImportSteps = __decorate([
Alter("templateImportSteps")
], AlterTemplateImportSteps);
export { AlterTemplateImportSteps };