useRegisterApi.ts 1.1 KB

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