39954-vm/backend/src/routes/buyer_portal.js
2026-05-11 15:02:43 +00:00

88 lines
1.9 KiB
JavaScript

const express = require('express');
const BuyerPortalService = require('../services/buyer_portal');
const wrapAsync = require('../helpers').wrapAsync;
const { checkPermissions } = require('../middlewares/check-permissions');
const router = express.Router();
const workspacePermissions = ['READ_BUYER_PORTAL'];
const createSavedListPermissions = [
'READ_BUYER_PORTAL',
'CREATE_SAVED_LISTS',
'CREATE_SAVED_LIST_ITEMS',
];
const createOrderPermissions = [
'READ_BUYER_PORTAL',
'CREATE_ORDERS',
'CREATE_ORDER_ITEMS',
];
const createSampleRequestPermissions = [
'READ_BUYER_PORTAL',
'CREATE_SAMPLE_REQUESTS',
];
router.get(
'/workspace',
...workspacePermissions.map((permission) => checkPermissions(permission)),
wrapAsync(async (req, res) => {
const workspace = await BuyerPortalService.workspace(
{
accountId: req.query.accountId,
locationId: req.query.locationId,
},
req.currentUser,
);
res.status(200).send(workspace);
}),
);
router.post(
'/saved-lists',
...createSavedListPermissions.map((permission) =>
checkPermissions(permission),
),
wrapAsync(async (req, res) => {
const savedList = await BuyerPortalService.createSavedList(
req.body,
req.currentUser,
);
res.status(200).send({ savedList });
}),
);
router.post(
'/orders',
...createOrderPermissions.map((permission) => checkPermissions(permission)),
wrapAsync(async (req, res) => {
const order = await BuyerPortalService.createOrder(
req.body,
req.currentUser,
);
res.status(200).send({ order });
}),
);
router.post(
'/sample-requests',
...createSampleRequestPermissions.map((permission) =>
checkPermissions(permission),
),
wrapAsync(async (req, res) => {
const sampleRequest = await BuyerPortalService.createSampleRequest(
req.body,
req.currentUser,
);
res.status(200).send({ sampleRequest });
}),
);
module.exports = router;