Compare commits

..

No commits in common. "069406e4d8f7096014bacf19d8acb3777fe5731e" and "d3adf004776d6b6e3b0445947a1e300af46ef1a9" have entirely different histories.

54 changed files with 638 additions and 950 deletions

View File

@ -47,15 +47,15 @@ import {
} from '../../services/finance/invoices.js';
// list of invoices
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listInvoicesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -63,37 +63,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listInvoicesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getInvoicePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchInvoicesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newInvoiceRouteHandler(req, res);
});
// get invoice stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getInvoiceStatsRouteHandler(req, res);
});
// get invoice history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getInvoiceHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getInvoiceNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getInvoiceRouteHandler(req, res);
});

View File

@ -47,15 +47,15 @@ import {
} from '../../services/finance/payments.js';
// list of payments
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listPaymentsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -63,37 +63,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listPaymentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getPaymentPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchPaymentsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newPaymentRouteHandler(req, res);
});
// get payment stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getPaymentStatsRouteHandler(req, res);
});
// get payment history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getPaymentHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getPaymentNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getPaymentRouteHandler(req, res);
});

View File

@ -30,15 +30,15 @@ import {
} from '../../services/finance/taxrecords.js';
// list of tax records
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listTaxRecordsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -46,37 +46,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listTaxRecordsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getTaxRecordPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchTaxRecordsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newTaxRecordRouteHandler(req, res);
});
// get tax record stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getTaxRecordStatsRouteHandler(req, res);
});
// get tax record history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getTaxRecordHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getTaxRecordNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getTaxRecordRouteHandler(req, res);
});

View File

@ -42,15 +42,15 @@ import {
} from '../../services/inventory/filamentstocks.js';
// list of filament stocks
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listFilamentStocksRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -58,37 +58,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listFilamentStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getFilamentStockPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchFilamentStocksRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newFilamentStockRouteHandler(req, res);
});
// get filament stock stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getFilamentStockStatsRouteHandler(req, res);
});
// get filament stock history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getFilamentStockHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getFilamentStockNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getFilamentStockRouteHandler(req, res);
});

View File

@ -47,15 +47,15 @@ import {
} from '../../services/inventory/orderitems.js';
// list of order items
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listOrderItemsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -63,37 +63,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listOrderItemsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getOrderItemPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchOrderItemsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newOrderItemRouteHandler(req, res);
});
// get order item stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getOrderItemStatsRouteHandler(req, res);
});
// get order item history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getOrderItemHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getOrderItemNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getOrderItemRouteHandler(req, res);
});

View File

@ -34,15 +34,15 @@ import {
} from '../../services/inventory/partstocks.js';
// list of part stocks
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listPartStocksRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -50,37 +50,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listPartStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getPartStockPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchPartStocksRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newPartStockRouteHandler(req, res);
});
// get part stock stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getPartStockStatsRouteHandler(req, res);
});
// get part stock history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getPartStockHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getPartStockNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getPartStockRouteHandler(req, res);
});

View File

@ -33,15 +33,15 @@ import {
getProductStockNeighborsRouteHandler
} from '../../services/inventory/productstocks.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listProductStocksRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -49,35 +49,35 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listProductStocksByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getProductStockPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchProductStocksRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newProductStockRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getProductStockStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getProductStockHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getProductStockNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getProductStockRouteHandler(req, res);
});

View File

@ -50,52 +50,52 @@ import {
} from '../../services/inventory/purchaseorders.js';
// list of purchase orders
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listPurchaseOrdersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = await getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
masterFilter = getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
}
listPurchaseOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getPurchaseOrderPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchPurchaseOrdersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newPurchaseOrderRouteHandler(req, res);
});
// get purchase order stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getPurchaseOrderStatsRouteHandler(req, res);
});
// get purchase order history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getPurchaseOrderHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getPurchaseOrderNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getPurchaseOrderRouteHandler(req, res);
});

View File

@ -42,52 +42,52 @@ import {
} from '../../services/inventory/shipments.js';
// list of shipments
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listShipmentsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = await getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
masterFilter = getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
}
listShipmentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getShipmentPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchShipmentsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newShipmentRouteHandler(req, res);
});
// get shipment stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getShipmentStatsRouteHandler(req, res);
});
// get shipment history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getShipmentHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getShipmentNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getShipmentRouteHandler(req, res);
});

View File

@ -26,7 +26,7 @@ const listAllowedFilters = [
];
// List stock audits
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property } = req.query;
var filter = {};
@ -34,7 +34,7 @@ router.get('/', isAuthenticated, async (req, res) => {
for (const [key, value] of Object.entries(req.query)) {
for (var i = 0; i < listAllowedFilters.length; i++) {
if (key == listAllowedFilters[i]) {
const parsedFilter = await parseFilter(key, value);
const parsedFilter = parseFilter(key, value);
filter = { ...filter, ...parsedFilter };
}
}
@ -44,43 +44,43 @@ router.get('/', isAuthenticated, async (req, res) => {
});
// Create new stock audit
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newStockAuditRouteHandler(req, res);
});
// get stock audit stats
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchStockAuditsRouteHandler(req, res, search);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getStockAuditStatsRouteHandler(req, res);
});
// get stock audit history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getStockAuditHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getStockAuditNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
// Get specific stock audit
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getStockAuditRouteHandler(req, res);
});
// Update stock audit
router.put('/:id', isAuthenticated, async (req, res) => {
router.put('/:id', isAuthenticated, (req, res) => {
updateStockAuditRouteHandler(req, res);
});
// Delete stock audit
router.delete('/:id', isAuthenticated, async (req, res) => {
router.delete('/:id', isAuthenticated, (req, res) => {
deleteStockAuditRouteHandler(req, res);
});

View File

@ -29,15 +29,15 @@ import {
} from '../../services/inventory/stockevents.js';
// list of stock events
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listStockEventsRouteHandler(req, res, page, limit, filter, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -45,37 +45,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listStockEventsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getStockEventPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchStockEventsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newStockEventRouteHandler(req, res);
});
// get stock event stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getStockEventStatsRouteHandler(req, res);
});
// get stock event history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getStockEventHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getStockEventNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getStockEventRouteHandler(req, res);
});

