From e680cd3c5dfe47e892f3ee8c38330f70d8911338 Mon Sep 17 00:00:00 2001 From: cabad Date: Fri, 28 Dec 2018 18:59:20 +0400 Subject: [PATCH] refactor set function as method of Pages --- src/controllers/pages.js | 29 +++++++++++++++++++++++++++++ src/routes/pages.js | 14 +------------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/controllers/pages.js b/src/controllers/pages.js index c321929..6d9e331 100644 --- a/src/controllers/pages.js +++ b/src/controllers/pages.js @@ -41,6 +41,35 @@ class Pages { return Model.getAll(); } + /** + * Return all pages without children pages + * + * @returns {Promise} + */ + static async getWithoutChildren(parent) { + let pagesAvailable = this.removeChildren(await Pages.getAll(), parent); + + return pagesAvailable.filter((item) => item !== null); + } + + /** + * Change wrong pages to null + * + * @returns {Promise} + */ + static removeChildren(pagesAvailable, parent) { + pagesAvailable.forEach(async (item, index) => { + if (item !== null && item._parent === parent) { + pagesAvailable[index] = null; + pagesAvailable = Pages.removeChildren(pagesAvailable, item._id); + + return false; + } + return true; + }); + return pagesAvailable; + } + /** * Create new page model and save it in the database * diff --git a/src/routes/pages.js b/src/routes/pages.js index c4a3df7..d6df910 100644 --- a/src/routes/pages.js +++ b/src/routes/pages.js @@ -22,19 +22,7 @@ router.get('/page/edit/:id', async (req, res, next) => { try { let page = await Pages.get(pageId); - let pagesAvailable = await Pages.getAll(); - - (function childrenRemove(parent) { - pagesAvailable.forEach((item, index) => { - if (item !== null && item._parent === parent) { - pagesAvailable[index] = null; - childrenRemove(item._id); - return false; - } - return true; - }); - })(page._id); - pagesAvailable = pagesAvailable.filter((item) => item !== null); + let pagesAvailable = await Pages.getWithoutChildren(pageId); res.render('pages/form', { pagesAvailable,