|
|
|
@ -84,6 +84,46 @@ class Page extends Controller {
|
|
|
|
|
return res.api(return_nodes);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async save_node_to_page(req, res) {
|
|
|
|
|
const PageId = req.params.PageId
|
|
|
|
|
|
|
|
|
|
const page = await PageModel.findOne({UUID: PageId})
|
|
|
|
|
if ( !page ) return res.status(404).message('Page not found with that ID.').api({})
|
|
|
|
|
if ( !(await page.is_accessible_by(req.user, 'update')) ) return req.security.deny()
|
|
|
|
|
|
|
|
|
|
const nodes = await Node.find({PageId: page.UUID})
|
|
|
|
|
const assoc_nodes = {}
|
|
|
|
|
nodes.forEach(node => {
|
|
|
|
|
assoc_nodes[node.UUID] = node
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
if ( !req.body.nodeData ) {
|
|
|
|
|
return res.status(400).message('Missing nodeData body').api()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const node = req.body.nodeData;
|
|
|
|
|
if ( node.UUID && assoc_nodes[node.UUID] ) {
|
|
|
|
|
assoc_nodes[node.UUID].update_from_raw(node)
|
|
|
|
|
assoc_nodes[node.UUID].UpdatedAt = new Date
|
|
|
|
|
assoc_nodes[node.UUID].UpdateUserId = req.user._id
|
|
|
|
|
assoc_nodes[node.UUID].save()
|
|
|
|
|
return res.api(assoc_nodes[node.UUID])
|
|
|
|
|
} else {
|
|
|
|
|
const node_obj = new Node({
|
|
|
|
|
Type: node.Type,
|
|
|
|
|
Value: node.Value,
|
|
|
|
|
PageId,
|
|
|
|
|
CreatedUserId: req.user._id,
|
|
|
|
|
UpdateUserId: req.user._id,
|
|
|
|
|
})
|
|
|
|
|
await node_obj.save()
|
|
|
|
|
|
|
|
|
|
page.NodeIds.push(node_obj.UUID);
|
|
|
|
|
await page.save();
|
|
|
|
|
return res.api(node_obj)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async save_nodes(req, res) {
|
|
|
|
|
const PageId = req.params.PageId
|
|
|
|
|
|
|
|
|
|