View File

@ -22,15 +22,15 @@ import {
getStockLocationNeighborsRouteHandler
} from '../../services/inventory/stocklocations.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listStockLocationsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -38,35 +38,35 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listStockLocationsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getStockLocationPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchStockLocationsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newStockLocationRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getStockLocationStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getStockLocationHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getStockLocationNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getStockLocationRouteHandler(req, res);
});

View File

@ -31,15 +31,15 @@ import {
getStockTransferNeighborsRouteHandler
} from '../../services/inventory/stocktransfers.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listStockTransfersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -47,35 +47,35 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listStockTransfersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getStockTransferPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchStockTransfersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newStockTransferRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getStockTransferStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getStockTransferHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getStockTransferNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getStockTransferRouteHandler(req, res);
});

View File

@ -31,38 +31,38 @@ import {
getAppPasswordNeighborsRouteHandler
} from '../../services/management/apppasswords.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listAppPasswordsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
const properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
const masterFilter = req.query.masterFilter ? JSON.parse(req.query.masterFilter) : {};
listAppPasswordsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getAppPasswordPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchAppPasswordsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newAppPasswordRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getAppPasswordStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getAppPasswordHistoryRouteHandler(req, res);
});
@ -70,13 +70,13 @@ router.post('/:id/regenerateSecret', isAuthenticated, async (req, res) => {
regenerateSecretRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getAppPasswordNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getAppPasswordRouteHandler(req, res);
});

View File

@ -29,7 +29,7 @@ router.get('/', isAuthenticated, async (req, res) => {
for (const [key, value] of Object.entries(req.query)) {
for (var i = 0; i < allowedFilters.length; i++) {
if (key == allowedFilters[i]) {
const parsedFilter = await parseFilter(key, value);
const parsedFilter = parseFilter(key, value);
filter = { ...filter, ...parsedFilter };
}
}
@ -38,17 +38,17 @@ router.get('/', isAuthenticated, async (req, res) => {
});
// get audit log stats
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchAuditLogsRouteHandler(req, res, search);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getAuditLogStatsRouteHandler(req, res);
});
// get audit log history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getAuditLogHistoryRouteHandler(req, res);
});

View File

@ -32,15 +32,15 @@ import {
} from '../../services/management/courier.js';
// list of couriers
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listCouriersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -48,37 +48,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listCouriersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getCourierPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchCouriersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newCourierRouteHandler(req, res);
});
// get courier stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getCourierStatsRouteHandler(req, res);
});
// get courier history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getCourierHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getCourierNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getCourierRouteHandler(req, res);
});

View File

@ -45,15 +45,15 @@ import {
} from '../../services/management/courierservice.js';
// list of courier services
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listCourierServicesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -61,37 +61,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listCourierServicesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getCourierServicePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchCourierServicesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newCourierServiceRouteHandler(req, res);
});
// get courier service stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getCourierServiceStatsRouteHandler(req, res);
});
// get courierservice history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getCourierServiceHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getCourierServiceNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getCourierServiceRouteHandler(req, res);
});

View File

@ -30,15 +30,15 @@ import {
} from '../../services/management/documentjobs.js';
// list of document jobs
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listDocumentJobsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -46,37 +46,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listDocumentJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getDocumentJobPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchDocumentJobsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newDocumentJobRouteHandler(req, res);
});
// get document job stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getDocumentJobStatsRouteHandler(req, res);
});
// get documentjobs history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getDocumentJobHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getDocumentJobNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getDocumentJobRouteHandler(req, res);
});

View File

@ -31,15 +31,15 @@ import {
} from '../../services/management/documentprinters.js';
// list of document printers
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listDocumentPrintersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -47,37 +47,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listDocumentPrintersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getDocumentPrinterPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchDocumentPrintersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newDocumentPrinterRouteHandler(req, res);
});
// get document printer stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getDocumentPrinterStatsRouteHandler(req, res);
});
// get documentprinters history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getDocumentPrinterHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getDocumentPrinterNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getDocumentPrinterRouteHandler(req, res);
});

View File

@ -29,15 +29,15 @@ import {
} from '../../services/management/documentsizes.js';
// list of document sizes
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listDocumentSizesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -45,37 +45,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listDocumentSizesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getDocumentSizePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchDocumentSizesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newDocumentSizeRouteHandler(req, res);
});
// get document size stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getDocumentSizeStatsRouteHandler(req, res);
});
// get documentsizes history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getDocumentSizeHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getDocumentSizeNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getDocumentSizeRouteHandler(req, res);
});

View File

@ -30,15 +30,15 @@ import {
} from '../../services/management/documenttemplates.js';
// list of document templates
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listDocumentTemplatesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -46,37 +46,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listDocumentTemplatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getDocumentTemplatePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchDocumentTemplatesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newDocumentTemplateRouteHandler(req, res);
});
// get document template stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getDocumentTemplateStatsRouteHandler(req, res);
});
// get document template history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getDocumentTemplateHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getDocumentTemplateNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getDocumentTemplateRouteHandler(req, res);
});

View File

@ -33,7 +33,7 @@ import {
} from '../../services/management/filaments.js';
// list of filaments
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
@ -42,7 +42,7 @@ router.get('/', isAuthenticated, async (req, res) => {
for (const [key, value] of Object.entries(req.query)) {
for (var i = 0; i < listAllowedFilters.length; i++) {
if (key == listAllowedFilters[i]) {
filter = { ...filter, ...(await parseFilter(key, value)) };
filter = { ...filter, ...parseFilter(key, value) };
}
}
}
@ -50,9 +50,9 @@ router.get('/', isAuthenticated, async (req, res) => {
listFilamentsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -60,37 +60,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listFilamentsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getFilamentPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchFilamentsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newFilamentRouteHandler(req, res);
});
// get filament stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getFilamentStatsRouteHandler(req, res);
});
// get filaments history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getFilamentHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getFilamentNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getFilamentRouteHandler(req, res);
});

View File

@ -32,15 +32,15 @@ import {
getFilamentSkuNeighborsRouteHandler,
} from '../../services/management/filamentskus.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listFilamentSkusRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
let masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -48,34 +48,34 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listFilamentSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getFilamentSkuPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchFilamentSkusRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newFilamentSkuRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getFilamentSkuStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getFilamentSkuHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getFilamentSkuNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getFilamentSkuRouteHandler(req, res);
});

