From 11ff82a9af09c0d39bb889813b8c511a42c4bf7b Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Fri, 24 Jul 2026 21:52:54 +0100 Subject: [PATCH] Enhanced various route handlers and services to support an additional master filter parameter for improved data querying capabilities. Updated related functions across multiple management and production routes, ensuring consistent handling of master filters in property-based queries. --- src/routes/finance/taxrecords.js | 6 +++++- src/routes/management/courier.js | 10 +++++++--- src/routes/management/courierservice.js | 7 ++++++- src/routes/management/documentjobs.js | 10 +++++++--- src/routes/management/documentprinters.js | 10 +++++++--- src/routes/management/documentsizes.js | 10 +++++++--- src/routes/management/filaments.js | 19 ++++++++----------- src/routes/management/files.js | 14 +++++++++----- src/routes/management/hosts.js | 10 +++++++--- src/routes/management/materials.js | 6 +++++- src/routes/management/parts.js | 10 +++++++--- src/routes/management/productcategories.js | 10 +++++++--- src/routes/management/products.js | 10 +++++++--- src/routes/management/taxrates.js | 10 +++++++--- src/routes/management/vendors.js | 10 +++++++--- src/routes/misc/notes.js | 6 +++++- src/routes/production/filamentprofiles.js | 6 +++++- src/routes/production/gcodefiles.js | 6 +++++- src/routes/production/jobs.js | 6 +++++- src/routes/production/printerprofiles.js | 6 +++++- src/routes/production/printers.js | 6 +++++- src/routes/production/subjobs.js | 6 +++++- src/routes/sales/clients.js | 6 +++++- src/routes/sales/listings.js | 6 +++++- src/routes/sales/listingvarients.js | 6 +++++- src/routes/sales/marketplaces.js | 6 +++++- src/services/finance/taxrecords.js | 4 +++- src/services/management/courier.js | 4 +++- src/services/management/courierservice.js | 4 +++- src/services/management/documentjobs.js | 4 +++- src/services/management/documentprinters.js | 4 +++- src/services/management/documentsizes.js | 4 +++- src/services/management/filaments.js | 4 +++- src/services/management/materials.js | 4 +++- src/services/management/parts.js | 9 ++++++++- src/services/management/productcategories.js | 4 +++- src/services/management/products.js | 4 +++- src/services/management/taxrates.js | 4 +++- src/services/management/vendors.js | 4 +++- src/services/misc/notes.js | 9 ++++++++- src/services/production/filamentprofiles.js | 4 +++- src/services/production/gcodefiles.js | 4 +++- src/services/production/printerprofiles.js | 4 +++- src/services/production/printers.js | 4 +++- src/services/sales/clients.js | 4 +++- src/services/sales/listings.js | 4 +++- src/services/sales/listingvarients.js | 4 +++- src/services/sales/marketplaces.js | 4 +++- 48 files changed, 234 insertions(+), 82 deletions(-) diff --git a/src/routes/finance/taxrecords.js b/src/routes/finance/taxrecords.js index b90baf7..78bdaff 100644 --- a/src/routes/finance/taxrecords.js +++ b/src/routes/finance/taxrecords.js @@ -27,7 +27,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['taxRate', 'transactionType', 'transaction']; const filter = getFilter(req.query, allowedFilters, false); - listTaxRecordsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listTaxRecordsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/routes/management/courier.js b/src/routes/management/courier.js index 30ae45a..711fac0 100644 --- a/src/routes/management/courier.js +++ b/src/routes/management/courier.js @@ -12,7 +12,7 @@ import { listCouriersByPropertiesRouteHandler, getCourierStatsRouteHandler, getCourierHistoryRouteHandler, - searchCouriersRouteHandler + searchCouriersRouteHandler, } from '../../services/management/courier.js'; // list of couriers @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['name', 'website', 'email', 'phone', 'contact', 'country']; const filter = getFilter(req.query, allowedFilters, false); - listCouriersByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listCouriersByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchCouriersRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newCourierRouteHandler(req, res); }); diff --git a/src/routes/management/courierservice.js b/src/routes/management/courierservice.js index cc6790b..8c72b1f 100644 --- a/src/routes/management/courierservice.js +++ b/src/routes/management/courierservice.js @@ -47,8 +47,13 @@ router.get('/properties', isAuthenticated, (req, res) => { 'costWithTax', ]; const filter = getFilter(req.query, allowedFilters, false); - listCourierServicesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listCourierServicesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchCourierServicesRouteHandler(req, res, search); diff --git a/src/routes/management/documentjobs.js b/src/routes/management/documentjobs.js index 5d3d6cd..0a75a23 100644 --- a/src/routes/management/documentjobs.js +++ b/src/routes/management/documentjobs.js @@ -12,7 +12,7 @@ import { listDocumentJobsByPropertiesRouteHandler, getDocumentJobStatsRouteHandler, getDocumentJobHistoryRouteHandler, - searchDocumentJobsRouteHandler + searchDocumentJobsRouteHandler, } from '../../services/management/documentjobs.js'; // list of document jobs @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = []; const filter = getFilter(req.query, allowedFilters, false); - listDocumentJobsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listDocumentJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchDocumentJobsRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newDocumentJobRouteHandler(req, res); }); diff --git a/src/routes/management/documentprinters.js b/src/routes/management/documentprinters.js index 482cedd..196c12d 100644 --- a/src/routes/management/documentprinters.js +++ b/src/routes/management/documentprinters.js @@ -12,7 +12,7 @@ import { listDocumentPrintersByPropertiesRouteHandler, getDocumentPrinterStatsRouteHandler, getDocumentPrinterHistoryRouteHandler, - searchDocumentPrintersRouteHandler + searchDocumentPrintersRouteHandler, } from '../../services/management/documentprinters.js'; // list of document printers @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['tags']; const filter = getFilter(req.query, allowedFilters, false); - listDocumentPrintersByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listDocumentPrintersByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchDocumentPrintersRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newDocumentPrinterRouteHandler(req, res); }); diff --git a/src/routes/management/documentsizes.js b/src/routes/management/documentsizes.js index ec3856b..11428c6 100644 --- a/src/routes/management/documentsizes.js +++ b/src/routes/management/documentsizes.js @@ -12,7 +12,7 @@ import { listDocumentSizesByPropertiesRouteHandler, getDocumentSizeStatsRouteHandler, getDocumentSizeHistoryRouteHandler, - searchDocumentSizesRouteHandler + searchDocumentSizesRouteHandler, } from '../../services/management/documentsizes.js'; // list of document sizes @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = []; const filter = getFilter(req.query, allowedFilters, false); - listDocumentSizesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listDocumentSizesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchDocumentSizesRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newDocumentSizeRouteHandler(req, res); }); diff --git a/src/routes/management/filaments.js b/src/routes/management/filaments.js index 9a917d9..3c10e1d 100644 --- a/src/routes/management/filaments.js +++ b/src/routes/management/filaments.js @@ -13,21 +13,14 @@ import { deleteFilamentRouteHandler, getFilamentStatsRouteHandler, getFilamentHistoryRouteHandler, - searchFilamentsRouteHandler + searchFilamentsRouteHandler, } from '../../services/management/filaments.js'; // list of filaments router.get('/', isAuthenticated, (req, res) => { const { page, limit, property, search, sort, order } = req.query; - const allowedFilters = [ - '_id', - 'material', - 'material._id', - 'diameter', - 'name', - 'cost', - ]; + const allowedFilters = ['_id', 'material', 'material._id', 'diameter', 'name', 'cost']; var filter = {}; @@ -46,14 +39,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['diameter', 'material']; const filter = getFilter(req.query, allowedFilters, false); - listFilamentsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listFilamentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchFilamentsRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newFilamentRouteHandler(req, res); }); diff --git a/src/routes/management/files.js b/src/routes/management/files.js index bb379e4..259235a 100644 --- a/src/routes/management/files.js +++ b/src/routes/management/files.js @@ -14,29 +14,33 @@ import { listFilesByPropertiesRouteHandler, getFileStatsRouteHandler, getFileHistoryRouteHandler, - searchFilesRouteHandler + searchFilesRouteHandler, } from '../../services/management/files.js'; // list of files router.get('/', isAuthenticated, (req, res) => { const { page, limit, property, search, sort, order } = req.query; - const allowedFilters = ['_id', 'name', 'type', 'size']; + const allowedFilters = ['_id', 'name', 'type', 'size', 'extension']; const filter = getFilter(req.query, allowedFilters); listFilesRouteHandler(req, res, page, limit, property, filter, search, sort, order); }); router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); - const allowedFilters = ['type']; + const allowedFilters = ['type', 'extension']; const filter = getFilter(req.query, allowedFilters, false); - listFilesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listFilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchFilesRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newFileRouteHandler(req, res); }); diff --git a/src/routes/management/hosts.js b/src/routes/management/hosts.js index 2e8e5d9..b36f856 100644 --- a/src/routes/management/hosts.js +++ b/src/routes/management/hosts.js @@ -12,7 +12,7 @@ import { listHostsByPropertiesRouteHandler, getHostStatsRouteHandler, getHostHistoryRouteHandler, - searchHostsRouteHandler + searchHostsRouteHandler, } from '../../services/management/hosts.js'; // list of hosts @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['tags']; const filter = getFilter(req.query, allowedFilters, false); - listHostsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listHostsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchHostsRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newHostRouteHandler(req, res); }); diff --git a/src/routes/management/materials.js b/src/routes/management/materials.js index 82d769e..d066c01 100644 --- a/src/routes/management/materials.js +++ b/src/routes/management/materials.js @@ -35,7 +35,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['name', 'tags']; const filter = getFilter(req.query, allowedFilters, false); - listMaterialsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listMaterialsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { diff --git a/src/routes/management/parts.js b/src/routes/management/parts.js index dfcb2d5..560b241 100644 --- a/src/routes/management/parts.js +++ b/src/routes/management/parts.js @@ -12,7 +12,7 @@ import { listPartsByPropertiesRouteHandler, getPartStatsRouteHandler, getPartHistoryRouteHandler, - searchPartsRouteHandler + searchPartsRouteHandler, } from '../../services/management/parts.js'; // list of parts @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['product._id']; const filter = getFilter(req.query, allowedFilters, false); - listPartsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listPartsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchPartsRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newPartRouteHandler(req, res); }); diff --git a/src/routes/management/productcategories.js b/src/routes/management/productcategories.js index ad7f9ff..d50420d 100644 --- a/src/routes/management/productcategories.js +++ b/src/routes/management/productcategories.js @@ -10,7 +10,7 @@ import { listProductCategoriesByPropertiesRouteHandler, listProductCategoriesRouteHandler, newProductCategoryRouteHandler, - searchProductCategoriesRouteHandler + searchProductCategoriesRouteHandler, } from '../../services/management/productcategories.js'; const router = express.Router(); @@ -26,14 +26,18 @@ router.get('/properties', isAuthenticated, (req, res) => { const properties = convertPropertiesString(req.query.properties); const allowedFilters = ['name']; const filter = getFilter(req.query, allowedFilters, false); - listProductCategoriesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listProductCategoriesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchProductCategoriesRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newProductCategoryRouteHandler(req, res); }); diff --git a/src/routes/management/products.js b/src/routes/management/products.js index 2908d86..962f46c 100644 --- a/src/routes/management/products.js +++ b/src/routes/management/products.js @@ -12,7 +12,7 @@ import { listProductsByPropertiesRouteHandler, getProductStatsRouteHandler, getProductHistoryRouteHandler, - searchProductsRouteHandler + searchProductsRouteHandler, } from '../../services/management/products.js'; // list of products @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = []; const filter = getFilter(req.query, allowedFilters, false); - listProductsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listProductsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchProductsRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newProductRouteHandler(req, res); }); diff --git a/src/routes/management/taxrates.js b/src/routes/management/taxrates.js index 0bd98a2..dbc14e7 100644 --- a/src/routes/management/taxrates.js +++ b/src/routes/management/taxrates.js @@ -12,7 +12,7 @@ import { listTaxRatesByPropertiesRouteHandler, getTaxRateStatsRouteHandler, getTaxRateHistoryRouteHandler, - searchTaxRatesRouteHandler + searchTaxRatesRouteHandler, } from '../../services/management/taxrates.js'; // list of tax rates @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['rateType', 'country', 'active']; const filter = getFilter(req.query, allowedFilters, false); - listTaxRatesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listTaxRatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchTaxRatesRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newTaxRateRouteHandler(req, res); }); diff --git a/src/routes/management/vendors.js b/src/routes/management/vendors.js index 6729d97..4b2169e 100644 --- a/src/routes/management/vendors.js +++ b/src/routes/management/vendors.js @@ -12,7 +12,7 @@ import { listVendorsByPropertiesRouteHandler, getVendorStatsRouteHandler, getVendorHistoryRouteHandler, - searchVendorsRouteHandler + searchVendorsRouteHandler, } from '../../services/management/vendors.js'; // list of vendors @@ -27,14 +27,18 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['country', 'active', 'createdAt', 'updatedAt']; const filter = getFilter(req.query, allowedFilters, false); - listVendorsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listVendorsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); + router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; searchVendorsRouteHandler(req, res, search); }); - router.post('/', isAuthenticated, (req, res) => { newVendorRouteHandler(req, res); }); diff --git a/src/routes/misc/notes.js b/src/routes/misc/notes.js index b34d900..0b6603c 100644 --- a/src/routes/misc/notes.js +++ b/src/routes/misc/notes.js @@ -26,7 +26,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['parent']; const filter = getFilter(req.query, allowedFilters, false); - listNotesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listNotesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); // create new note diff --git a/src/routes/production/filamentprofiles.js b/src/routes/production/filamentprofiles.js index d89113f..5e2c094 100644 --- a/src/routes/production/filamentprofiles.js +++ b/src/routes/production/filamentprofiles.js @@ -22,7 +22,11 @@ router.get('/', isAuthenticated, (req, res) => { router.get('/properties', isAuthenticated, (req, res) => { const properties = convertPropertiesString(req.query.properties); const filter = getFilter(req.query, ['name'], false); - listFilamentProfilesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listFilamentProfilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { diff --git a/src/routes/production/gcodefiles.js b/src/routes/production/gcodefiles.js index a8142e9..36c32f6 100644 --- a/src/routes/production/gcodefiles.js +++ b/src/routes/production/gcodefiles.js @@ -26,7 +26,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['filament', 'filament._id', 'filamentSku', 'filamentSku._id']; const filter = getFilter(req.query, allowedFilters, false); - listGCodeFilesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listGCodeFilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/routes/production/jobs.js b/src/routes/production/jobs.js index 1f0d1a4..4253373 100644 --- a/src/routes/production/jobs.js +++ b/src/routes/production/jobs.js @@ -27,7 +27,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['state']; const filter = getFilter(req.query, allowedFilters, false); - listJobsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/routes/production/printerprofiles.js b/src/routes/production/printerprofiles.js index a8536e0..5d2cc58 100644 --- a/src/routes/production/printerprofiles.js +++ b/src/routes/production/printerprofiles.js @@ -22,7 +22,11 @@ router.get('/', isAuthenticated, (req, res) => { router.get('/properties', isAuthenticated, (req, res) => { const properties = convertPropertiesString(req.query.properties); const filter = getFilter(req.query, ['name'], false); - listPrinterProfilesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listPrinterProfilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { diff --git a/src/routes/production/printers.js b/src/routes/production/printers.js index bc25529..74e6fca 100644 --- a/src/routes/production/printers.js +++ b/src/routes/production/printers.js @@ -26,7 +26,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['tags']; const filter = getFilter(req.query, allowedFilters, false); - listPrintersByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listPrintersByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/routes/production/subjobs.js b/src/routes/production/subjobs.js index f9fafc3..d7c4fcc 100644 --- a/src/routes/production/subjobs.js +++ b/src/routes/production/subjobs.js @@ -24,7 +24,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['job']; const filter = getFilter(req.query, allowedFilters, false); - listSubJobsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listSubJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/routes/sales/clients.js b/src/routes/sales/clients.js index e2b269f..8b87690 100644 --- a/src/routes/sales/clients.js +++ b/src/routes/sales/clients.js @@ -27,7 +27,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['country', 'active', 'createdAt', 'updatedAt']; const filter = getFilter(req.query, allowedFilters, false); - listClientsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listClientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/routes/sales/listings.js b/src/routes/sales/listings.js index 2c7a274..ef8f814 100644 --- a/src/routes/sales/listings.js +++ b/src/routes/sales/listings.js @@ -48,7 +48,11 @@ router.get('/properties', isAuthenticated, (req, res) => { 'updatedAt', ]; const filter = getFilter(req.query, allowedFilters, false); - listListingsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listListingsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/routes/sales/listingvarients.js b/src/routes/sales/listingvarients.js index 18618fa..b5916a2 100644 --- a/src/routes/sales/listingvarients.js +++ b/src/routes/sales/listingvarients.js @@ -46,7 +46,11 @@ router.get('/properties', isAuthenticated, (req, res) => { 'updatedAt', ]; const filter = getFilter(req.query, allowedFilters, false); - listListingVarientsByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listListingVarientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/routes/sales/marketplaces.js b/src/routes/sales/marketplaces.js index 06e8212..23bc67a 100644 --- a/src/routes/sales/marketplaces.js +++ b/src/routes/sales/marketplaces.js @@ -32,7 +32,11 @@ router.get('/properties', isAuthenticated, (req, res) => { let properties = convertPropertiesString(req.query.properties); const allowedFilters = ['name', 'provider', 'active', 'connected', 'state.type', 'createdAt', 'updatedAt']; const filter = getFilter(req.query, allowedFilters, false); - listMarketplacesByPropertiesRouteHandler(req, res, properties, filter); + var masterFilter = {}; + if (req.query.masterFilter) { + masterFilter = JSON.parse(req.query.masterFilter); + } + listMarketplacesByPropertiesRouteHandler(req, res, properties, filter, masterFilter); }); router.get('/search', isAuthenticated, (req, res) => { const { search } = req.query; diff --git a/src/services/finance/taxrecords.js b/src/services/finance/taxrecords.js index 9b49620..894999f 100644 --- a/src/services/finance/taxrecords.js +++ b/src/services/finance/taxrecords.js @@ -52,12 +52,14 @@ export const listTaxRecordsByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: taxRecordModel, properties, filter, + masterFilter, }); if (result?.error) { diff --git a/src/services/management/courier.js b/src/services/management/courier.js index e9e516d..e34a6d2 100644 --- a/src/services/management/courier.js +++ b/src/services/management/courier.js @@ -52,12 +52,14 @@ export const listCouriersByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: courierModel, properties, filter, + masterFilter, }); if (result?.error) { diff --git a/src/services/management/courierservice.js b/src/services/management/courierservice.js index 6d9890d..7285c8a 100644 --- a/src/services/management/courierservice.js +++ b/src/services/management/courierservice.js @@ -53,12 +53,14 @@ export const listCourierServicesByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: courierServiceModel, properties, filter, + masterFilter, populate: ['courier', 'costTaxRate'], }); diff --git a/src/services/management/documentjobs.js b/src/services/management/documentjobs.js index 701003c..418461e 100644 --- a/src/services/management/documentjobs.js +++ b/src/services/management/documentjobs.js @@ -52,12 +52,14 @@ export const listDocumentJobsByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: documentJobModel, properties, filter, + masterFilter, }); if (result?.error) { diff --git a/src/services/management/documentprinters.js b/src/services/management/documentprinters.js index c31042e..60515fe 100644 --- a/src/services/management/documentprinters.js +++ b/src/services/management/documentprinters.js @@ -55,12 +55,14 @@ export const listDocumentPrintersByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: documentPrinterModel, properties, filter, + masterFilter, populate: ['currentDocumentSize', 'host'], }); diff --git a/src/services/management/documentsizes.js b/src/services/management/documentsizes.js index 6c2cc26..992b5bb 100644 --- a/src/services/management/documentsizes.js +++ b/src/services/management/documentsizes.js @@ -52,12 +52,14 @@ export const listDocumentSizesByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: documentSizeModel, properties, filter, + masterFilter, }); if (result?.error) { diff --git a/src/services/management/filaments.js b/src/services/management/filaments.js index ef89256..39b8027 100644 --- a/src/services/management/filaments.js +++ b/src/services/management/filaments.js @@ -55,12 +55,14 @@ export const listFilamentsByPropertiesRouteHandler = async ( req, res, properties = [], - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: filamentModel, properties, filter, + masterFilter, populate: [], }); diff --git a/src/services/management/materials.js b/src/services/management/materials.js index 33f13c3..56c6bb0 100644 --- a/src/services/management/materials.js +++ b/src/services/management/materials.js @@ -53,12 +53,14 @@ export const listMaterialsByPropertiesRouteHandler = async ( req, res, properties = [], - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: materialModel, properties, filter, + masterFilter, populate: [], }); diff --git a/src/services/management/parts.js b/src/services/management/parts.js index 362af6b..a241ca5 100644 --- a/src/services/management/parts.js +++ b/src/services/management/parts.js @@ -49,11 +49,18 @@ export const listPartsRouteHandler = async ( res.send(result); }; -export const listPartsByPropertiesRouteHandler = async (req, res, properties = '', filter = {}) => { +export const listPartsByPropertiesRouteHandler = async ( + req, + res, + properties = '', + filter = {}, + masterFilter = {} +) => { const result = await listObjectsByProperties({ model: partModel, properties, filter, + masterFilter, populate: [], }); diff --git a/src/services/management/productcategories.js b/src/services/management/productcategories.js index 66d0040..b080a89 100644 --- a/src/services/management/productcategories.js +++ b/src/services/management/productcategories.js @@ -54,12 +54,14 @@ export const listProductCategoriesByPropertiesRouteHandler = async ( req, res, properties = [], - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: productCategoryModel, properties, filter, + masterFilter, populate: [], }); diff --git a/src/services/management/products.js b/src/services/management/products.js index ba07d87..ab87887 100644 --- a/src/services/management/products.js +++ b/src/services/management/products.js @@ -53,12 +53,14 @@ export const listProductsByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: productModel, properties, filter, + masterFilter, populate: ['productCategory', 'vendor'], }); diff --git a/src/services/management/taxrates.js b/src/services/management/taxrates.js index 98116ce..5c34eed 100644 --- a/src/services/management/taxrates.js +++ b/src/services/management/taxrates.js @@ -52,12 +52,14 @@ export const listTaxRatesByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: taxRateModel, properties, filter, + masterFilter, }); if (result?.error) { diff --git a/src/services/management/vendors.js b/src/services/management/vendors.js index 37cd421..34acc27 100644 --- a/src/services/management/vendors.js +++ b/src/services/management/vendors.js @@ -52,12 +52,14 @@ export const listVendorsByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: vendorModel, properties, filter, + masterFilter, }); if (result?.error) { diff --git a/src/services/misc/notes.js b/src/services/misc/notes.js index b635825..67d5cf9 100644 --- a/src/services/misc/notes.js +++ b/src/services/misc/notes.js @@ -51,11 +51,18 @@ export const listNotesRouteHandler = async ( res.send(result); }; -export const listNotesByPropertiesRouteHandler = async (req, res, properties = '', filter = {}) => { +export const listNotesByPropertiesRouteHandler = async ( + req, + res, + properties = '', + filter = {}, + masterFilter = {} +) => { const result = await listObjectsByProperties({ model: noteModel, properties, filter, + masterFilter, populate: ['noteType', 'user'], }); diff --git a/src/services/production/filamentprofiles.js b/src/services/production/filamentprofiles.js index 83f321d..1f90b3a 100644 --- a/src/services/production/filamentprofiles.js +++ b/src/services/production/filamentprofiles.js @@ -203,12 +203,14 @@ export const listFilamentProfilesByPropertiesRouteHandler = async ( req, res, properties = [], - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: filamentProfileModel, properties, filter, + masterFilter, populate: FILAMENT_PROFILE_POPULATE, }); diff --git a/src/services/production/gcodefiles.js b/src/services/production/gcodefiles.js index 7702e78..88e4197 100644 --- a/src/services/production/gcodefiles.js +++ b/src/services/production/gcodefiles.js @@ -53,12 +53,14 @@ export const listGCodeFilesByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: gcodeFileModel, properties, filter, + masterFilter, populate: ['filament', 'filamentSku'], }); diff --git a/src/services/production/printerprofiles.js b/src/services/production/printerprofiles.js index ecb85f3..ee0c81f 100644 --- a/src/services/production/printerprofiles.js +++ b/src/services/production/printerprofiles.js @@ -91,12 +91,14 @@ export const listPrinterProfilesByPropertiesRouteHandler = async ( req, res, properties = [], - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: printerProfileModel, properties, filter, + masterFilter, populate: ['printer'], }); diff --git a/src/services/production/printers.js b/src/services/production/printers.js index 4e01cf2..3add9f0 100644 --- a/src/services/production/printers.js +++ b/src/services/production/printers.js @@ -54,12 +54,14 @@ export const listPrintersByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: printerModel, properties, filter, + masterFilter, populate: ['vendor', 'host'], }); diff --git a/src/services/sales/clients.js b/src/services/sales/clients.js index 8b126bd..d96a3ac 100644 --- a/src/services/sales/clients.js +++ b/src/services/sales/clients.js @@ -52,12 +52,14 @@ export const listClientsByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: clientModel, properties, filter, + masterFilter, }); if (result?.error) { diff --git a/src/services/sales/listings.js b/src/services/sales/listings.js index 767ca20..d9b6c7a 100644 --- a/src/services/sales/listings.js +++ b/src/services/sales/listings.js @@ -93,12 +93,14 @@ export const listListingsByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: listingModel, properties, filter, + masterFilter, populate: ['product', 'vendor', 'stockLocation', 'marketplace', 'courierServices'], }); diff --git a/src/services/sales/listingvarients.js b/src/services/sales/listingvarients.js index 412a781..dd2c3fb 100644 --- a/src/services/sales/listingvarients.js +++ b/src/services/sales/listingvarients.js @@ -63,12 +63,14 @@ export const listListingVarientsByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: listingVarientModel, properties, filter, + masterFilter, populate: POPULATE_FIELDS, }); diff --git a/src/services/sales/marketplaces.js b/src/services/sales/marketplaces.js index 69db526..0edec17 100644 --- a/src/services/sales/marketplaces.js +++ b/src/services/sales/marketplaces.js @@ -53,12 +53,14 @@ export const listMarketplacesByPropertiesRouteHandler = async ( req, res, properties = '', - filter = {} + filter = {}, + masterFilter = {} ) => { const result = await listObjectsByProperties({ model: marketplaceModel, properties, filter, + masterFilter, }); if (result?.error) {