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

import { AccountStatus, User } from './types';

export const getUserById = async (client: Client, id: string, addAccountStatus = false): Promise<User> => {
    const result = z.string().trim().min(1).uuid().safeParse(id);
    if (!result.success) {
        throw new TypeError('Invalid id', {
            cause: result.error.issues,
        });
    }

    const user = await client
        .get<User>(`/boapi/proxy/user/fleets/${client.clientOptions.fleetId}/users/${id}/status`)
        .then(({ data }) => data);
    if (addAccountStatus) {
        user.accountStatus = await client
            .get<{
                accountStatus: AccountStatus;
            }>(`/boapi/proxy/user/fleets/${client.clientOptions.fleetId}/users/${id}`)
            .then(({ data: { accountStatus } }) => accountStatus);
    }

    return user;
};
