import { Client } from '@vulog/aima-client';
import { z } from 'zod';

import { UserServiceRegistrationOverview } from './types';

const schema = z.array(z.string().uuid()).min(1);

/**
 * Get an overview of the service registration statuses for a list of userIds.
 *
 * Swagger: `GET /fleets/{fleetId}/serviceRegistrationOverview` (admin-user,
 * operationId `getServicesRegistrationOverview`).
 */
export const getServiceRegistrationOverview = async (
    client: Client,
    userIds: string[]
): Promise<UserServiceRegistrationOverview[]> => {
    const result = schema.safeParse(userIds);
    if (!result.success) {
        throw new TypeError('Invalid args', { cause: result.error.issues });
    }

    const searchParams = new URLSearchParams();
    for (const id of result.data) {
        searchParams.append('userId', id);
    }

    return client
        .get<
            UserServiceRegistrationOverview[]
        >(`boapi/proxy/user/fleets/${client.clientOptions.fleetId}/serviceRegistrationOverview?${searchParams.toString()}`)
        .then(({ data }) => data);
};