View File

@ -34,15 +34,15 @@ import {
} from '../../services/management/files.js';
// list of files
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listFilesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -50,49 +50,49 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listFilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getFilePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchFilesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newFileRouteHandler(req, res);
});
// get file stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getFileStatsRouteHandler(req, res);
});
// get file history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getFileHistoryRouteHandler(req, res);
});
router.delete('/:id/flush', isAuthenticated, async (req, res) => {
router.delete('/:id/flush', isAuthenticated, (req, res) => {
flushFileRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getFileNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getFileRouteHandler(req, res);
});
router.get('/:id/content', isAuthenticated, async (req, res) => {
router.get('/:id/content', isAuthenticated, (req, res) => {
getFileContentRouteHandler(req, res);
});
router.get('/:id/thumbnail', isAuthenticated, async (req, res) => {
router.get('/:id/thumbnail', isAuthenticated, (req, res) => {
getFileThumbnailRouteHandler(req, res);
});

View File

@ -29,15 +29,15 @@ import {
} from '../../services/management/hosts.js';
// list of hosts
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listHostsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -45,37 +45,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listHostsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getHostPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchHostsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newHostRouteHandler(req, res);
});
// get host stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getHostStatsRouteHandler(req, res);
});
// get hosts history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getHostHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getHostNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getHostRouteHandler(req, res);
});

View File

@ -28,7 +28,7 @@ import {
} from '../../services/management/materials.js';
// list of materials
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
@ -36,16 +36,16 @@ router.get('/', isAuthenticated, async (req, res) => {
for (const [key, value] of Object.entries(req.query)) {
if (listAllowedFilters.includes(key)) {
filter = { ...filter, ...(await parseFilter(key, value)) };
filter = { ...filter, ...parseFilter(key, value) };
}
}
listMaterialsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -53,37 +53,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listMaterialsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getMaterialPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchMaterialsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newMaterialRouteHandler(req, res);
});
// get material stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getMaterialStatsRouteHandler(req, res);
});
// get materials history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getMaterialHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getMaterialNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getMaterialRouteHandler(req, res);
});

View File

@ -30,15 +30,15 @@ import {
} from '../../services/management/notetypes.js';
// list of note types
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listNoteTypesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -46,37 +46,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listNoteTypesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getNoteTypePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchNoteTypesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newNoteTypeRouteHandler(req, res);
});
// get note type stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getNoteTypeStatsRouteHandler(req, res);
});
// get notetypes history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getNoteTypeHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getNoteTypeNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getNoteTypeRouteHandler(req, res);
});

View File

@ -29,15 +29,15 @@ import {
} from '../../services/management/parts.js';
// list of parts
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listPartsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -45,37 +45,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listPartsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getPartPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchPartsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newPartRouteHandler(req, res);
});
// get part stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getPartStatsRouteHandler(req, res);
});
// get parts history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getPartHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getPartNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getPartRouteHandler(req, res);
});

View File

@ -32,15 +32,15 @@ import {
getPartSkuNeighborsRouteHandler
} from '../../services/management/partskus.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listPartSkusRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
let masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -48,35 +48,35 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listPartSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getPartSkuPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchPartSkusRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newPartSkuRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getPartSkuStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getPartSkuHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getPartSkuNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getPartSkuRouteHandler(req, res);
});

View File

@ -21,15 +21,15 @@ const router = express.Router();
const listAllowedFilters = ['_id','name','createdAt','updatedAt','_reference'];
const propertiesAllowedFilters = ['name'];
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listProductCategoriesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
const properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -37,35 +37,35 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listProductCategoriesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getProductCategoryPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchProductCategoriesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newProductCategoryRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getProductCategoryStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getProductCategoryHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getProductCategoryNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getProductCategoryRouteHandler(req, res);
});

View File

@ -31,15 +31,15 @@ import {
} from '../../services/management/products.js';
// list of products
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listProductsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -47,37 +47,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listProductsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getProductPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchProductsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newProductRouteHandler(req, res);
});
// get product stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getProductStatsRouteHandler(req, res);
});
// get products history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getProductHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getProductNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getProductRouteHandler(req, res);
});

View File

@ -32,15 +32,15 @@ import {
getProductSkuNeighborsRouteHandler
} from '../../services/management/productskus.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listProductSkusRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
let masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -48,35 +48,35 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listProductSkusByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getProductSkuPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchProductSkusRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newProductSkuRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getProductSkuStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getProductSkuHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getProductSkuNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getProductSkuRouteHandler(req, res);
});

View File

@ -31,15 +31,15 @@ import {
} from '../../services/management/taxrates.js';
// list of tax rates
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listTaxRatesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -47,37 +47,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listTaxRatesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getTaxRatePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchTaxRatesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newTaxRateRouteHandler(req, res);
});
// get tax rate stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getTaxRateStatsRouteHandler(req, res);
});
// get tax rate history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getTaxRateHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getTaxRateNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getTaxRateRouteHandler(req, res);
});

View File

@ -30,15 +30,15 @@ import {
} from '../../services/management/users.js';
// list of document templates
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listUsersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -46,33 +46,33 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listUsersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getUserPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchUsersRouteHandler(req, res, search);
});
// get user stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getUserStatsRouteHandler(req, res);
});
// get user history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getUserHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getUserNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getUserRouteHandler(req, res);
});

View File

@ -29,15 +29,15 @@ import {
} from '../../services/management/vendors.js';
// list of vendors
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listVendorsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -45,37 +45,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listVendorsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getVendorPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchVendorsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newVendorRouteHandler(req, res);
});
// get vendor stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getVendorStatsRouteHandler(req, res);
});
// get vendors history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getVendorHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getVendorNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getVendorRouteHandler(req, res);
});

View File

@ -26,15 +26,15 @@ const listAllowedFilters = [
const propertiesAllowedFilters = ['parent'];
// list of notes
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listNotesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -42,33 +42,33 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listNotesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getNotePropertyValuesRouteHandler(req, res, property);
});
// create new note
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newNoteRouteHandler(req, res);
});
// get note stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getNoteStatsRouteHandler(req, res);
});
// get note history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getNoteHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getNoteNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getNoteRouteHandler(req, res);
});

