useValidation.ts 1.5 KB

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