useRegisterApi.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. interface RegisterPayload {
  2. name: string
  3. cpf: string
  4. registration: string
  5. email: string
  6. phone: string
  7. position_id: number | null
  8. sector_id: number | null
  9. }
  10. export interface SelectOption {
  11. id: number
  12. name: string
  13. }
  14. interface ApiResponse<T> {
  15. payload: T
  16. }
  17. export const useRegisterApi = () => {
  18. const { apiUrl } = useRuntimeConfig().public
  19. const registerLandingUser = async (data: RegisterPayload): Promise<void> => {
  20. await $fetch(`${apiUrl}/api/landing-page-register-user`, {
  21. method: 'POST',
  22. body: data,
  23. })
  24. }
  25. const { data: positionsData } = useAsyncData('public-positions', () =>
  26. $fetch<ApiResponse<SelectOption[]>>(`${apiUrl}/api/public/positions`).catch(() => null),
  27. )
  28. const { data: sectorsData } = useAsyncData('public-sectors', () =>
  29. $fetch<ApiResponse<SelectOption[]>>(`${apiUrl}/api/public/sectors`).catch(() => null),
  30. )
  31. const positions = computed<SelectOption[]>(() => positionsData.value?.payload ?? [])
  32. const sectors = computed<SelectOption[]>(() => sectorsData.value?.payload ?? [])
  33. return { registerLandingUser, positions, sectors }
  34. }