Implement neighbors caching and retrieval for various entities in the inventory and finance modules. Introduced new route handlers for fetching neighbors in invoices, payments, tax records, filament stocks, order items, part stocks, product stocks, purchase orders, shipments, stock audits, stock events, stock locations, and stock transfers. Updated allowed filters for improved query capabilities across these routes. Enhanced database.js with caching logic for neighbors, including cache invalidation on object updates.
Some checks failed
farmcontrol/farmcontrol-api/pipeline/head There was a failure building this commit
Some checks failed
farmcontrol/farmcontrol-api/pipeline/head There was a failure building this commit
This commit is contained in:
parent
6a9cd2a2ea
commit
1e807beacf
@ -2,6 +2,7 @@ import config from '../config.js';
|
||||
import { fileModel } from './schemas/management/file.schema.js';
|
||||
import _ from 'lodash';
|
||||
import log4js from 'log4js';
|
||||
import crypto from 'crypto';
|
||||
import sharp from 'sharp';
|
||||
import { encode as encodeBlurHash } from 'blurhash';
|
||||
import { uploadFile, deleteFile, downloadFile, BUCKETS } from './ceph.js';
|
||||
@ -36,6 +37,9 @@ const cacheLogger = log4js.getLogger('DatabaseCache');
|
||||
cacheLogger.level = config.server.logLevel;
|
||||
|
||||
const CACHE_TTL_SECONDS = parseInt(config.database.redis.cacheTtl || '30', 10);
|
||||
const NEIGHBORS_CACHE_TTL_SECONDS = 60;
|
||||
const NEIGHBORS_CACHE_WINDOW = 25;
|
||||
const NEIGHBORS_CACHE_PREFIX = 'neighbors';
|
||||
|
||||
const mergeObjectUpdates = (target, source) =>
|
||||
_.mergeWith(target, source, (objValue, srcValue) => {
|
||||
@ -133,6 +137,112 @@ export const deleteObjectCache = async ({ model, id }) => {
|
||||
}
|
||||
};
|
||||
|
||||
const buildNeighborsQueryFilter = (filter = {}, search = '') => {
|
||||
const queryFilter = { ...filter };
|
||||
|
||||
Object.keys(queryFilter).forEach((key) => {
|
||||
if (key.endsWith('._id')) {
|
||||
const baseKey = key.slice(0, -4);
|
||||
queryFilter[baseKey] = queryFilter[key];
|
||||
delete queryFilter[key];
|
||||
}
|
||||
});
|
||||
|
||||
if (search) {
|
||||
const isRefOrIdSearch = search.match(/^.{3}:/);
|
||||
if (isRefOrIdSearch) {
|
||||
const lookupValue = search.split(':')[1];
|
||||
if (lookupValue.length <= 12) {
|
||||
queryFilter._reference = lookupValue;
|
||||
} else {
|
||||
queryFilter._id = lookupValue;
|
||||
}
|
||||
} else {
|
||||
queryFilter.$text = { $search: search };
|
||||
}
|
||||
}
|
||||
|
||||
return queryFilter;
|
||||
};
|
||||
|
||||
const getNeighborsCacheKey = ({ model, id, filter = {}, search = '', sort = '', order = 'ascend' }) => {
|
||||
const normalizedSort = sort || 'createdAt';
|
||||
const normalizedOrder = order || 'ascend';
|
||||
const queryHash = crypto
|
||||
.createHash('sha256')
|
||||
.update(
|
||||
JSON.stringify({
|
||||
filter,
|
||||
search,
|
||||
sort: normalizedSort,
|
||||
order: normalizedOrder,
|
||||
})
|
||||
)
|
||||
.digest('hex');
|
||||
|
||||
return `${NEIGHBORS_CACHE_PREFIX}:${model.modelName}:${id?.toString()}:${queryHash}`;
|
||||
};
|
||||
|
||||
const neighborsCacheToResponse = (cached) =>
|
||||
expandObjectIds({
|
||||
next: cached.next[0] ? { _id: cached.next[0] } : null,
|
||||
previous: cached.previous[0] ? { _id: cached.previous[0] } : null,
|
||||
});
|
||||
|
||||
const buildNeighborsCacheValue = (ids, index) => {
|
||||
const previous = ids
|
||||
.slice(Math.max(0, index - NEIGHBORS_CACHE_WINDOW), index)
|
||||
.map((neighborId) => String(neighborId))
|
||||
.reverse();
|
||||
const next = ids
|
||||
.slice(index + 1, index + 1 + NEIGHBORS_CACHE_WINDOW)
|
||||
.map((neighborId) => String(neighborId));
|
||||
|
||||
return { previous, next };
|
||||
};
|
||||
|
||||
export const invalidateNeighborsCacheForObject = async ({ model, id }) => {
|
||||
if (!model || !id) return;
|
||||
|
||||
const objectId = id?.toString();
|
||||
const cacheKeyPrefix = `${NEIGHBORS_CACHE_PREFIX}:${model.modelName}:`;
|
||||
const cacheKeyForObject = `${cacheKeyPrefix}${objectId}:`;
|
||||
|
||||
cacheLogger.trace('Invalidating neighbors cache for object:', {
|
||||
model: model.modelName,
|
||||
id: objectId,
|
||||
});
|
||||
|
||||
try {
|
||||
const matchingKeys = await redisServer.getKeysByPattern(`${cacheKeyPrefix}*`);
|
||||
|
||||
for (const cacheKey of matchingKeys) {
|
||||
if (cacheKey.startsWith(cacheKeyForObject)) {
|
||||
await redisServer.deleteKey(cacheKey);
|
||||
continue;
|
||||
}
|
||||
|
||||
const cached = await redisServer.getKey(cacheKey);
|
||||
if (!cached) continue;
|
||||
|
||||
const containsId =
|
||||
(Array.isArray(cached.previous) && cached.previous.includes(objectId)) ||
|
||||
(Array.isArray(cached.next) && cached.next.includes(objectId));
|
||||
|
||||
if (containsId) {
|
||||
await redisServer.deleteKey(cacheKey);
|
||||
}
|
||||
}
|
||||
|
||||
cacheLogger.trace('Invalidated neighbors cache for object:', {
|
||||
model: model.modelName,
|
||||
id: objectId,
|
||||
});
|
||||
} catch (err) {
|
||||
cacheLogger.error('Error invalidating neighbors cache:', err);
|
||||
}
|
||||
};
|
||||
|
||||
// Utility to run one or many rollup aggregations in a single query via $facet.
|
||||
export const aggregateRollups = async ({ model, baseFilter = {}, rollupConfigs = [] }) => {
|
||||
if (!rollupConfigs.length) {
|
||||
@ -427,6 +537,63 @@ export const listObjects = async ({
|
||||
}
|
||||
};
|
||||
|
||||
export const getObjectNeighbors = async ({
|
||||
model,
|
||||
id,
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
}) => {
|
||||
try {
|
||||
const sortOrder = order === 'descend' ? -1 : 1;
|
||||
const sortField = sort || 'createdAt';
|
||||
const cacheKey = getNeighborsCacheKey({ model, id, filter, search, sort: sortField, order });
|
||||
|
||||
cacheLogger.trace('Retrieving neighbors from cache:', {
|
||||
model: model.modelName,
|
||||
id: id?.toString(),
|
||||
});
|
||||
|
||||
const cached = await redisServer.getKey(cacheKey);
|
||||
if (cached) {
|
||||
cacheLogger.trace('Neighbors cache hit:', {
|
||||
model: model.modelName,
|
||||
id: id?.toString(),
|
||||
});
|
||||
return neighborsCacheToResponse(cached);
|
||||
}
|
||||
|
||||
cacheLogger.trace('Neighbors cache miss:', {
|
||||
model: model.modelName,
|
||||
id: id?.toString(),
|
||||
});
|
||||
|
||||
const queryFilter = buildNeighborsQueryFilter(filter, search);
|
||||
|
||||
const results = await model
|
||||
.find(queryFilter)
|
||||
.sort({ [sortField]: sortOrder })
|
||||
.select('_id')
|
||||
.lean();
|
||||
|
||||
const ids = results.map((doc) => doc._id);
|
||||
const index = ids.findIndex((docId) => String(docId) === String(id));
|
||||
|
||||
if (index === -1) {
|
||||
return { next: null, previous: null };
|
||||
}
|
||||
|
||||
const cacheValue = buildNeighborsCacheValue(ids, index);
|
||||
await redisServer.setKey(cacheKey, cacheValue, NEIGHBORS_CACHE_TTL_SECONDS);
|
||||
|
||||
return neighborsCacheToResponse(cacheValue);
|
||||
} catch (error) {
|
||||
logger.error('Object neighbors error:', error);
|
||||
return { error: error, code: 500 };
|
||||
}
|
||||
};
|
||||
|
||||
export const searchObjects = async ({ model, search, populate = [] }) => {
|
||||
try {
|
||||
const isRefOrIdSearch = search.match(/^.{3}:/);
|
||||
@ -873,6 +1040,7 @@ export const editObject = async ({ model, id, updateData, user, populate, recalc
|
||||
object: updatedObject,
|
||||
populate,
|
||||
});
|
||||
await invalidateNeighborsCacheForObject({ model, id });
|
||||
|
||||
if (model.recalculate && recalculate == true) {
|
||||
logger.debug(`Recalculating ${model.modelName}`);
|
||||
@ -1208,6 +1376,7 @@ export const deleteObject = async (
|
||||
|
||||
// Invalidate cache for this object
|
||||
await deleteObjectCache({ model, id });
|
||||
await invalidateNeighborsCacheForObject({ model, id });
|
||||
|
||||
if (model.recalculate) {
|
||||
logger.debug(`Recalculating ${model.modelName}`);
|
||||
|
||||
@ -3,6 +3,17 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'vendor',
|
||||
'client',
|
||||
'state',
|
||||
'vendor._id',
|
||||
'client._id',
|
||||
'order',
|
||||
'order._id',
|
||||
'orderType',
|
||||
];
|
||||
import {
|
||||
listInvoicesRouteHandler,
|
||||
getInvoiceRouteHandler,
|
||||
@ -17,23 +28,15 @@ import {
|
||||
cancelInvoiceRouteHandler,
|
||||
postInvoiceRouteHandler,
|
||||
searchInvoicesRouteHandler,
|
||||
getInvoicePropertyValuesRouteHandler
|
||||
getInvoicePropertyValuesRouteHandler,
|
||||
|
||||
getInvoiceNeighborsRouteHandler
|
||||
} from '../../services/finance/invoices.js';
|
||||
|
||||
// list of invoices
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'vendor',
|
||||
'client',
|
||||
'state',
|
||||
'vendor._id',
|
||||
'client._id',
|
||||
'order',
|
||||
'order._id',
|
||||
'orderType',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listInvoicesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -49,7 +52,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'vendor._id',
|
||||
'client._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -81,6 +84,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getInvoiceHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getInvoiceNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getInvoiceRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,16 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'vendor',
|
||||
'client',
|
||||
'state',
|
||||
'vendor._id',
|
||||
'client._id',
|
||||
'invoice',
|
||||
'invoice._id',
|
||||
];
|
||||
import {
|
||||
listPaymentsRouteHandler,
|
||||
getPaymentRouteHandler,
|
||||
@ -18,22 +28,15 @@ import {
|
||||
declinePaymentRouteHandler,
|
||||
cancelPaymentRouteHandler,
|
||||
searchPaymentsRouteHandler,
|
||||
getPaymentPropertyValuesRouteHandler
|
||||
getPaymentPropertyValuesRouteHandler,
|
||||
|
||||
getPaymentNeighborsRouteHandler
|
||||
} from '../../services/finance/payments.js';
|
||||
|
||||
// list of payments
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'vendor',
|
||||
'client',
|
||||
'state',
|
||||
'vendor._id',
|
||||
'client._id',
|
||||
'invoice',
|
||||
'invoice._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listPaymentsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -49,7 +52,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'client._id',
|
||||
'invoice._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -81,6 +84,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getPaymentHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getPaymentNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getPaymentRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['taxRate', 'transactionType', 'transaction', 'transactionDate'];
|
||||
import {
|
||||
listTaxRecordsRouteHandler,
|
||||
getTaxRecordRouteHandler,
|
||||
@ -13,21 +15,22 @@ import {
|
||||
getTaxRecordStatsRouteHandler,
|
||||
getTaxRecordHistoryRouteHandler,
|
||||
searchTaxRecordsRouteHandler,
|
||||
getTaxRecordPropertyValuesRouteHandler
|
||||
getTaxRecordPropertyValuesRouteHandler,
|
||||
|
||||
getTaxRecordNeighborsRouteHandler
|
||||
} from '../../services/finance/taxrecords.js';
|
||||
|
||||
// list of tax records
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['taxRate', 'transactionType', 'transaction', 'transactionDate'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listTaxRecordsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['taxRate', 'transactionType', 'transaction'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getTaxRecordHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getTaxRecordNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getTaxRecordRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,18 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'filament',
|
||||
'filament._id',
|
||||
'filamentSku',
|
||||
'state',
|
||||
'startingWeight',
|
||||
'currentWeight',
|
||||
'filamentSku._id',
|
||||
'stockLocation',
|
||||
'stockLocation._id',
|
||||
];
|
||||
import {
|
||||
listFilamentStocksRouteHandler,
|
||||
getFilamentStockRouteHandler,
|
||||
@ -14,24 +26,15 @@ import {
|
||||
getFilamentStockStatsRouteHandler,
|
||||
getFilamentStockHistoryRouteHandler,
|
||||
searchFilamentStocksRouteHandler,
|
||||
getFilamentStockPropertyValuesRouteHandler
|
||||
getFilamentStockPropertyValuesRouteHandler,
|
||||
|
||||
getFilamentStockNeighborsRouteHandler
|
||||
} from '../../services/inventory/filamentstocks.js';
|
||||
|
||||
// list of filament stocks
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'filament',
|
||||
'filament._id',
|
||||
'filamentSku',
|
||||
'state',
|
||||
'startingWeight',
|
||||
'currentWeight',
|
||||
'filamentSku._id',
|
||||
'stockLocation',
|
||||
'stockLocation._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listFilamentStocksRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -44,7 +47,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'state.type',
|
||||
'filamentSku._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -76,6 +79,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getFilamentStockHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getFilamentStockNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getFilamentStockRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,18 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'name',
|
||||
'itemType',
|
||||
'item',
|
||||
'item._id',
|
||||
'order',
|
||||
'order._id',
|
||||
'orderType',
|
||||
'shipment',
|
||||
'shipment._id',
|
||||
];
|
||||
import {
|
||||
listOrderItemsRouteHandler,
|
||||
getOrderItemRouteHandler,
|
||||
@ -14,24 +26,15 @@ import {
|
||||
getOrderItemStatsRouteHandler,
|
||||
getOrderItemHistoryRouteHandler,
|
||||
searchOrderItemsRouteHandler,
|
||||
getOrderItemPropertyValuesRouteHandler
|
||||
getOrderItemPropertyValuesRouteHandler,
|
||||
|
||||
getOrderItemNeighborsRouteHandler
|
||||
} from '../../services/inventory/orderitems.js';
|
||||
|
||||
// list of order items
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'name',
|
||||
'itemType',
|
||||
'item',
|
||||
'item._id',
|
||||
'order',
|
||||
'order._id',
|
||||
'orderType',
|
||||
'shipment',
|
||||
'shipment._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listOrderItemsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -48,7 +51,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'shipment',
|
||||
'shipment._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -80,6 +83,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getOrderItemHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getOrderItemNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getOrderItemRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,16 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'partSku',
|
||||
'state',
|
||||
'startingQuantity',
|
||||
'currentQuantity',
|
||||
'partSku._id',
|
||||
'stockLocation',
|
||||
'stockLocation._id',
|
||||
];
|
||||
import {
|
||||
listPartStocksRouteHandler,
|
||||
getPartStockRouteHandler,
|
||||
@ -14,29 +24,22 @@ import {
|
||||
getPartStockStatsRouteHandler,
|
||||
getPartStockHistoryRouteHandler,
|
||||
searchPartStocksRouteHandler,
|
||||
getPartStockPropertyValuesRouteHandler
|
||||
getPartStockPropertyValuesRouteHandler,
|
||||
|
||||
getPartStockNeighborsRouteHandler
|
||||
} from '../../services/inventory/partstocks.js';
|
||||
|
||||
// list of part stocks
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'partSku',
|
||||
'state',
|
||||
'startingQuantity',
|
||||
'currentQuantity',
|
||||
'partSku._id',
|
||||
'stockLocation',
|
||||
'stockLocation._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listPartStocksRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['part', 'state.type'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -68,6 +71,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getPartStockHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getPartStockNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getPartStockRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,15 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'productSku',
|
||||
'state',
|
||||
'currentQuantity',
|
||||
'productSku._id',
|
||||
'stockLocation',
|
||||
'stockLocation._id',
|
||||
];
|
||||
import {
|
||||
listProductStocksRouteHandler,
|
||||
getProductStockRouteHandler,
|
||||
@ -15,27 +24,21 @@ import {
|
||||
getProductStockStatsRouteHandler,
|
||||
getProductStockHistoryRouteHandler,
|
||||
searchProductStocksRouteHandler,
|
||||
getProductStockPropertyValuesRouteHandler
|
||||
getProductStockPropertyValuesRouteHandler,
|
||||
|
||||
getProductStockNeighborsRouteHandler
|
||||
} from '../../services/inventory/productstocks.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'productSku',
|
||||
'state',
|
||||
'currentQuantity',
|
||||
'productSku._id',
|
||||
'stockLocation',
|
||||
'stockLocation._id',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listProductStocksRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['productSku', 'state.type'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -65,6 +68,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getProductStockHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getProductStockNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getProductStockRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,19 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'vendor',
|
||||
'state',
|
||||
'value',
|
||||
'vendor._id',
|
||||
'totalAmount',
|
||||
'totalAmountWithTax',
|
||||
'totalTaxAmount',
|
||||
'shippingAmount',
|
||||
'shippingAmountWithTax',
|
||||
'grandTotalAmount',
|
||||
];
|
||||
import {
|
||||
listPurchaseOrdersRouteHandler,
|
||||
getPurchaseOrderRouteHandler,
|
||||
@ -17,25 +30,15 @@ import {
|
||||
acknowledgePurchaseOrderRouteHandler,
|
||||
cancelPurchaseOrderRouteHandler,
|
||||
searchPurchaseOrdersRouteHandler,
|
||||
getPurchaseOrderPropertyValuesRouteHandler
|
||||
getPurchaseOrderPropertyValuesRouteHandler,
|
||||
|
||||
getPurchaseOrderNeighborsRouteHandler
|
||||
} from '../../services/inventory/purchaseorders.js';
|
||||
|
||||
// list of purchase orders
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'vendor',
|
||||
'state',
|
||||
'value',
|
||||
'vendor._id',
|
||||
'totalAmount',
|
||||
'totalAmountWithTax',
|
||||
'totalTaxAmount',
|
||||
'shippingAmount',
|
||||
'shippingAmountWithTax',
|
||||
'grandTotalAmount',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listPurchaseOrdersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -53,7 +56,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'shippingAmountWithTax',
|
||||
'grandTotalAmount',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = getFilter(JSON.parse(req.query.masterFilter), allowedFilters, true);
|
||||
@ -85,6 +88,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getPurchaseOrderHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getPurchaseOrderNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getPurchaseOrderRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['orderType', 'order', 'state', 'courierService', 'order._id', 'taxRate'];
|
||||
import {
|
||||
listShipmentsRouteHandler,
|
||||
getShipmentRouteHandler,
|
||||
@ -17,14 +19,15 @@ import {
|
||||
receiveShipmentRouteHandler,
|
||||
cancelShipmentRouteHandler,
|
||||
searchShipmentsRouteHandler,
|
||||
getShipmentPropertyValuesRouteHandler
|
||||
getShipmentPropertyValuesRouteHandler,
|
||||
|
||||
getShipmentNeighborsRouteHandler
|
||||
} from '../../services/inventory/shipments.js';
|
||||
|
||||
// list of shipments
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['orderType', 'order', 'state', 'courierService', 'order._id', 'taxRate'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listShipmentsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -38,7 +41,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'order._id',
|
||||
'taxRate',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = getFilter(JSON.parse(req.query.masterFilter), allowedFilters, true);
|
||||
@ -70,6 +73,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getShipmentHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getShipmentNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getShipmentRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import express from 'express';
|
||||
import { isAuthenticated } from '../../keycloak.js';
|
||||
import { parseFilter } from '../../utils.js';
|
||||
import { parseFilter, getFilter } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
import {
|
||||
@ -11,20 +11,21 @@ import {
|
||||
deleteStockAuditRouteHandler,
|
||||
getStockAuditStatsRouteHandler,
|
||||
getStockAuditHistoryRouteHandler,
|
||||
searchStockAuditsRouteHandler
|
||||
searchStockAuditsRouteHandler,
|
||||
getStockAuditNeighborsRouteHandler,
|
||||
} from '../../services/inventory/stockaudits.js';
|
||||
|
||||
const listAllowedFilters = ['status', 'type', 'createdBy'];
|
||||
|
||||
// List stock audits
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property } = req.query;
|
||||
|
||||
const allowedFilters = ['status', 'type', 'createdBy'];
|
||||
|
||||
var filter = {};
|
||||
|
||||
for (const [key, value] of Object.entries(req.query)) {
|
||||
for (var i = 0; i < allowedFilters.length; i++) {
|
||||
if (key == allowedFilters[i]) {
|
||||
for (var i = 0; i < listAllowedFilters.length; i++) {
|
||||
if (key == listAllowedFilters[i]) {
|
||||
const parsedFilter = parseFilter(key, value);
|
||||
filter = { ...filter, ...parsedFilter };
|
||||
}
|
||||
@ -54,6 +55,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getStockAuditHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getStockAuditNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
// Get specific stock audit
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getStockAuditRouteHandler(req, res);
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['owner._id', 'parent._id'];
|
||||
import {
|
||||
listStockEventsRouteHandler,
|
||||
getStockEventRouteHandler,
|
||||
@ -14,21 +16,22 @@ import {
|
||||
getStockEventStatsRouteHandler,
|
||||
getStockEventHistoryRouteHandler,
|
||||
searchStockEventsRouteHandler,
|
||||
getStockEventPropertyValuesRouteHandler
|
||||
getStockEventPropertyValuesRouteHandler,
|
||||
|
||||
getStockEventNeighborsRouteHandler
|
||||
} from '../../services/inventory/stockevents.js';
|
||||
|
||||
// list of stock events
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, sort, order } = req.query;
|
||||
const allowedFilters = ['owner._id', 'parent._id'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listStockEventsRouteHandler(req, res, page, limit, filter, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['owner._id', 'parent._id'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -60,6 +63,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getStockEventHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getStockEventNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getStockEventRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name'];
|
||||
import {
|
||||
listStockLocationsRouteHandler,
|
||||
getStockLocationRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getStockLocationStatsRouteHandler,
|
||||
getStockLocationHistoryRouteHandler,
|
||||
searchStockLocationsRouteHandler,
|
||||
getStockLocationPropertyValuesRouteHandler
|
||||
getStockLocationPropertyValuesRouteHandler,
|
||||
|
||||
getStockLocationNeighborsRouteHandler
|
||||
} from '../../services/inventory/stocklocations.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listStockLocationsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['name'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -57,6 +60,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getStockLocationHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getStockLocationNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getStockLocationRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['state', 'state.type', 'postedAt'];
|
||||
import {
|
||||
listStockTransfersRouteHandler,
|
||||
getStockTransferRouteHandler,
|
||||
@ -15,20 +17,21 @@ import {
|
||||
getStockTransferStatsRouteHandler,
|
||||
getStockTransferHistoryRouteHandler,
|
||||
searchStockTransfersRouteHandler,
|
||||
getStockTransferPropertyValuesRouteHandler
|
||||
getStockTransferPropertyValuesRouteHandler,
|
||||
|
||||
getStockTransferNeighborsRouteHandler
|
||||
} from '../../services/inventory/stocktransfers.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['state', 'state.type', 'postedAt'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listStockTransfersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['state.type'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -58,6 +61,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getStockTransferHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getStockTransferNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getStockTransferRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'name', 'user', 'active', 'user._id'];
|
||||
import {
|
||||
listAppPasswordsRouteHandler,
|
||||
getAppPasswordRouteHandler,
|
||||
@ -15,19 +17,20 @@ import {
|
||||
regenerateSecretRouteHandler,
|
||||
searchAppPasswordsRouteHandler,
|
||||
getAppPasswordPropertyValuesRouteHandler,
|
||||
|
||||
getAppPasswordNeighborsRouteHandler
|
||||
} from '../../services/management/apppasswords.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'name', 'user', 'active', 'user._id'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listAppPasswordsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
const properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['name', 'user', 'active'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
const masterFilter = req.query.masterFilter ? JSON.parse(req.query.masterFilter) : {};
|
||||
listAppPasswordsByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
|
||||
});
|
||||
@ -58,6 +61,12 @@ router.post('/:id/regenerateSecret', isAuthenticated, async (req, res) => {
|
||||
regenerateSecretRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getAppPasswordNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getAppPasswordRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name', 'website', 'email', 'phone', 'contact', 'country'];
|
||||
import {
|
||||
listCouriersRouteHandler,
|
||||
getCourierRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getCourierHistoryRouteHandler,
|
||||
searchCouriersRouteHandler,
|
||||
getCourierPropertyValuesRouteHandler,
|
||||
|
||||
getCourierNeighborsRouteHandler
|
||||
} from '../../services/management/courier.js';
|
||||
|
||||
// list of couriers
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name', 'website', 'email', 'phone', 'contact', 'country'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listCouriersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['name', 'website', 'email', 'phone', 'contact', 'country'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getCourierHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getCourierNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getCourierRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,18 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'_id',
|
||||
'courier',
|
||||
'courier._id',
|
||||
'name',
|
||||
'active',
|
||||
'tracked',
|
||||
'deliveryTime',
|
||||
'cost',
|
||||
'costWithTax',
|
||||
];
|
||||
import {
|
||||
listCourierServicesRouteHandler,
|
||||
getCourierServiceRouteHandler,
|
||||
@ -14,23 +26,14 @@ import {
|
||||
getCourierServiceHistoryRouteHandler,
|
||||
searchCourierServicesRouteHandler,
|
||||
getCourierServicePropertyValuesRouteHandler,
|
||||
|
||||
getCourierServiceNeighborsRouteHandler
|
||||
} from '../../services/management/courierservice.js';
|
||||
|
||||
// list of courier services
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'_id',
|
||||
'courier',
|
||||
'courier._id',
|
||||
'name',
|
||||
'active',
|
||||
'tracked',
|
||||
'deliveryTime',
|
||||
'cost',
|
||||
'costWithTax',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listCourierServicesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -47,7 +50,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'cost',
|
||||
'costWithTax',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -79,6 +82,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getCourierServiceHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getCourierServiceNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getCourierServiceRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name', 'width', 'height'];
|
||||
import {
|
||||
listDocumentJobsRouteHandler,
|
||||
getDocumentJobRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getDocumentJobHistoryRouteHandler,
|
||||
searchDocumentJobsRouteHandler,
|
||||
getDocumentJobPropertyValuesRouteHandler,
|
||||
|
||||
getDocumentJobNeighborsRouteHandler
|
||||
} from '../../services/management/documentjobs.js';
|
||||
|
||||
// list of document jobs
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name', 'width', 'height'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listDocumentJobsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = [];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getDocumentJobHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getDocumentJobNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getDocumentJobRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name', 'tags', 'active', 'isGlobal'];
|
||||
import {
|
||||
listDocumentPrintersRouteHandler,
|
||||
getDocumentPrinterRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getDocumentPrinterHistoryRouteHandler,
|
||||
searchDocumentPrintersRouteHandler,
|
||||
getDocumentPrinterPropertyValuesRouteHandler,
|
||||
|
||||
getDocumentPrinterNeighborsRouteHandler
|
||||
} from '../../services/management/documentprinters.js';
|
||||
|
||||
// list of document printers
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name', 'tags', 'active', 'isGlobal'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listDocumentPrintersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['tags'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getDocumentPrinterHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getDocumentPrinterNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getDocumentPrinterRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name', 'width', 'height'];
|
||||
import {
|
||||
listDocumentSizesRouteHandler,
|
||||
getDocumentSizeRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getDocumentSizeHistoryRouteHandler,
|
||||
searchDocumentSizesRouteHandler,
|
||||
getDocumentSizePropertyValuesRouteHandler,
|
||||
|
||||
getDocumentSizeNeighborsRouteHandler
|
||||
} from '../../services/management/documentsizes.js';
|
||||
|
||||
// list of document sizes
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name', 'width', 'height'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listDocumentSizesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = [];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getDocumentSizeHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getDocumentSizeNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getDocumentSizeRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name', 'tags', 'active', 'global', 'objectType'];
|
||||
import {
|
||||
listDocumentTemplatesRouteHandler,
|
||||
getDocumentTemplateRouteHandler,
|
||||
@ -14,20 +16,20 @@ import {
|
||||
getDocumentTemplateHistoryRouteHandler,
|
||||
getDocumentTemplatePropertyValuesRouteHandler,
|
||||
searchDocumentTemplatesRouteHandler,
|
||||
getDocumentTemplateNeighborsRouteHandler,
|
||||
} from '../../services/management/documenttemplates.js';
|
||||
|
||||
// list of document templates
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name', 'tags', 'active', 'global', 'objectType'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listDocumentTemplatesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['documentSize', 'tags'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +61,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getDocumentTemplateHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getDocumentTemplateNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getDocumentTemplateRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { convertPropertiesString, getFilter, parseFilter } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'material', 'material._id', 'diameter', 'name', 'cost'];
|
||||
import {
|
||||
listFilamentsRouteHandler,
|
||||
listFilamentsByPropertiesRouteHandler,
|
||||
@ -15,19 +17,20 @@ import {
|
||||
getFilamentHistoryRouteHandler,
|
||||
searchFilamentsRouteHandler,
|
||||
getFilamentPropertyValuesRouteHandler,
|
||||
|
||||
getFilamentNeighborsRouteHandler
|
||||
} from '../../services/management/filaments.js';
|
||||
|
||||
// list of filaments
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
|
||||
const allowedFilters = ['_id', 'material', 'material._id', 'diameter', 'name', 'cost'];
|
||||
|
||||
var filter = {};
|
||||
|
||||
for (const [key, value] of Object.entries(req.query)) {
|
||||
for (var i = 0; i < allowedFilters.length; i++) {
|
||||
if (key == allowedFilters[i]) {
|
||||
for (var i = 0; i < listAllowedFilters.length; i++) {
|
||||
if (key == listAllowedFilters[i]) {
|
||||
filter = { ...filter, ...parseFilter(key, value) };
|
||||
}
|
||||
}
|
||||
@ -39,7 +42,7 @@ router.get('/', isAuthenticated, (req, res) => {
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['diameter', 'material'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -71,6 +74,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getFilamentHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
getFilamentNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getFilamentRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'barcode', 'filament', 'filament._id', 'name', 'color', 'cost', 'costWithTax'];
|
||||
import {
|
||||
listFilamentSkusRouteHandler,
|
||||
getFilamentSkuRouteHandler,
|
||||
@ -13,20 +15,21 @@ import {
|
||||
getFilamentSkuStatsRouteHandler,
|
||||
getFilamentSkuHistoryRouteHandler,
|
||||
searchFilamentSkusRouteHandler,
|
||||
getFilamentSkuPropertyValuesRouteHandler
|
||||
getFilamentSkuPropertyValuesRouteHandler,
|
||||
|
||||
getFilamentSkuNeighborsRouteHandler
|
||||
} from '../../services/management/filamentskus.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'barcode', 'filament', 'filament._id', 'name', 'color', 'cost', 'costWithTax'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listFilamentSkusRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['filament', 'filament._id'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
let masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -56,6 +59,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getFilamentSkuHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getFilamentSkuNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getFilamentSkuRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'name', 'type', 'size', 'extension'];
|
||||
import {
|
||||
listFilesRouteHandler,
|
||||
getFileRouteHandler,
|
||||
@ -17,20 +19,21 @@ import {
|
||||
getFileHistoryRouteHandler,
|
||||
searchFilesRouteHandler,
|
||||
getFilePropertyValuesRouteHandler,
|
||||
|
||||
getFileNeighborsRouteHandler
|
||||
} from '../../services/management/files.js';
|
||||
|
||||
// list of files
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'name', 'type', 'size', 'extension'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listFilesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['type', 'extension'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -66,6 +69,12 @@ router.delete('/:id/flush', isAuthenticated, (req, res) => {
|
||||
flushFileRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getFileNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getFileRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'name', 'tags'];
|
||||
import {
|
||||
listHostsRouteHandler,
|
||||
getHostRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getHostHistoryRouteHandler,
|
||||
searchHostsRouteHandler,
|
||||
getHostPropertyValuesRouteHandler,
|
||||
|
||||
getHostNeighborsRouteHandler
|
||||
} from '../../services/management/hosts.js';
|
||||
|
||||
// list of hosts
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'name', 'tags'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listHostsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['tags'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getHostHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getHostNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getHostRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { convertPropertiesString, getFilter, parseFilter } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'name', 'tags'];
|
||||
import {
|
||||
listMaterialsRouteHandler,
|
||||
listMaterialsByPropertiesRouteHandler,
|
||||
@ -13,18 +15,19 @@ import {
|
||||
getMaterialHistoryRouteHandler,
|
||||
searchMaterialsRouteHandler,
|
||||
getMaterialPropertyValuesRouteHandler,
|
||||
|
||||
getMaterialNeighborsRouteHandler
|
||||
} from '../../services/management/materials.js';
|
||||
|
||||
// list of materials
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
|
||||
const allowedFilters = ['_id', 'name', 'tags'];
|
||||
|
||||
var filter = {};
|
||||
|
||||
for (const [key, value] of Object.entries(req.query)) {
|
||||
if (allowedFilters.includes(key)) {
|
||||
if (listAllowedFilters.includes(key)) {
|
||||
filter = { ...filter, ...parseFilter(key, value) };
|
||||
}
|
||||
}
|
||||
@ -35,7 +38,7 @@ router.get('/', isAuthenticated, (req, res) => {
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['name', 'tags'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -67,6 +70,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getMaterialHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
getMaterialNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getMaterialRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'name', 'active', 'color'];
|
||||
import {
|
||||
listNoteTypesRouteHandler,
|
||||
getNoteTypeRouteHandler,
|
||||
@ -13,21 +15,22 @@ import {
|
||||
getNoteTypeStatsRouteHandler,
|
||||
getNoteTypeHistoryRouteHandler,
|
||||
searchNoteTypesRouteHandler,
|
||||
getNoteTypePropertyValuesRouteHandler
|
||||
getNoteTypePropertyValuesRouteHandler,
|
||||
|
||||
getNoteTypeNeighborsRouteHandler
|
||||
} from '../../services/management/notetypes.js';
|
||||
|
||||
// list of note types
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'name', 'active', 'color'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listNoteTypesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['active', 'color'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getNoteTypeHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getNoteTypeNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getNoteTypeRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['product._id', '_id', 'name'];
|
||||
import {
|
||||
listPartsRouteHandler,
|
||||
getPartRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getPartHistoryRouteHandler,
|
||||
searchPartsRouteHandler,
|
||||
getPartPropertyValuesRouteHandler,
|
||||
|
||||
getPartNeighborsRouteHandler
|
||||
} from '../../services/management/parts.js';
|
||||
|
||||
// list of parts
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['product._id', '_id', 'name'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listPartsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['product._id'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getPartHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getPartNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getPartRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'barcode', 'part', 'part._id', 'name', 'cost', 'price'];
|
||||
import {
|
||||
listPartSkusRouteHandler,
|
||||
getPartSkuRouteHandler,
|
||||
@ -13,20 +15,21 @@ import {
|
||||
getPartSkuStatsRouteHandler,
|
||||
getPartSkuHistoryRouteHandler,
|
||||
searchPartSkusRouteHandler,
|
||||
getPartSkuPropertyValuesRouteHandler
|
||||
getPartSkuPropertyValuesRouteHandler,
|
||||
|
||||
getPartSkuNeighborsRouteHandler
|
||||
} from '../../services/management/partskus.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'barcode', 'part', 'part._id', 'name', 'cost', 'price'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listPartSkusRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['part', 'part._id'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
let masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -56,6 +59,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getPartSkuHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getPartSkuNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getPartSkuRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -12,21 +12,24 @@ import {
|
||||
newProductCategoryRouteHandler,
|
||||
searchProductCategoriesRouteHandler,
|
||||
getProductCategoryPropertyValuesRouteHandler,
|
||||
|
||||
getProductCategoryNeighborsRouteHandler
|
||||
} from '../../services/management/productcategories.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'name'];
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'name'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listProductCategoriesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
const properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['name'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -56,6 +59,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getProductCategoryHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getProductCategoryNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getProductCategoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'name', 'globalPrice', 'productCategory', 'productCategory._id'];
|
||||
import {
|
||||
listProductsRouteHandler,
|
||||
getProductRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getProductHistoryRouteHandler,
|
||||
searchProductsRouteHandler,
|
||||
getProductPropertyValuesRouteHandler,
|
||||
|
||||
getProductNeighborsRouteHandler
|
||||
} from '../../services/management/products.js';
|
||||
|
||||
// list of products
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'name', 'globalPrice', 'productCategory', 'productCategory._id'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listProductsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = [];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getProductHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getProductNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getProductRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'barcode', 'product', 'product._id', 'name', 'cost', 'price'];
|
||||
import {
|
||||
listProductSkusRouteHandler,
|
||||
getProductSkuRouteHandler,
|
||||
@ -13,20 +15,21 @@ import {
|
||||
getProductSkuStatsRouteHandler,
|
||||
getProductSkuHistoryRouteHandler,
|
||||
searchProductSkusRouteHandler,
|
||||
getProductSkuPropertyValuesRouteHandler
|
||||
getProductSkuPropertyValuesRouteHandler,
|
||||
|
||||
getProductSkuNeighborsRouteHandler
|
||||
} from '../../services/management/productskus.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'barcode', 'product', 'product._id', 'name', 'cost', 'price'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listProductSkusRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['product', 'product._id'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
let masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -56,6 +59,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getProductSkuHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getProductSkuNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getProductSkuRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name', 'rate', 'rateType', 'active', 'country'];
|
||||
import {
|
||||
listTaxRatesRouteHandler,
|
||||
getTaxRateRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getTaxRateHistoryRouteHandler,
|
||||
searchTaxRatesRouteHandler,
|
||||
getTaxRatePropertyValuesRouteHandler,
|
||||
|
||||
getTaxRateNeighborsRouteHandler
|
||||
} from '../../services/management/taxrates.js';
|
||||
|
||||
// list of tax rates
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name', 'rate', 'rateType', 'active', 'country'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listTaxRatesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['rateType', 'country', 'active'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getTaxRateHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getTaxRateNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getTaxRateRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { convertPropertiesString, getFilter } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name', 'username', 'firstName', 'lastName', 'email'];
|
||||
import {
|
||||
listUsersRouteHandler,
|
||||
listUsersByPropertiesRouteHandler,
|
||||
@ -12,21 +14,22 @@ import {
|
||||
getUserHistoryRouteHandler,
|
||||
setAppPasswordRouteHandler,
|
||||
searchUsersRouteHandler,
|
||||
getUserPropertyValuesRouteHandler
|
||||
getUserPropertyValuesRouteHandler,
|
||||
|
||||
getUserNeighborsRouteHandler
|
||||
} from '../../services/management/users.js';
|
||||
|
||||
// list of document templates
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name', 'username', 'firstName', 'lastName', 'email'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listUsersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = [];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -54,6 +57,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getUserHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getUserNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getUserRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
|
||||
import {
|
||||
listVendorsRouteHandler,
|
||||
getVendorRouteHandler,
|
||||
@ -14,20 +16,21 @@ import {
|
||||
getVendorHistoryRouteHandler,
|
||||
searchVendorsRouteHandler,
|
||||
getVendorPropertyValuesRouteHandler,
|
||||
|
||||
getVendorNeighborsRouteHandler
|
||||
} from '../../services/management/vendors.js';
|
||||
|
||||
// list of vendors
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listVendorsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getVendorHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getVendorNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getVendorRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -10,23 +10,26 @@ import {
|
||||
getNoteStatsRouteHandler,
|
||||
getNoteHistoryRouteHandler,
|
||||
getNotePropertyValuesRouteHandler,
|
||||
|
||||
getNoteNeighborsRouteHandler
|
||||
} from '../../services/misc/notes.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['parent._id'];
|
||||
|
||||
// list of notes
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['parent._id'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listNotesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['parent'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -54,6 +57,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getNoteHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getNoteNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getNoteRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -10,6 +10,8 @@ import {
|
||||
newFilamentProfileRouteHandler,
|
||||
searchFilamentProfilesRouteHandler,
|
||||
getFilamentProfilePropertyValuesRouteHandler,
|
||||
|
||||
getFilamentProfileNeighborsRouteHandler
|
||||
} from '../../services/production/filamentprofiles.js';
|
||||
|
||||
const router = express.Router();
|
||||
@ -43,6 +45,12 @@ router.post('/', isAuthenticated, (req, res) => {
|
||||
newFilamentProfileRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, ['_id', 'name']);
|
||||
getFilamentProfileNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getFilamentProfileRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -2,6 +2,8 @@ import express from 'express';
|
||||
import { isAuthenticated } from '../../keycloak.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'name', 'filament', 'filament._id', 'filamentSku', 'filamentSku._id'];
|
||||
import {
|
||||
listGCodeFilesRouteHandler,
|
||||
editGCodeFileRouteHandler,
|
||||
@ -11,22 +13,23 @@ import {
|
||||
getGCodeFileContentRouteHandler,
|
||||
getGCodeFileStatsRouteHandler,
|
||||
searchGCodeFilesRouteHandler,
|
||||
getGCodeFilePropertyValuesRouteHandler
|
||||
getGCodeFilePropertyValuesRouteHandler,
|
||||
|
||||
getGCodeFileNeighborsRouteHandler
|
||||
} from '../../services/production/gcodefiles.js';
|
||||
import { convertPropertiesString, getFilter } from '../../utils.js';
|
||||
|
||||
// list of gcodeFiles
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'name', 'filament', 'filament._id', 'filamentSku', 'filamentSku._id'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listGCodeFilesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['filament', 'filament._id', 'filamentSku', 'filamentSku._id'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -54,6 +57,12 @@ router.get('/stats', isAuthenticated, (req, res) => {
|
||||
getGCodeFileStatsRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getGCodeFileNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getGCodeFileRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -2,6 +2,8 @@ import express from 'express';
|
||||
import { isAuthenticated } from '../../keycloak.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['state', 'gcodeFile._id', 'quantity'];
|
||||
import {
|
||||
listJobsRouteHandler,
|
||||
listJobsByPropertiesRouteHandler,
|
||||
@ -12,22 +14,23 @@ import {
|
||||
getJobStatsRouteHandler,
|
||||
getJobHistoryRouteHandler,
|
||||
searchJobsRouteHandler,
|
||||
getJobPropertyValuesRouteHandler
|
||||
getJobPropertyValuesRouteHandler,
|
||||
|
||||
getJobNeighborsRouteHandler
|
||||
} from '../../services/production/jobs.js';
|
||||
import { convertPropertiesString, getFilter } from '../../utils.js';
|
||||
|
||||
// list of jobs
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['state', 'gcodeFile._id', 'quantity'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listJobsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['state'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getJobHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getJobNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getJobRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -10,6 +10,8 @@ import {
|
||||
newPrinterProfileRouteHandler,
|
||||
searchPrinterProfilesRouteHandler,
|
||||
getPrinterProfilePropertyValuesRouteHandler,
|
||||
|
||||
getPrinterProfileNeighborsRouteHandler
|
||||
} from '../../services/production/printerprofiles.js';
|
||||
|
||||
const router = express.Router();
|
||||
@ -43,6 +45,12 @@ router.post('/', isAuthenticated, (req, res) => {
|
||||
newPrinterProfileRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, ['_id', 'name']);
|
||||
getPrinterProfileNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getPrinterProfileRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -12,21 +12,22 @@ import {
|
||||
getPrinterHistoryRouteHandler,
|
||||
searchPrintersRouteHandler,
|
||||
getPrinterPropertyValuesRouteHandler,
|
||||
getPrinterNeighborsRouteHandler,
|
||||
} from '../../services/production/printers.js';
|
||||
import { convertPropertiesString, getFilter } from '../../utils.js';
|
||||
|
||||
const listAllowedFilters = ['tags', 'host._id', 'active', 'online', 'name', '_id', '_reference'];
|
||||
const propertiesAllowedFilters = ['tags'];
|
||||
// list of printers
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['tags', 'host._id', 'active', 'online', 'name', '_id', '_reference'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listPrintersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['tags'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, propertiesAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -53,6 +54,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getPrinterHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getPrinterNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
// get printer stats
|
||||
router.get('/stats', isAuthenticated, (req, res) => {
|
||||
getPrinterStatsRouteHandler(req, res);
|
||||
|
||||
@ -2,6 +2,8 @@ import express from 'express';
|
||||
import { isAuthenticated } from '../../keycloak.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['_id', 'job._id', 'printer._id'];
|
||||
import {
|
||||
listSubJobsRouteHandler,
|
||||
listSubJobsByPropertiesRouteHandler,
|
||||
@ -9,22 +11,23 @@ import {
|
||||
getSubJobStatsRouteHandler,
|
||||
getSubJobHistoryRouteHandler,
|
||||
searchSubJobsRouteHandler,
|
||||
getSubJobPropertyValuesRouteHandler
|
||||
getSubJobPropertyValuesRouteHandler,
|
||||
|
||||
getSubJobNeighborsRouteHandler
|
||||
} from '../../services/production/subjobs.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
// list of sub jobs
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['_id', 'job._id', 'printer._id'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listSubJobsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['job'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -52,6 +55,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getSubJobHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getSubJobNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getSubJobRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
|
||||
import {
|
||||
listClientsRouteHandler,
|
||||
getClientRouteHandler,
|
||||
@ -13,21 +15,22 @@ import {
|
||||
getClientStatsRouteHandler,
|
||||
getClientHistoryRouteHandler,
|
||||
searchClientsRouteHandler,
|
||||
getClientPropertyValuesRouteHandler
|
||||
getClientPropertyValuesRouteHandler,
|
||||
|
||||
getClientNeighborsRouteHandler
|
||||
} from '../../services/sales/clients.js';
|
||||
|
||||
// list of clients
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listClientsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['country', 'active', 'createdAt', 'updatedAt'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -59,6 +62,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getClientHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getClientNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getClientRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,18 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'product',
|
||||
'vendor',
|
||||
'stockLocation',
|
||||
'marketplace',
|
||||
'courierServices',
|
||||
'state',
|
||||
'state.type',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
import {
|
||||
listListingsRouteHandler,
|
||||
getListingRouteHandler,
|
||||
@ -16,22 +28,13 @@ import {
|
||||
unpublishListingRouteHandler,
|
||||
searchListingsRouteHandler,
|
||||
getListingPropertyValuesRouteHandler,
|
||||
|
||||
getListingNeighborsRouteHandler
|
||||
} from '../../services/sales/listings.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'product',
|
||||
'vendor',
|
||||
'stockLocation',
|
||||
'marketplace',
|
||||
'courierServices',
|
||||
'state',
|
||||
'state.type',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listListingsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -48,7 +51,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -85,6 +88,12 @@ router.post('/:id/unpublish', isAuthenticated, (req, res) => {
|
||||
unpublishListingRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getListingNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getListingRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,17 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = [
|
||||
'listing',
|
||||
'listing._id',
|
||||
'product',
|
||||
'productSku',
|
||||
'state',
|
||||
'state.type',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
import {
|
||||
listListingVarientsRouteHandler,
|
||||
getListingVarientRouteHandler,
|
||||
@ -15,22 +26,14 @@ import {
|
||||
publishListingVarientRouteHandler,
|
||||
unpublishListingVarientRouteHandler,
|
||||
searchListingVarientsRouteHandler,
|
||||
getListingVarientPropertyValuesRouteHandler
|
||||
getListingVarientPropertyValuesRouteHandler,
|
||||
|
||||
getListingVarientNeighborsRouteHandler
|
||||
} from '../../services/sales/listingvarients.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = [
|
||||
'listing',
|
||||
'listing._id',
|
||||
'product',
|
||||
'productSku',
|
||||
'state',
|
||||
'state.type',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listListingVarientsRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
@ -46,7 +49,7 @@ router.get('/properties', isAuthenticated, (req, res) => {
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -84,6 +87,12 @@ router.post('/:id/unpublish', isAuthenticated, (req, res) => {
|
||||
unpublishListingVarientRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getListingVarientNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getListingVarientRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['name', 'provider', 'active', 'connected', 'state.type', 'createdAt', 'updatedAt'];
|
||||
import {
|
||||
listMarketplacesRouteHandler,
|
||||
getMarketplaceRouteHandler,
|
||||
@ -19,20 +21,21 @@ import {
|
||||
syncMarketplaceOrdersRouteHandler,
|
||||
marketplaceWebhookRouteHandler,
|
||||
searchMarketplacesRouteHandler,
|
||||
getMarketplacePropertyValuesRouteHandler
|
||||
getMarketplacePropertyValuesRouteHandler,
|
||||
|
||||
getMarketplaceNeighborsRouteHandler
|
||||
} from '../../services/sales/marketplaces.js';
|
||||
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['name', 'provider', 'active', 'connected', 'state.type', 'createdAt', 'updatedAt'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listMarketplacesRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['name', 'provider', 'active', 'connected', 'state.type', 'createdAt', 'updatedAt'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = JSON.parse(req.query.masterFilter);
|
||||
@ -87,6 +90,12 @@ router.post('/:id/hook', (req, res) => {
|
||||
marketplaceWebhookRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getMarketplaceNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getMarketplaceRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -3,6 +3,8 @@ import { isAuthenticated } from '../../keycloak.js';
|
||||
import { getFilter, convertPropertiesString } from '../../utils.js';
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
const listAllowedFilters = ['client', 'state', 'value', 'client._id'];
|
||||
import {
|
||||
listSalesOrdersRouteHandler,
|
||||
getSalesOrderRouteHandler,
|
||||
@ -17,21 +19,22 @@ import {
|
||||
confirmSalesOrderRouteHandler,
|
||||
cancelSalesOrderRouteHandler,
|
||||
searchSalesOrdersRouteHandler,
|
||||
getSalesOrderPropertyValuesRouteHandler
|
||||
getSalesOrderPropertyValuesRouteHandler,
|
||||
|
||||
getSalesOrderNeighborsRouteHandler
|
||||
} from '../../services/sales/salesorders.js';
|
||||
|
||||
// list of sales orders
|
||||
router.get('/', isAuthenticated, (req, res) => {
|
||||
const { page, limit, property, search, sort, order } = req.query;
|
||||
const allowedFilters = ['client', 'state', 'value', 'client._id'];
|
||||
const filter = getFilter(req.query, allowedFilters);
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
listSalesOrdersRouteHandler(req, res, page, limit, property, filter, search, sort, order);
|
||||
});
|
||||
|
||||
router.get('/properties', isAuthenticated, (req, res) => {
|
||||
let properties = convertPropertiesString(req.query.properties);
|
||||
const allowedFilters = ['client', 'state.type', 'value', 'client._id'];
|
||||
const filter = getFilter(req.query, allowedFilters, false);
|
||||
const filter = getFilter(req.query, listAllowedFilters, false);
|
||||
var masterFilter = {};
|
||||
if (req.query.masterFilter) {
|
||||
masterFilter = getFilter(JSON.parse(req.query.masterFilter), allowedFilters, true);
|
||||
@ -63,6 +66,12 @@ router.get('/history', isAuthenticated, (req, res) => {
|
||||
getSalesOrderHistoryRouteHandler(req, res);
|
||||
});
|
||||
|
||||
router.get('/neighbors', isAuthenticated, (req, res) => {
|
||||
const { property, search, sort, order, id } = req.query;
|
||||
const filter = getFilter(req.query, listAllowedFilters);
|
||||
getSalesOrderNeighborsRouteHandler(req, res, property, filter, search, sort, order, id);
|
||||
});
|
||||
|
||||
router.get('/:id', isAuthenticated, (req, res) => {
|
||||
getSalesOrderRouteHandler(req, res);
|
||||
});
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import { orderItemModel } from '../../database/schemas/inventory/orderitem.schema.js';
|
||||
import { shipmentModel } from '../../database/schemas/inventory/shipment.schema.js';
|
||||
@ -574,3 +575,35 @@ export const cancelInvoiceRouteHandler = async (req, res) => {
|
||||
logger.debug(`Cancelled invoice with ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
export const getInvoiceNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: invoiceModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching invoice neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved invoice neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import { invoiceModel } from '../../database/schemas/finance/invoice.schema.js';
|
||||
|
||||
@ -469,3 +470,35 @@ export const cancelPaymentRouteHandler = async (req, res) => {
|
||||
logger.debug(`Cancelled payment with ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
export const getPaymentNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: paymentModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching payment neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved payment neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('TaxRecords');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -204,3 +205,35 @@ export const getTaxRecordHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Tax record history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getTaxRecordNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: taxRecordModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching taxRecord neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved taxRecord neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import { stockEventModel } from '../../database/schemas/inventory/stockevent.schema.js';
|
||||
const logger = log4js.getLogger('Filament Stocks');
|
||||
@ -263,3 +264,35 @@ export const getFilamentStockHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Filament stock history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getFilamentStockNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: filamentStockModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching filamentStock neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved filamentStock neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Order Items');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -414,3 +415,35 @@ export const getOrderItemHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Order item history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getOrderItemNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: orderItemModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching orderItem neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved orderItem neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Part Stocks');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -227,3 +228,35 @@ export const getPartStockHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Part stock history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getPartStockNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: partStockModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching partStock neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved partStock neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import { productSkuModel } from '../../database/schemas/management/productsku.schema.js';
|
||||
const logger = log4js.getLogger('Product Stocks');
|
||||
@ -325,3 +326,35 @@ export const postProductStockRouteHandler = async (req, res) => {
|
||||
logger.debug(`Posted product stock with ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
export const getProductStockNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: productStockModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching productStock neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved productStock neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import { orderItemModel } from '../../database/schemas/inventory/orderitem.schema.js';
|
||||
import { shipmentModel } from '../../database/schemas/inventory/shipment.schema.js';
|
||||
@ -476,3 +477,35 @@ export const cancelPurchaseOrderRouteHandler = async (req, res) => {
|
||||
logger.debug(`Cancelled purchase order with ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
export const getPurchaseOrderNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: purchaseOrderModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching purchaseOrder neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved purchaseOrder neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Shipments');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -459,3 +460,35 @@ export const cancelShipmentRouteHandler = async (req, res) => {
|
||||
logger.debug(`Cancelled shipment with ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
export const getShipmentNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: shipmentModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching shipment neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved shipment neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -5,7 +5,8 @@ import mongoose from 'mongoose';
|
||||
import { getAuditLogs } from '../../utils.js';
|
||||
import {
|
||||
getModelStats, getModelHistory,
|
||||
searchObjects
|
||||
searchObjects,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('Stock Audits');
|
||||
@ -200,3 +201,35 @@ export const getStockAuditHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Stock audit history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getStockAuditNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: stockAuditModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching stock audit neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved stock audit neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -14,6 +14,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Stock Events');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -236,3 +237,35 @@ export const getStockEventHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Stock event history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getStockEventNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: stockEventModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching stockEvent neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved stockEvent neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('Stock Locations');
|
||||
@ -212,3 +213,35 @@ export const getStockLocationHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Stock location history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getStockLocationNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: stockLocationModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching stockLocation neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved stockLocation neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -20,6 +20,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('Stock Transfers');
|
||||
@ -533,3 +534,35 @@ export const getStockTransferHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Stock transfer history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getStockTransferNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: stockEventModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching stockTransfer neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved stockTransfer neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('AppPasswords');
|
||||
@ -246,3 +247,35 @@ export const regenerateSecretRouteHandler = async (req, res) => {
|
||||
logger.debug(`Regenerated secret for app password with ID: ${id}`);
|
||||
res.send({ appPassword: plainSecret });
|
||||
};
|
||||
export const getAppPasswordNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: appPasswordModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching appPassword neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved appPassword neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Couriers');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -205,3 +206,35 @@ export const getCourierHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Courier history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getCourierNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: courierModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching courier neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved courier neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('CourierServices');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -223,3 +224,35 @@ export const getCourierServiceHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Courier service history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getCourierServiceNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: courierServiceModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching courierService neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved courierService neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Document Jobs');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -201,3 +202,35 @@ export const getDocumentJobHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Document job history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getDocumentJobNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: documentJobModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching documentJob neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved documentJob neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Document Templates');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -212,3 +213,35 @@ export const getDocumentPrinterHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Document printer history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getDocumentPrinterNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: documentPrinterModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching documentPrinter neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved documentPrinter neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Document Sizes');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -200,3 +201,35 @@ export const getDocumentSizeHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Document size history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getDocumentSizeNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: documentSizeModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching documentSize neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved documentSize neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Document Templates');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -229,3 +230,35 @@ export const getDocumentTemplateHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Document template history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getDocumentTemplateNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: documentTemplateModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching documentTemplate neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved documentTemplate neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('Filaments');
|
||||
@ -260,3 +261,35 @@ export const getFilamentHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Filament history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getFilamentNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: filamentModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching filament neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved filament neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Filament SKUs');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -213,3 +214,35 @@ export const getFilamentSkuHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Filament SKU history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getFilamentSkuNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: filamentSkuModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching filamentSku neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved filamentSku neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -17,6 +17,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
createFileThumbnails,
|
||||
getThumbnail,
|
||||
} from '../../database/database.js';
|
||||
@ -579,3 +580,35 @@ export const getFileHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('File history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getFileNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: fileModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching file neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved file neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Hosts');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -201,3 +202,35 @@ export const getHostHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Host history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getHostNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: hostModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching host neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved host neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('Materials');
|
||||
@ -179,3 +180,35 @@ export const getMaterialHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Material history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getMaterialNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: materialModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching material neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved material neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Note Types');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -198,3 +199,35 @@ export const getNoteTypeHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Note type history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getNoteTypeNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: noteTypeModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching noteType neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved noteType neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Parts');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -217,3 +218,35 @@ export const getPartHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Part history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getPartNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: partModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching part neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved part neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Part SKUs');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -231,3 +232,35 @@ export const getPartSkuHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Part SKU history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getPartSkuNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: partSkuModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching partSku neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved partSku neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
newObject,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('ProductCategories');
|
||||
@ -195,3 +196,35 @@ export const getProductCategoryHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Product category history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getProductCategoryNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: productCategoryModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching productCategory neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved productCategory neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Products');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -223,3 +224,35 @@ export const getProductHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Product history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getProductNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: productModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching product neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved product neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Product SKUs');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -236,3 +237,35 @@ export const getProductSkuHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Product SKU history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getProductSkuNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: productSkuModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching productSku neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved productSku neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('TaxRates');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -208,3 +209,35 @@ export const getTaxRateHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Tax rate history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getTaxRateNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: taxRateModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching taxRate neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved taxRate neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('Users');
|
||||
@ -206,3 +207,35 @@ export const setAppPasswordRouteHandler = async (req, res) => {
|
||||
|
||||
res.send({ appPassword });
|
||||
};
|
||||
export const getUserNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: userModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching user neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved user neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Vendors');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -208,3 +209,35 @@ export const getVendorHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Vendor history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getVendorNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: vendorModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching vendor neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved vendor neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ import {
|
||||
getModelStats,
|
||||
getModelHistory,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import mongoose from 'mongoose';
|
||||
import { newNoteNotification } from '../../utils.js';
|
||||
@ -204,3 +205,35 @@ export const getNoteHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Note history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getNoteNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: noteModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching note neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved note neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -11,6 +11,7 @@ import {
|
||||
newObject,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('FilamentProfiles');
|
||||
@ -314,3 +315,35 @@ export const deleteFilamentProfileRouteHandler = async (req, res) => {
|
||||
logger.debug(`Deleted filament profile with ID: ${result._id}`);
|
||||
res.send(result);
|
||||
};
|
||||
export const getFilamentProfileNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: filamentProfileModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching filamentProfile neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved filamentProfile neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ import {
|
||||
newObject,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import { getFileContentRouteHandler } from '../management/files.js';
|
||||
import mongoose from 'mongoose';
|
||||
@ -226,3 +227,35 @@ export const getGCodeFileStatsRouteHandler = async (req, res) => {
|
||||
res.status(500).send({ error: error.message });
|
||||
}
|
||||
};
|
||||
export const getGCodeFileNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: gcodeFileModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching gCodeFile neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved gCodeFile neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -12,7 +12,8 @@ import {
|
||||
getModelStats,
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
checkStates
|
||||
checkStates,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Jobs');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -216,3 +217,35 @@ export const getJobHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Job history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getJobNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: jobModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching job neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved job neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -11,6 +11,7 @@ import {
|
||||
newObject,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
|
||||
const logger = log4js.getLogger('PrinterProfiles');
|
||||
@ -202,3 +203,35 @@ export const deletePrinterProfileRouteHandler = async (req, res) => {
|
||||
logger.debug(`Deleted printer profile with ID: ${result._id}`);
|
||||
res.send(result);
|
||||
};
|
||||
export const getPrinterProfileNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: printerProfileModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching printerProfile neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved printerProfile neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -12,6 +12,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import mongoose from 'mongoose';
|
||||
|
||||
@ -217,3 +218,35 @@ export const getPrinterHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Printer history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
export const getPrinterNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: printerModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching printer neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved printer neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
@ -9,6 +9,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Sub Jobs');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -122,3 +123,35 @@ export const getSubJobHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Sub job history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getSubJobNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: subJobModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching subJob neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved subJob neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
const logger = log4js.getLogger('Clients');
|
||||
logger.level = config.server.logLevel;
|
||||
@ -208,4 +209,35 @@ export const getClientHistoryRouteHandler = async (req, res) => {
|
||||
logger.trace('Client history:', result);
|
||||
res.send(result);
|
||||
};
|
||||
export const getClientNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: clientModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching client neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved client neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -16,6 +16,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import {
|
||||
hasIntegration,
|
||||
@ -499,3 +500,35 @@ export const unpublishListingRouteHandler = async (req, res) => {
|
||||
res.status(500).send({ error: err.message, code: 500 });
|
||||
}
|
||||
};
|
||||
export const getListingNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: listingModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching listing neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved listing neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -14,6 +14,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import { listingModel } from '../../database/schemas/sales/listing.schema.js';
|
||||
import {
|
||||
@ -458,3 +459,35 @@ export const unpublishListingVarientRouteHandler = async (req, res) => {
|
||||
res.status(500).send({ error: err.message, code: 500 });
|
||||
}
|
||||
};
|
||||
export const getListingVarientNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: listingVarientModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching listingVarient neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved listingVarient neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ import {
|
||||
getModelHistory,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import * as marketplaceIntegration from '../../integrations/marketplaceworker.js';
|
||||
const logger = log4js.getLogger('Marketplaces');
|
||||
@ -383,3 +384,35 @@ export const marketplaceWebhookRouteHandler = async (req, res) => {
|
||||
res.status(500).send({ error: err.message, code: 500 });
|
||||
}
|
||||
};
|
||||
export const getMarketplaceNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: marketplaceModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching marketplace neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved marketplace neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
@ -15,6 +15,7 @@ import {
|
||||
checkStates,
|
||||
searchObjects,
|
||||
getPropertyValues,
|
||||
getObjectNeighbors,
|
||||
} from '../../database/database.js';
|
||||
import { orderItemModel } from '../../database/schemas/inventory/orderitem.schema.js';
|
||||
import { shipmentModel } from '../../database/schemas/inventory/shipment.schema.js';
|
||||
@ -479,4 +480,35 @@ export const cancelSalesOrderRouteHandler = async (req, res) => {
|
||||
logger.debug(`Cancelled sales order with ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
export const getSalesOrderNeighborsRouteHandler = async (
|
||||
req,
|
||||
res,
|
||||
property = '',
|
||||
filter = {},
|
||||
search = '',
|
||||
sort = '',
|
||||
order = 'ascend',
|
||||
id
|
||||
) => {
|
||||
if (!id) {
|
||||
return res.status(400).send({ error: 'Missing id parameter', code: 400 });
|
||||
}
|
||||
|
||||
const result = await getObjectNeighbors({
|
||||
model: salesOrderModel,
|
||||
id,
|
||||
filter,
|
||||
search,
|
||||
sort,
|
||||
order,
|
||||
});
|
||||
|
||||
if (result?.error) {
|
||||
logger.error('Error fetching salesOrder neighbors.');
|
||||
return res.status(result.code).send(result);
|
||||
}
|
||||
|
||||
logger.debug(`Retrieved salesOrder neighbors for ID: ${id}`);
|
||||
res.send(result);
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user