farmcontrol-api/src/routes/management/courierservice.js
Tom Butcher 850c721867
All checks were successful
farmcontrol/farmcontrol-api/pipeline/head This commit looks good
Refactor allowed filters and sorters across various routes to enhance data handling
This commit updates the allowed filters and sorters in multiple routes, including invoices, payment policies, inventory, management, and sales. It removes unnecessary filters, adds new ones for improved categorization, and ensures consistency in the data structure. These changes aim to streamline data retrieval and enhance the overall functionality of the application.
2026-09-01 19:54:44 +01:00

141 lines
4.1 KiB
JavaScript

import express from 'express';
import { isAuthenticated } from '../../keycloak.js';
import { checkPermissions } from '../../database/permissions.js';
import { getFilter, convertPropertiesString, getSort } from '../../utils.js';
const router = express.Router();
const listAllowedFilters = [
'_id',
'courier',
'courier._id',
'name',
'active',
'tracked',
'deliveryTime',
'cost',
'costWithTax',
'additionalCost',
'additionalCostWithTax',
'createdAt',
'updatedAt',
'_reference',
];
const listAllowedSorters = [
'name',
'courier',
'active',
'tracked',
'deliveryTime',
'cost',
'costWithTax',
'additionalCost',
'additionalCostWithTax',
'estimatedDeliveryTime',
'createdAt',
'_id',
'updatedAt',
];
const propertiesAllowedFilters = [
'_id',
'courier',
'courier._id',
'name',
'active',
'tracked',
'deliveryTime',
'cost',
'costWithTax',
'additionalCost',
'additionalCostWithTax',
];
import {
listCourierServicesRouteHandler,
getCourierServiceRouteHandler,
editCourierServiceRouteHandler,
newCourierServiceRouteHandler,
deleteCourierServiceRouteHandler,
listCourierServicesByPropertiesRouteHandler,
getCourierServiceStatsRouteHandler,
getCourierServiceHistoryRouteHandler,
searchCourierServicesRouteHandler,
getCourierServicePropertyValuesRouteHandler,
getCourierServiceNeighborsRouteHandler
} from '../../services/management/courierservice.js';
// list of courier services
router.get('/', isAuthenticated, checkPermissions('courierService', 'list'), async (req, res) => {
const { page, limit, property, search, sortProperty, sortOrder } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
listCourierServicesRouteHandler(req, res, page, limit, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder);
});
router.get('/properties', checkPermissions('courierService', 'list'), isAuthenticated, async (req, res) => {
let properties = convertPropertiesString(req.query.properties);
const filter = await getFilter(req.query, propertiesAllowedFilters, false);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = JSON.parse(req.query.masterFilter);
}
listCourierServicesByPropertiesRouteHandler(req, res, properties, filter, masterFilter);
});
router.get(
'/values',
checkPermissions('courierService', 'list'),
isAuthenticated,
async (req, res) => {
const { property } = req.query;
const filter = await getFilter(req.query, listAllowedFilters, true);
var masterFilter = {};
if (req.query.masterFilter) {
masterFilter = await getFilter(
JSON.parse(req.query.masterFilter),
listAllowedFilters,
true
);
}
getCourierServicePropertyValuesRouteHandler(req, res, property, filter, masterFilter);
}
);
router.get('/search', checkPermissions('courierService', 'list'), isAuthenticated, async (req, res) => {
const { search } = req.query;
searchCourierServicesRouteHandler(req, res, search);
});
router.post('/', isAuthenticated, checkPermissions('courierService', 'new'), async (req, res) => {
newCourierServiceRouteHandler(req, res);
});
// get courier service stats
router.get('/stats', isAuthenticated, async (req, res) => {
getCourierServiceStatsRouteHandler(req, res);
});
// get courierservice history
router.get('/history', isAuthenticated, async (req, res) => {
getCourierServiceHistoryRouteHandler(req, res);
});
router.get('/neighbors', isAuthenticated, async (req, res) => {
const { property, search, sortProperty, sortOrder, id } = req.query;
const filter = await getFilter(req.query, listAllowedFilters);
getCourierServiceNeighborsRouteHandler(req, res, property, filter, search, getSort(sortProperty, listAllowedSorters), sortOrder, id);
});
router.get('/:id', isAuthenticated, async (req, res) => {
getCourierServiceRouteHandler(req, res);
});
router.put('/:id', isAuthenticated, checkPermissions('courierService', 'edit'), async (req, res) => {
editCourierServiceRouteHandler(req, res);
});
router.delete('/:id', isAuthenticated, async (req, res) => {
deleteCourierServiceRouteHandler(req, res);
});
export default router;