useValidation.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { useI18n } from 'vue-i18n'
  2. import type { Ref } from 'vue'
  3. import { useAp2iRequestService } from '~/composables/data/useAp2iRequestService'
  4. import UrlUtils from '~/services/utils/urlUtils'
  5. import type { AnyJson } from '~/types/data'
  6. /**
  7. * @category composables/form
  8. * Composable pour des utils de verifications
  9. */
  10. export function useValidation() {
  11. /**
  12. * Use méthode fournissant une fonction pour tester la validité d'un Siret ainsi que la gestion du message d'erreur
  13. */
  14. function useValidateSiret() {
  15. const siretError: Ref<boolean> = ref(false)
  16. const siretErrorMessage: Ref<string> = ref('')
  17. const validateSiret = async (siret: string) => {
  18. const { apiRequestService } = useAp2iRequestService()
  19. const response = await apiRequestService.get(
  20. UrlUtils.join('/api/siret-checking', siret),
  21. )
  22. if (typeof response === 'undefined') {
  23. siretError.value = false
  24. siretErrorMessage.value = ''
  25. }
  26. if (!Object.prototype.hasOwnProperty.call(response, 'isCorrect')) {
  27. throw new Error('Invalid response format')
  28. }
  29. // @ts-expect-error At this point, response has an 'isCorrect' property
  30. const isCorrect = response.isCorrect
  31. const i18n = useI18n()
  32. siretError.value = !isCorrect
  33. siretErrorMessage.value = isCorrect
  34. ? ''
  35. : (i18n.t('siret_error') as string)
  36. }
  37. return {
  38. siretError,
  39. siretErrorMessage,
  40. validateSiret,
  41. }
  42. }
  43. return {
  44. useValidateSiret,
  45. }
  46. }