feat: add Node ACS admin workflows
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import {
|
||||
AccessAction,
|
||||
AccessRecord,
|
||||
AdminExcelImportResult,
|
||||
ApiResponse,
|
||||
AuditLog,
|
||||
BlacklistCreate,
|
||||
@@ -12,10 +13,15 @@ import {
|
||||
InsideVisitor,
|
||||
LoginRequest,
|
||||
PassDelivery,
|
||||
PurposeCode,
|
||||
Role,
|
||||
StatsSummary,
|
||||
PublicPass,
|
||||
Team,
|
||||
VisitRequestCreate,
|
||||
VisitRequestView,
|
||||
AdminUser,
|
||||
Watcher1Settings,
|
||||
Zone,
|
||||
} from './types';
|
||||
|
||||
@@ -85,6 +91,7 @@ export const changePassword = (req: ChangePasswordRequest) =>
|
||||
|
||||
// ===== Zones =====
|
||||
export const listZones = () => request<Zone[]>('/zones');
|
||||
export const listPurposeCodes = () => request<PurposeCode[]>('/purpose-codes');
|
||||
|
||||
// ===== Visit requests =====
|
||||
export const listVisitRequests = () =>
|
||||
@@ -154,6 +161,9 @@ export const deleteBlacklist = (id: number) =>
|
||||
request<string>(`/blacklist/${id}`, { method: 'DELETE' });
|
||||
|
||||
// ===== Reports =====
|
||||
export const listReportVisits = (from: string, to: string) =>
|
||||
request<VisitRequestView[]>(`/reports/visits?from=${from}&to=${to}`);
|
||||
|
||||
export const reportDownloadUrl = (from: string, to: string) =>
|
||||
`/api/reports/visits.xlsx?from=${from}&to=${to}`;
|
||||
|
||||
@@ -165,3 +175,45 @@ export const listDeliveries = (status?: DeliveryStatus) =>
|
||||
request<PassDelivery[]>(`/admin/deliveries${status ? `?status=${status}` : ''}`);
|
||||
export const retryDelivery = (id: number) =>
|
||||
request<PassDelivery>(`/admin/deliveries/${id}/retry`, { method: 'POST' });
|
||||
|
||||
// ===== Admin management =====
|
||||
export const listAdminPurposeCodes = () => request<PurposeCode[]>('/admin/purpose-codes');
|
||||
export const createAdminPurposeCode = (payload: Omit<PurposeCode, 'id'>) =>
|
||||
request<PurposeCode>('/admin/purpose-codes', jsonInit('POST', payload));
|
||||
export const updateAdminPurposeCode = (id: number, payload: Omit<PurposeCode, 'id'>) =>
|
||||
request<PurposeCode>(`/admin/purpose-codes/${id}`, jsonInit('PUT', payload));
|
||||
export const getWatcher1Settings = () => request<Watcher1Settings>('/settings/watcher1');
|
||||
export const updateWatcher1Settings = (payload: Watcher1Settings) =>
|
||||
request<Watcher1Settings>('/admin/settings/watcher1', jsonInit('PUT', payload));
|
||||
export const listAdminUsers = () => request<AdminUser[]>('/admin/users');
|
||||
export const updateAdminUserRoles = (id: number, roles: Role[]) =>
|
||||
request<AdminUser>(`/admin/users/${id}/roles`, jsonInit('PUT', { roles }));
|
||||
export const listAdminTeams = () => request<Team[]>('/admin/teams');
|
||||
export const createAdminTeam = (payload: Omit<Team, 'id'>) =>
|
||||
request<Team>('/admin/teams', jsonInit('POST', payload));
|
||||
export const updateAdminTeam = (id: number, payload: Omit<Team, 'id'>) =>
|
||||
request<Team>(`/admin/teams/${id}`, jsonInit('PUT', payload));
|
||||
export const updateAdminUserTeam = (id: number, teamId: number, applyDefaultRoles: boolean) =>
|
||||
request<AdminUser>(`/admin/users/${id}/team`, jsonInit('PUT', { teamId, applyDefaultRoles }));
|
||||
export const applyTeamDefaultRolesToUser = (id: number) =>
|
||||
request<AdminUser>(`/admin/users/${id}/apply-team-default-roles`, { method: 'POST' });
|
||||
export const applyTeamDefaultRolesToMembers = (teamId: number) =>
|
||||
request<string>(`/admin/teams/${teamId}/apply-default-roles`, { method: 'POST' });
|
||||
export const uploadAdminTeams = (file: File, dryRun: boolean) => {
|
||||
const form = new FormData();
|
||||
form.append('file', file);
|
||||
return request<AdminExcelImportResult>(`/admin/teams/upload?dryRun=${dryRun}`, {
|
||||
method: 'POST',
|
||||
body: form,
|
||||
});
|
||||
};
|
||||
export const uploadAdminUserRoles = (file: File, dryRun: boolean) => {
|
||||
const form = new FormData();
|
||||
form.append('file', file);
|
||||
return request<AdminExcelImportResult>(`/admin/users/roles/upload?dryRun=${dryRun}`, {
|
||||
method: 'POST',
|
||||
body: form,
|
||||
});
|
||||
};
|
||||
export const adminTeamTemplateUrl = () => '/api/admin/teams/template';
|
||||
export const adminUserRolesTemplateUrl = () => '/api/admin/users/roles/template';
|
||||
|
||||
Reference in New Issue
Block a user