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