feat(api): add M5 coverage controls and frontend spec

This commit is contained in:
zouantchaw
2026-03-18 08:18:50 +01:00
parent 008dd7efb1
commit 32f6cd55c8
14 changed files with 894 additions and 8 deletions

View File

@@ -28,6 +28,7 @@ import {
listAssignedShifts,
listBusinessAccounts,
listBusinessTeamMembers,
listBlockedStaff,
listCancelledShifts,
listCertificates,
listCostCenters,
@@ -53,6 +54,7 @@ import {
listStaffAvailability,
listStaffBankAccounts,
listStaffBenefits,
listStaffBenefitHistory,
listTodayShifts,
listVendorRoles,
listVendors,
@@ -91,6 +93,7 @@ const defaultQueryService = {
listAssignedShifts,
listBusinessAccounts,
listBusinessTeamMembers,
listBlockedStaff,
listCancelledShifts,
listCertificates,
listCostCenters,
@@ -116,6 +119,7 @@ const defaultQueryService = {
listStaffAvailability,
listStaffBankAccounts,
listStaffBenefits,
listStaffBenefitHistory,
listTodayShifts,
listVendorRoles,
listVendors,
@@ -253,6 +257,15 @@ export function createMobileQueryRouter(queryService = defaultQueryService) {
}
});
router.get('/client/coverage/blocked-staff', requireAuth, requirePolicy('coverage.read', 'coverage'), async (req, res, next) => {
try {
const items = await queryService.listBlockedStaff(req.actor.uid);
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);
@@ -622,6 +635,15 @@ export function createMobileQueryRouter(queryService = defaultQueryService) {
}
});
router.get('/staff/profile/benefits/history', requireAuth, requirePolicy('staff.profile.read', 'staff'), async (req, res, next) => {
try {
const items = await queryService.listStaffBenefitHistory(req.actor.uid, req.query);
return res.status(200).json({ items, requestId: req.requestId });
} catch (error) {
return next(error);
}
});
router.get('/staff/profile/time-card', requireAuth, requirePolicy('staff.profile.read', 'staff'), async (req, res, next) => {
try {
const items = await queryService.listTimeCardEntries(req.actor.uid, req.query);