import { ref, Ref } from '@nuxtjs/composition-api' import VueI18n from 'vue-i18n' import { QUERY_TYPE } from '~/types/enums' import DataProvider from "~/services/data/dataProvider"; import {ApiResponse} from "~/types/interfaces"; /** * @category composables/form * Composable pour des utils de verifications */ export function useValidator($dataProvider: DataProvider, i18n: VueI18n) { /** * Use méthode fournissant une fonction pour tester la validité d'un Siret ainsi que la gestion du message d'erreur */ function useHandleSiret() { const siretError: Ref = ref(false) const siretErrorMessage: Ref = ref('') const checkSiret = async (siret: string) => { const response = await $dataProvider.invoke({ type: QUERY_TYPE.DEFAULT, url: '/api/siret-checking', id: siret }) if (typeof response !== 'undefined') { siretError.value = !response.isCorrect siretErrorMessage.value = response.isCorrect ? '' : i18n.t('siret_error') as string } else { siretError.value = false siretErrorMessage.value = '' } } return { siretError, siretErrorMessage, checkSiret } } function useHandleSubdomain() { const subdomainError: Ref = ref(false) const subdomainErrorMessage: Ref = ref('') const checkSubdomainUnity = async (subdomain: string) => { const response: ApiResponse = await $dataProvider.invoke({ type: QUERY_TYPE.DEFAULT, url: '/api/subdomains/?subdomain[]=' + subdomain }) if (typeof response !== 'undefined') { // @ts-ignore if (response.metadata.totalItems > 0) { subdomainError.value = true subdomainErrorMessage.value = i18n.t('this_subdomain_is_already_in_use') as string } } else { subdomainError.value = true subdomainErrorMessage.value = i18n.t('could_not_contact_server_please_try_again') as string } } return { checkSubdomainUnity, subdomainError, subdomainErrorMessage } } return { useHandleSiret, useHandleSubdomain } }