useValidation.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import {useI18n} from 'vue-i18n'
  2. import {useAp2iRequestService} from "~/composables/data/useAp2iRequestService";
  3. import Url from "~/services/utils/url";
  4. import {Ref} from "@vue/reactivity";
  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: any = await apiRequestService.get(Url.join('/api/siret-checking', siret))
  19. if (typeof response === 'undefined') {
  20. siretError.value = false
  21. siretErrorMessage.value = ''
  22. }
  23. const i18n = useI18n()
  24. siretError.value = !response.isCorrect
  25. siretErrorMessage.value = response.isCorrect ? '' : i18n.t('siret_error') as string
  26. }
  27. return {
  28. siretError,
  29. siretErrorMessage,
  30. validateSiret
  31. }
  32. }
  33. function useValidateSubdomain() {
  34. const isSubdomainAvailable = async (subdomain: string | null): Promise<boolean> => {
  35. if (subdomain === null) {
  36. return true
  37. }
  38. const { apiRequestService } = useAp2iRequestService()
  39. const response: any = await apiRequestService.get('/api/subdomains', {'subdomain': subdomain})
  40. return typeof response !== 'undefined' && response.metadata.totalItems === 0
  41. }
  42. return {
  43. isSubdomainAvailable
  44. }
  45. }
  46. return {
  47. useValidateSiret,
  48. useValidateSubdomain
  49. }
  50. }