@vulog/aima-user
Version:
44 lines (39 loc) • 1.34 kB
text/typescript
import { Client } from '@vulog/aima-client';
import { z } from 'zod';
const registrationStatus = ['APPROVED', 'INCOMPLETE', 'PENDING', 'REJECTED', 'SUSPENDED', 'UNREGISTERED'] as const;
const schema = z.object({
disableEmailNotification: z.boolean(),
operatorProfileId: z.string().uuid(),
actions: z
.array(
z.object({
reasonForChange: z.string(),
serviceId: z.string().uuid(),
status: z.enum(registrationStatus),
})
)
.min(1),
});
export type ServicesUpdate = z.infer<typeof schema>;
export const setServicesStatus = async (
client: Client,
profileId: string,
servicesUpdate: ServicesUpdate
): Promise<void> => {
const resultProfileId = z.string().uuid().safeParse(profileId);
if (!resultProfileId.success) {
throw new TypeError('Invalid profileId', {
cause: resultProfileId.error.issues,
});
}
const resultServices = schema.safeParse(servicesUpdate);
if (!resultServices.success) {
throw new TypeError('Invalid servicesUpdate', {
cause: resultServices.error.issues,
});
}
await client.post(
`boapi/proxy/user/fleets/${client.clientOptions.fleetId}/profiles/${profileId}/serviceRegistrations`,
servicesUpdate
);
};