View File

@ -11,26 +11,26 @@ import { getFilter } from '../../utils.js';
const router = express.Router();
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page = 1, limit = 50, sort = 'createdAt', order = 'descend' } = req.query;
const allowedFilters = ['user'];
const filter = await getFilter(req.query, allowedFilters);
const filter = getFilter(req.query, allowedFilters);
listNotificationsRouteHandler(req, res, page, limit, filter, sort, order);
});
router.put('/read-all', isAuthenticated, async (req, res) => {
router.put('/read-all', isAuthenticated, (req, res) => {
markAllNotificationsAsReadRouteHandler(req, res);
});
router.put('/:id/read', isAuthenticated, async (req, res) => {
router.put('/:id/read', isAuthenticated, (req, res) => {
markNotificationAsReadRouteHandler(req, res);
});
router.delete('/', isAuthenticated, async (req, res) => {
router.delete('/', isAuthenticated, (req, res) => {
deleteAllNotificationsRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
router.delete('/:id', isAuthenticated, (req, res) => {
deleteNotificationRouteHandler(req, res);
});

View File

@ -11,26 +11,26 @@ import { getFilter } from '../../utils.js';
const router = express.Router();
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const allowedFilters = ['user', 'object', 'objectType'];
const filter = await getFilter(req.query, allowedFilters);
const filter = getFilter(req.query, allowedFilters);
listUserNotifiersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newUserNotifierRouteHandler(req, res);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getUserNotifierRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, async (req, res) => {
router.put('/:id', isAuthenticated, (req, res) => {
editUserNotifierRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
router.delete('/:id', isAuthenticated, (req, res) => {
deleteUserNotifierRouteHandler(req, res);
});

View File

@ -19,15 +19,15 @@ const router = express.Router();
const listAllowedFilters = ['_id','name','createdAt','updatedAt','_reference'];
const propertiesAllowedFilters = ['name'];
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listFilamentProfilesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
const properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -35,34 +35,34 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listFilamentProfilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getFilamentProfilePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
searchFilamentProfilesRouteHandler(req, res, req.query.search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newFilamentProfileRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getFilamentProfileNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getFilamentProfileRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, async (req, res) => {
router.put('/:id', isAuthenticated, (req, res) => {
editFilamentProfileRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
router.delete('/:id', isAuthenticated, (req, res) => {
deleteFilamentProfileRouteHandler(req, res);
});

View File

@ -31,15 +31,15 @@ import {
import { convertPropertiesString, getFilter } from '../../utils.js';
// list of gcodeFiles
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listGCodeFilesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -47,37 +47,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listGCodeFilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getGCodeFilePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchGCodeFilesRouteHandler(req, res, search);
});
// create new gcodeFile
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newGCodeFileRouteHandler(req, res);
});
// get gcodeFile stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getGCodeFileStatsRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getGCodeFileNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getGCodeFileRouteHandler(req, res);
});
router.get('/:id/content', isAuthenticated, async (req, res) => {
router.get('/:id/content', isAuthenticated, (req, res) => {
getGCodeFileContentRouteHandler(req, res);
});

View File

@ -29,15 +29,15 @@ import {
import { convertPropertiesString, getFilter } from '../../utils.js';
// list of jobs
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listJobsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -45,36 +45,36 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getJobPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchJobsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newJobRouteHandler(req, res);
});
// get job stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getJobStatsRouteHandler(req, res);
});
// get job history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getJobHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getJobNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getJobRouteHandler(req, res);
});

View File

@ -19,15 +19,15 @@ const router = express.Router();
const listAllowedFilters = ['_id','name','createdAt','updatedAt','_reference'];
const propertiesAllowedFilters = ['name'];
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listPrinterProfilesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
const properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -35,34 +35,34 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listPrinterProfilesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getPrinterProfilePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
searchPrinterProfilesRouteHandler(req, res, req.query.search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newPrinterProfileRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getPrinterProfileNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getPrinterProfileRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, async (req, res) => {
router.put('/:id', isAuthenticated, (req, res) => {
editPrinterProfileRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
router.delete('/:id', isAuthenticated, (req, res) => {
deletePrinterProfileRouteHandler(req, res);
});

View File

@ -30,15 +30,15 @@ const listAllowedFilters = [
];
const propertiesAllowedFilters = ['tags'];
// list of printers
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listPrintersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -46,37 +46,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listPrintersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getPrinterPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchPrintersRouteHandler(req, res, search);
});
// create new printer
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newPrinterRouteHandler(req, res);
});
// get printer history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getPrinterHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getPrinterNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
// get printer stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getPrinterStatsRouteHandler(req, res);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getPrinterRouteHandler(req, res);
});

View File

@ -26,15 +26,15 @@ import {
import { getFilter, convertPropertiesString } from '../../utils.js';
// list of sub jobs
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listSubJobsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -42,32 +42,32 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listSubJobsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getSubJobPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchSubJobsRouteHandler(req, res, search);
});
// get sub job stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getSubJobStatsRouteHandler(req, res);
});
// get sub job history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getSubJobHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getSubJobNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getSubJobRouteHandler(req, res);
});

View File

@ -29,15 +29,15 @@ import {
} from '../../services/sales/clients.js';
// list of clients
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listClientsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -45,37 +45,37 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listClientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getClientPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchClientsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newClientRouteHandler(req, res);
});
// get client stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getClientStatsRouteHandler(req, res);
});
// get clients history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getClientHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getClientNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getClientRouteHandler(req, res);
});

View File

