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

import { UserProfile } from './types';

export type CreateBusinessProfile = {
    emailConsent: boolean;
    email: string;
    requestId: string;
    costCenterId: string;
};

const createBusinessProfileSchema = z.object({
    userId: z.string().nonempty().uuid(),
    businessId: z.string().nonempty().uuid(),
    data: z.object({
        emailConsent: z.boolean(),
        email: z.string().email(),
        requestId: z.string().nonempty().uuid(),
        costCenterId: z.string().uuid().nullish(),
    }),
});

export const createBusinessProfile = async (
    client: Client,
    userId: string,
    businessId: string,
    data: CreateBusinessProfile
): Promise<UserProfile> => {
    const result = createBusinessProfileSchema.safeParse({
        userId,
        businessId,
        data,
    });
    if (!result.success) {
        throw new TypeError('Invalid argd', {
            cause: result.error.issues,
        });
    }

    return client
        .post(
            `/boapi/proxy/business/fleets/${client.clientOptions.fleetId}/business/${businessId}/user/${userId}`,
            result.data
        )
        .then(({ data: p }) => p);
};
