import { ApplicationFormApi, Configuration, type ApplicationFormDto, type PagedApplicationFormDto, type FormElementDto } from '~~/.api-client' import { cleanDoubleSlashes, withoutTrailingSlash } from 'ufo' import { wrappedFetchWrap } from '~/utils/wrappedFetch' export function useApplicationFormApi() { const appBaseUrl = useRuntimeConfig().app.baseURL const { serverApiBasePath, clientProxyBasePath } = useRuntimeConfig().public const basePath = withoutTrailingSlash( cleanDoubleSlashes( import.meta.client ? appBaseUrl + clientProxyBasePath : useRequestURL().origin + clientProxyBasePath + serverApiBasePath ) ) const applicationFormApiClient = new ApplicationFormApi( new Configuration({ basePath, fetchApi: wrappedFetchWrap(useRequestFetch()) }) ) async function createApplicationForm(applicationFormDto: ApplicationFormDto): Promise { return applicationFormApiClient.createApplicationForm({ applicationFormDto }) } async function getAllApplicationForms(organizationId: string): Promise { return applicationFormApiClient.getAllApplicationForms({ organizationId }) } async function getApplicationFormById(id: string): Promise { return applicationFormApiClient.getApplicationFormById({ id }) } async function updateApplicationForm( id: string, applicationFormDto: ApplicationFormDto ): Promise { return applicationFormApiClient.updateApplicationForm({ id, applicationFormDto }) } async function deleteApplicationFormById(id: string): Promise { return applicationFormApiClient.deleteApplicationForm({ id }) } async function submitApplicationForm(id: string): Promise { return applicationFormApiClient.submitApplicationForm({ id }) } async function addFormElementToSubSection( applicationFormId: string, subsectionId: string, formElementDto: FormElementDto, position: number ): Promise { return applicationFormApiClient.addFormElementToSubSection({ applicationFormId, subsectionId, formElementDto, position }) } return { createApplicationForm, getAllApplicationForms, getApplicationFormById, updateApplicationForm, deleteApplicationFormById, submitApplicationForm, addFormElementToSubSection } }