@ -44,15 +44,15 @@ import {
getListingNeighborsRouteHandler
} from '../../services/sales/listings.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listListingsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -60,42 +60,42 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listListingsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getListingPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchListingsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newListingRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getListingStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getListingHistoryRouteHandler(req, res);
});
router.post('/:id/publish', isAuthenticated, async (req, res) => {
router.post('/:id/publish', isAuthenticated, (req, res) => {
publishListingRouteHandler(req, res);
});
router.post('/:id/unpublish', isAuthenticated, async (req, res) => {
router.post('/:id/unpublish', isAuthenticated, (req, res) => {
unpublishListingRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getListingNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getListingRouteHandler(req, res);
});

View File

@ -42,15 +42,15 @@ import {
getListingVarientNeighborsRouteHandler
} from '../../services/sales/listingvarients.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listListingVarientsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -58,43 +58,43 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listListingVarientsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getListingVarientPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchListingVarientsRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newListingVarientRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getListingVarientStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getListingVarientHistoryRouteHandler(req, res);
});
router.post('/:id/publish', isAuthenticated, async (req, res) => {
router.post('/:id/publish', isAuthenticated, (req, res) => {
publishListingVarientRouteHandler(req, res);
});
router.post('/:id/unpublish', isAuthenticated, async (req, res) => {
router.post('/:id/unpublish', isAuthenticated, (req, res) => {
unpublishListingVarientRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getListingVarientNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getListingVarientRouteHandler(req, res);
});

View File

@ -37,15 +37,15 @@ import {
getMarketplaceNeighborsRouteHandler
} from '../../services/sales/marketplaces.js';
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listMarketplacesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
@ -53,60 +53,60 @@ router.get('/properties', isAuthenticated, async (req, res) => {
listMarketplacesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getMarketplacePropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchMarketplacesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newMarketplaceRouteHandler(req, res);
});
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getMarketplaceStatsRouteHandler(req, res);
});
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getMarketplaceHistoryRouteHandler(req, res);
});
router.get('/:id/auth/url', isAuthenticated, async (req, res) => {
router.get('/:id/auth/url', isAuthenticated, (req, res) => {
getMarketplaceAuthUrlRouteHandler(req, res);
});
router.post('/:id/auth/exchange', isAuthenticated, async (req, res) => {
router.post('/:id/auth/exchange', isAuthenticated, (req, res) => {
exchangeMarketplaceAuthCodeRouteHandler(req, res);
});
router.post('/:id/auth/refresh', isAuthenticated, async (req, res) => {
router.post('/:id/auth/refresh', isAuthenticated, (req, res) => {
refreshMarketplaceAuthRouteHandler(req, res);
});
router.post('/:id/sync/items', isAuthenticated, async (req, res) => {
router.post('/:id/sync/items', isAuthenticated, (req, res) => {
syncMarketplaceItemsRouteHandler(req, res);
});
router.post('/:id/sync/orders', isAuthenticated, async (req, res) => {
router.post('/:id/sync/orders', isAuthenticated, (req, res) => {
syncMarketplaceOrdersRouteHandler(req, res);
});
// Webhook endpoint — no auth, provider verifies via signature
router.post('/:id/hook', async (req, res) => {
router.post('/:id/hook', (req, res) => {
marketplaceWebhookRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getMarketplaceNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getMarketplaceRouteHandler(req, res);
});

View File

@ -33,52 +33,52 @@ import {
} from '../../services/sales/salesorders.js';
// list of sales orders
router.get('/', isAuthenticated, async (req, res) => {
router.get('/', isAuthenticated, (req, res) => {
const { page, limit, property, search, sort, order } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
listSalesOrdersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
});
router.get('/properties', isAuthenticated, async (req, res) => {
router.get('/properties', isAuthenticated, (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
const filter = getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = await getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
masterFilter = getFilter(JSON.parse(req.query.masterFilter), propertiesAllowedFilters, true);
}
listSalesOrdersByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get('/values', isAuthenticated, async (req, res) => {
router.get('/values', isAuthenticated, (req, res) => {
const { property } = req.query;
getSalesOrderPropertyValuesRouteHandler(req, res, property);
});
router.get('/search', isAuthenticated, async (req, res) => {
router.get('/search', isAuthenticated, (req, res) => {
const { search } = req.query;
searchSalesOrdersRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, async (req, res) => {
router.post('/', isAuthenticated, (req, res) => {
newSalesOrderRouteHandler(req, res);
});
// get sales order stats
router.get('/stats', isAuthenticated, async (req, res) => {
router.get('/stats', isAuthenticated, (req, res) => {
getSalesOrderStatsRouteHandler(req, res);
});
// get sales orders history
router.get('/history', isAuthenticated, async (req, res) => {
router.get('/history', isAuthenticated, (req, res) => {
getSalesOrderHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
router.get('/neighbors', isAuthenticated, (req, res) => {
const { property, search, sort, order, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
const filter = getFilter(req.query, listAllowedFilters);
getSalesOrderNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
router.get('/:id', isAuthenticated, (req, res) => {
getSalesOrderRouteHandler(req, res);
});

View File

@ -74,7 +74,7 @@ export async function exportToCsv({ objectType, filter = {}, sort, order, limit
export const csvExportRouteHandler = async (req, res) => {
const objectType = req.params.objectType;
const allowedFilters = getModelFilterFields(objectType);
const filter = await getFilter(req.query, allowedFilters);
const filter = getFilter(req.query, allowedFilters);
const { sort, order } = parseOrderBy(req.query.$orderby);
const result = await exportToCsv({

View File

@ -83,7 +83,7 @@ export async function exportToExcel({ objectType, filter = {}, sort, order, limi
export const excelExportRouteHandler = async (req, res) => {
const objectType = req.params.objectType;
const allowedFilters = getModelFilterFields(objectType);
const filter = await getFilter(req.query, allowedFilters);
const filter = getFilter(req.query, allowedFilters);
const { sort, order } = parseOrderBy(req.query.$orderby);
const result = await exportToExcel({
@ -113,7 +113,7 @@ export const excelOpenRouteHandler = async (req, res) => {
const objectType = req.params.objectType;
logger.info('[Excel Open] POST received', { objectType, query: req.query });
const allowedFilters = getModelFilterFields(objectType);
const filter = await getFilter(req.query, allowedFilters);
const filter = getFilter(req.query, allowedFilters);
const { sort, order } = parseOrderBy(req.query.$orderby);
const entry = getModelByName(objectType);

View File

@ -247,7 +247,7 @@ ${entitySets}
* Route handler for GET /odata/$metadata
* Returns OData 4.0 CSDL metadata document for Power BI / OData clients.
*/
export const metadataODataRouteHandler = async (req, res) => {
export const metadataODataRouteHandler = (req, res) => {
const xml = buildMetadataXml();
res.set('OData-Version', '4.0');
res.set('Content-Type', 'application/xml');
@ -289,7 +289,7 @@ export const listODataRouteHandler = async (req, res) => {
// Build filter from query params - allow common filter keys per model
const allowedFilters = getModelFilterFields(objectType);
const filter = await getFilter(req.query, allowedFilters);
const filter = getFilter(req.query, allowedFilters);
const result = await listObjectsOData({
model: entry.model,

View File

@ -91,7 +91,7 @@ export const listRssRouteHandler = async (req, res) => {
const page = Math.floor(skip / limit) + 1;
const { sort, order } = parseOrderBy($orderby);
const allowedFilters = getModelFilterFields(objectType);
const filter = await getFilter(queryWithoutAuth, allowedFilters);
const filter = getFilter(queryWithoutAuth, allowedFilters);
const result = await listObjectsOData({
model: entry.model,

View File

@ -83,108 +83,6 @@ function isBooleanField(property, model = null) {
return found;
}
function isObjectIdPath(property) {
return property === '_id' || property.endsWith('._id');
}
function getBaseProperty(property) {
if (property === '_id') return '_id';
if (property.endsWith('._id')) return property.slice(0, -4);
return property;
}
function isObjectIdSchemaType(path) {
return path?.instance === 'ObjectId' || path?.instance === 'ObjectID';
}
function getSchemaPathFromModels(property, model = null) {
if (model?.schema?.path(property)) return model.schema.path(property);
for (const entry of Object.values(models)) {
const path = entry.model?.schema?.path(property);
if (path) return path;
}
return null;
}
function getFilterFieldKind(property, model = null) {
const baseProperty = getBaseProperty(property);
const inspectPath = (path) => {
if (!path) return null;
if (isObjectIdPath(property) || isObjectIdSchemaType(path)) {
if (property.endsWith('._id') && property !== '_id' && path.options?.ref) {
return { kind: 'objectId', property: baseProperty };
}
if (path.options?.ref) {
return { kind: 'objectRef', property: baseProperty, ref: path.options.ref };
}
return { kind: 'objectId', property: baseProperty };
}
return { kind: 'default', property: baseProperty };
};
if (model) {
return (
inspectPath(model.schema?.path(baseProperty)) || {
kind: 'default',
property: baseProperty,
}
);
}
const path = getSchemaPathFromModels(baseProperty);
const kind = inspectPath(path);
if (kind) return kind;
return { kind: 'default', property: baseProperty };
}
function parsePrefixedValue(value) {
const trimmed = String(value).trim();
if (trimmed.length > 4 && trimmed.charAt(3) === ':') {
return {
prefix: trimmed.slice(0, 3).toUpperCase(),
suffix: trimmed.slice(4).trim(),
hadPrefix: true,
};
}
return { prefix: null, suffix: trimmed, hadPrefix: false };
}
function buildRegexOp(pattern, useOptions = true) {
const op = { $regex: pattern };
if (useOptions) op.$options = 'i';
return op;
}
function getSchemaRefName(property, model = null) {
const baseProperty = getBaseProperty(property);
const path = model?.schema?.path(baseProperty) ?? getSchemaPathFromModels(baseProperty);
return path?.options?.ref ?? path?.caster?.options?.ref ?? path?.path ?? null;
}
function getRefModelEntryFromSchemaRef(refName) {
if (!refName) return null;
let refModel;
try {
refModel = mongoose.model(refName);
} catch {
refModel = getModelByName(refName)?.model ?? null;
}
if (!refModel) return null;
const registryEntry = getModelByName(refName);
return {
model: refModel,
idField: registryEntry?.idField ?? '_id',
referenceField: registryEntry?.referenceField ?? '_reference',
};
}
function parseBooleanOperand(value) {
const lower = String(value).trim().toLowerCase();
if (lower === 'yes') return true;
@ -353,14 +251,8 @@ function stripIgnoreCase(str) {
}
// Builds an equality condition (value, date range, or wildcard regex).
function buildEquality(value, isDateField, isBooleanField = false, isObjectIdField = false) {
function buildEquality(value, isDateField, isBooleanField = false) {
if (isBooleanField) return buildBooleanEquality(value);
if (isObjectIdField) {
const { suffix } = parsePrefixedValue(value);
if (/[*?]/.test(suffix)) return NO_MATCH_CONDITION;
if (isObjectIdString(suffix)) return { value: new mongoose.Types.ObjectId(suffix) };
return NO_MATCH_CONDITION;
}
if (isDateField) {
const start = parseDateOperand(value, 'start');
const end = parseDateOperand(value, 'end');
@ -371,27 +263,12 @@ function buildEquality(value, isDateField, isBooleanField = false, isObjectIdFie
if (lower === 'false') return { value: false };
if (isObjectIdString(value)) return { value: new mongoose.Types.ObjectId(value) };
if (isNumeric(value)) return { value: Number(value) };
return { op: buildRegexOp(buildWildcardRegexPattern(value)) };
return { op: { $regex: buildWildcardRegexPattern(value), $options: 'i' } };
}
// Builds a comparison condition for a single operator.
function buildComparison(
name,
value,
isDateField,
isBooleanField = false,
isObjectIdField = false
) {
function buildComparison(name, value, isDateField, isBooleanField = false) {
if (isBooleanField) return buildBooleanComparison(name, value);
if (isObjectIdField) {
const { suffix } = parsePrefixedValue(value);
if (/[*?]/.test(suffix)) return NO_MATCH_CONDITION;
if (name === 'eq') return buildEquality(suffix, false, false, true);
if (name === 'ne' && isObjectIdString(suffix)) {
return { op: { $ne: new mongoose.Types.ObjectId(suffix) } };
}
return NO_MATCH_CONDITION;
}
if (name === 'eq') return buildEquality(value, isDateField);
if (name === 'ne') {
@ -401,7 +278,7 @@ function buildComparison(
if (start && end) return { op: { $not: { $gte: start, $lte: end } } };
}
if (/[*?]/.test(value)) {
return { op: { $not: buildRegexOp(buildWildcardRegexPattern(value)) } };
return { op: { $not: { $regex: buildWildcardRegexPattern(value), $options: 'i' } } };
}
return { op: { $ne: coerceScalar(value) } };
}
@ -411,7 +288,33 @@ function buildComparison(
return { op: { [`$${name}`]: coerceBoundary(value, isDateField, boundary) } };
}
function parseLeafComparisonOperators(token, isDateField, isBooleanField, isObjectIdField) {
// Parses a leaf token (range, comparison, or plain value) into a condition.
function parseLeafCondition(rawToken, isDateField, isBooleanField = false) {
const token = rawToken.trim();
if (token === '') {
if (isBooleanField) return NO_MATCH_CONDITION;
return { op: { $regex: '^$', $options: 'i' } };
}
// Interval: a..b, ..b, a..
const rangeIdx = token.indexOf('..');
if (rangeIdx !== -1) {
if (isBooleanField) {
const lo = stripIgnoreCase(token.slice(0, rangeIdx).trim());
const hi = stripIgnoreCase(token.slice(rangeIdx + 2).trim());
if (lo !== '' || hi !== '') return NO_MATCH_CONDITION;
}
const lo = stripIgnoreCase(token.slice(0, rangeIdx).trim());
const hi = stripIgnoreCase(token.slice(rangeIdx + 2).trim());
const op = {};
if (lo !== '') op.$gte = coerceBoundary(lo, isDateField, 'start');
if (hi !== '') op.$lte = coerceBoundary(hi, isDateField, 'end');
// A bare ".." places no constraint on the field.
if (Object.keys(op).length === 0) return { query: {} };
return { op };
}
// Comparison operators, longest symbols first.
const operators = [
['<>', 'ne'],
['>=', 'gte'],
@ -426,50 +329,12 @@ function parseLeafComparisonOperators(token, isDateField, isBooleanField, isObje
name,
stripIgnoreCase(token.slice(symbol.length).trim()),
isDateField,
isBooleanField,
isObjectIdField
isBooleanField
);
}
}
return null;
}
// Parses a leaf token (range, comparison, or plain value) into a condition.
function parseLeafCondition(
rawToken,
isDateField,
isBooleanField = false,
isObjectIdField = false
) {
const token = rawToken.trim();
if (token === '') {
if (isBooleanField || isObjectIdField) return NO_MATCH_CONDITION;
return { op: buildRegexOp('^$') };
}
// Interval: a..b, ..b, a..
const rangeIdx = token.indexOf('..');
if (rangeIdx !== -1) {
if (isBooleanField || isObjectIdField) return NO_MATCH_CONDITION;
const lo = stripIgnoreCase(token.slice(0, rangeIdx).trim());
const hi = stripIgnoreCase(token.slice(rangeIdx + 2).trim());
const op = {};
if (lo !== '') op.$gte = coerceBoundary(lo, isDateField, 'start');
if (hi !== '') op.$lte = coerceBoundary(hi, isDateField, 'end');
// A bare ".." places no constraint on the field.
if (Object.keys(op).length === 0) return { query: {} };
return { op };
}
const comparison = parseLeafComparisonOperators(
token,
isDateField,
isBooleanField,
isObjectIdField
);
if (comparison) return comparison;
return buildEquality(stripIgnoreCase(token), isDateField, isBooleanField, isObjectIdField);
return buildEquality(stripIgnoreCase(token), isDateField, isBooleanField);
}
// Converts a condition descriptor into a MongoDB query object for `property`.
@ -500,234 +365,57 @@ function combineAnd(children, property) {
}
// Combines OR-ed conditions, collapsing to $in or a single regex when possible.
function combineOr(children, property, isObjectIdField = false) {
function combineOr(children, property) {
if (children.every((child) => child.value !== undefined)) {
return { op: { $in: children.map((child) => child.value) } };
}
if (!isObjectIdField && children.every((child) => child.op && isOnlyRegex(child.op))) {
if (children.every((child) => child.op && isOnlyRegex(child.op))) {
const pattern = children.map((child) => child.op.$regex).join('|');
const op = { $regex: pattern };
if (children[0].op.$options) op.$options = children[0].op.$options;
return { op };
return { op: { $regex: pattern, $options: 'i' } };
}
return { query: { $or: children.map((child) => conditionToQuery(child, property)) } };
}
function buildCondition(
node,
property,
isDateField,
isBooleanField = false,
isObjectIdField = false
) {
function buildCondition(node, property, isDateField, isBooleanField = false) {
if (node.type === 'leaf') {
return parseLeafCondition(node.token, isDateField, isBooleanField, isObjectIdField);
return parseLeafCondition(node.token, isDateField, isBooleanField);
}
const children = node.items.map((item) =>
buildCondition(item, property, isDateField, isBooleanField, isObjectIdField)
buildCondition(item, property, isDateField, isBooleanField)
);
return node.type === 'and'
? combineAnd(children, property)
: combineOr(children, property, isObjectIdField);
return node.type === 'and' ? combineAnd(children, property) : combineOr(children, property);
}
function idsToCondition(ids) {
if (!ids || ids.length === 0) return NO_MATCH_CONDITION;
if (ids.length === 1) return { value: ids[0] };
return { op: { $in: ids } };
}
function extractObjectIdFromOperand(operand) {
const { suffix } = parsePrefixedValue(stripIgnoreCase(String(operand).trim()));
if (isObjectIdString(suffix)) {
return new mongoose.Types.ObjectId(suffix);
}
return null;
}
const REF_OPERATOR_SYMBOLS = {
eq: '',
ne: '<>',
gt: '>',
gte: '>=',
lt: '<',
lte: '<=',
};
function buildRefListExpression(operator, operand) {
const text = String(operand).trim();
if (operator === 'eq') return text;
return `${REF_OPERATOR_SYMBOLS[operator]}${text}`;
}
// Pre-list the referenced model, matching the expression against name and/or _reference via parseFilter.
async function listRefModelIds(refModelEntry, expression) {
const refModel = refModelEntry.model;
const orClauses = [];
if (refModel.schema.path('name')) {
orClauses.push(await parseFilter('name', expression, refModel));
}
if (refModel.schema.path('_reference')) {
orClauses.push(await parseFilter('_reference', expression, refModel));
}
if (orClauses.length === 0) return [];
const query = orClauses.length === 1 ? orClauses[0] : { $or: orClauses };
const docs = await refModel.find(query).select('_id').lean();
return docs.map((doc) => doc._id);
}
function conditionToIds(cond) {
if (cond.query) return null;
if (cond.value !== undefined) return [cond.value];
if (cond.op?.$in) return cond.op.$in;
return null;
}
function combineOrRefIds(children) {
const ids = new Set();
for (const child of children) {
if (child.query) return child;
const childIds = conditionToIds(child);
if (!childIds) return child;
childIds.forEach((id) => ids.add(String(id)));
}
return idsToCondition([...ids].map((id) => new mongoose.Types.ObjectId(id)));
}
function combineAndRefIds(children) {
let ids = null;
for (const child of children) {
if (child.query) return child;
const childIds = conditionToIds(child);
if (!childIds || childIds.length === 0) return NO_MATCH_CONDITION;
const set = new Set(childIds.map(String));
if (ids === null) {
ids = set;
} else {
ids = new Set([...ids].filter((id) => set.has(id)));
}
if (ids.size === 0) return NO_MATCH_CONDITION;
}
return idsToCondition([...ids].map((id) => new mongoose.Types.ObjectId(id)));
}
async function resolveRefOperand(operand, refModelEntry, operator = 'eq') {
const operandText = String(operand).trim();
const objectId = extractObjectIdFromOperand(operandText);
if (objectId) {
if (operator === 'ne') return { op: { $ne: objectId } };
if (operator === 'eq') return { value: objectId };
return NO_MATCH_CONDITION;
}
const expression = buildRefListExpression(operator, operandText);
const ids = await listRefModelIds(refModelEntry, expression);
if (operator === 'ne') {
if (ids.length === 0) return { query: {} };
return { op: { $nin: ids } };
}
return idsToCondition(ids);
}
async function resolveRefLeaf(rawToken, refModelEntry) {
const token = rawToken.trim();
if (token === '') return NO_MATCH_CONDITION;
const rangeIdx = token.indexOf('..');
if (rangeIdx !== -1) {
const ids = await listRefModelIds(refModelEntry, token);
return idsToCondition(ids);
}
const operators = [
['<>', 'ne'],
['>=', 'gte'],
['<=', 'lte'],
['>', 'gt'],
['<', 'lt'],
['=', 'eq'],
];
for (const [symbol, name] of operators) {
if (token.startsWith(symbol)) {
return resolveRefOperand(token.slice(symbol.length), refModelEntry, name);
}
}
const objectId = extractObjectIdFromOperand(token);
if (objectId) return { value: objectId };
const ids = await listRefModelIds(refModelEntry, token);
return idsToCondition(ids);
}
async function resolveRefCondition(node, refModelEntry) {
if (node.type === 'leaf') {
return resolveRefLeaf(node.token, refModelEntry);
}
const children = await Promise.all(
node.items.map((item) => resolveRefCondition(item, refModelEntry))
);
return node.type === 'and' ? combineAndRefIds(children) : combineOrRefIds(children);
}
async function resolveObjectRefFilter(filterProperty, expression, refName) {
const refModelEntry = getRefModelEntryFromSchemaRef(refName);
if (!refModelEntry?.model) return { [filterProperty]: { $in: [] } };
const tree = parseExpression(expression);
const condition = await resolveRefCondition(tree, refModelEntry);
return conditionToQuery(condition, filterProperty);
}
async function parseFilter(property, value, model = null) {
function parseFilter(property, value, model = null) {
// Normalize state filter to state.type for schemas with state: { type }
if (property === 'state') {
property = 'state.type';
}
const fieldKind = getFilterFieldKind(property, model);
const filterProperty = fieldKind.property;
const isBoolField = isBooleanField(property, model);
if (value?._id !== undefined && value?._id !== null) {
return { [filterProperty]: new mongoose.Types.ObjectId(value._id) };
return { [property]: { _id: new mongoose.Types.ObjectId(value._id) } };
}
// Non-string values pass through; boolean fields only accept actual booleans.
if (typeof value !== 'string') {
if (isBoolField && typeof value !== 'boolean') {
return { [filterProperty]: { $in: [] } };
return { [property]: { $in: [] } };
}
return { [filterProperty]: value };
return { [property]: value };
}
const trimmed = value.trim();
if (fieldKind.kind === 'objectId' && property != '_id') {
const refName = fieldKind.ref ?? getSchemaRefName(property, model);
return resolveObjectRefFilter(filterProperty, trimmed, refName);
}
let expression = trimmed;
if (fieldKind.kind === 'default' && expression.charAt(3) === ':') {
let trimmed = value.trim();
if (trimmed.charAt(3) === ':') {
const afterColon = value.split(':')[1];
expression = afterColon != null ? afterColon.trim() : '';
trimmed = afterColon != null ? afterColon.trim() : '';
}
const isDateField = looksLikeDateField(property);
const isObjectIdField = fieldKind.kind === 'objectId';
const tree = parseExpression(expression);
const condition = buildCondition(tree, filterProperty, isDateField, isBoolField, isObjectIdField);
return conditionToQuery(condition, filterProperty);
const tree = parseExpression(trimmed);
const condition = buildCondition(tree, property, isDateField, isBoolField);
return conditionToQuery(condition, property);
}
function convertToCamelCase(obj) {
@ -1522,11 +1210,11 @@ function mergeFilterClauses(clauses) {
}
// Returns a filter object based on allowed filters and req.query
async function getFilter(query, allowedFilters, parse = true, model = null) {
function getFilter(query, allowedFilters, parse = true, model = null) {
const clauses = [];
for (const [key, value] of Object.entries(query)) {
if (allowedFilters.includes(key)) {
clauses.push(parse ? await parseFilter(key, value, model) : { [key]: value });
clauses.push(parse ? parseFilter(key, value, model) : { [key]: value });
}
}
return mergeFilterClauses(clauses);