-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy patharchive-form.js
More file actions
68 lines (62 loc) · 2.09 KB
/
archive-form.js
File metadata and controls
68 lines (62 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
var fs = require('fs');
var fse = require('fs-extra');
var path = require('path');
const { syncDataDir } = require('../helpers/aws-sync');
var settings = require('../../../settings.js');
const moveFiles = (archiveDir, formName) => {
// move forms files to archive/forms/ dir
fs.readdir(path.join(settings.dataDir, 'forms'), (err, items) => {
items.filter(
i => [`${formName}.xls`, `${formName}.xlsx`, `${formName}.xml`].includes(i)
).forEach(
i => fse.move(
path.join(settings.dataDir, 'forms', i),
path.join(archiveDir, 'forms', i),
renameError => {
if (renameError) {
console.log(`Error when moving file ${i}.`);
} else {
syncDataDir('forms');
syncDataDir('archive/forms');
};
}
)
);
});
}
module.exports = (req, res, next) => {
const formName = req.params.formName;
const submissionDir = path.join(settings.dataDir, 'submissions', formName);
const archiveDir = path.join(settings.dataDir, 'archive');
// check and create archive dir and its subdirectories
fs.readdir(archiveDir, (err, items) => {
if (err) {
fs.mkdir(archiveDir, mkdirError => {
if (mkdirError) {
return res.status(500).json({detail: "It wasn't possible to create archive dir."});
} else {
fs.mkdir(path.join(archiveDir, 'forms'), formsDirError => {
if (!formsDirError) moveFiles(archiveDir, formName);
});
return res.status(200).json({detail: "Form archived successfully."});
}
});
} else {
if (items.filter(i => i === 'forms').length === 0) {
fs.mkdir(path.join(archiveDir, 'forms'), (err) => {
if (!err) {
moveFiles(archiveDir, formName)
} else {
return res.status(500).json(
{detail: "It wasn't possible to create forms archive dir."}
);
}
}
);
} else {
moveFiles(archiveDir, formName);
}
return res.status(200).json({detail: "Form archived successfully."});
}
});
};