feat(api): complete M5 swap and dispatch backend slice

This commit is contained in:
zouantchaw
2026-03-18 10:40:04 +01:00
parent 32f6cd55c8
commit 26a853184f
18 changed files with 2170 additions and 109 deletions

View File

@@ -34,6 +34,8 @@ import {
listCostCenters,
listCoreTeam,
listCoverageByDate,
listCoverageDispatchCandidates,
listCoverageDispatchTeams,
listCompletedShifts,
listEmergencyContacts,
listFaqCategories,
@@ -44,6 +46,7 @@ import {
listOpenShifts,
listTaxForms,
listTimeCardEntries,
listSwapRequests,
listOrderItemsByDateRange,
listPaymentsHistory,
listPendingAssignments,
@@ -99,6 +102,8 @@ const defaultQueryService = {
listCostCenters,
listCoreTeam,
listCoverageByDate,
listCoverageDispatchCandidates,
listCoverageDispatchTeams,
listCompletedShifts,
listEmergencyContacts,
listFaqCategories,
@@ -109,6 +114,7 @@ const defaultQueryService = {
listOpenShifts,
listTaxForms,
listTimeCardEntries,
listSwapRequests,
listOrderItemsByDateRange,
listPaymentsHistory,
listPendingAssignments,
@@ -266,6 +272,33 @@ export function createMobileQueryRouter(queryService = defaultQueryService) {
}
});
router.get('/client/coverage/swap-requests', requireAuth, requirePolicy('coverage.read', 'coverage'), async (req, res, next) => {
try {
const items = await queryService.listSwapRequests(req.actor.uid, req.query);
return res.status(200).json({ items, requestId: req.requestId });
} catch (error) {
return next(error);
}
});
router.get('/client/coverage/dispatch-teams', requireAuth, requirePolicy('coverage.read', 'coverage'), async (req, res, next) => {
try {
const items = await queryService.listCoverageDispatchTeams(req.actor.uid, req.query);
return res.status(200).json({ items, requestId: req.requestId });
} catch (error) {
return next(error);
}
});
router.get('/client/coverage/dispatch-candidates', requireAuth, requirePolicy('coverage.read', 'coverage'), async (req, res, next) => {
try {
const items = await queryService.listCoverageDispatchCandidates(req.actor.uid, req.query);
return res.status(200).json({ items, requestId: req.requestId });
} catch (error) {
return next(error);
}
});
router.get('/client/hubs', requireAuth, requirePolicy('hubs.read', 'hub'), async (req, res, next) => {
try {
const items = await queryService.listHubs(req.actor.uid);