import { z } from 'zod'
import type { NuxtAxiosInstance } from '@nuxtjs/axios'

export const deleteMember =
  (axios: NuxtAxiosInstance) => async (id: number) => {
    await axios.$delete(`/dashboard/api/v1/team/member/${id}`)
  }

export const updateMember =
  (axios: NuxtAxiosInstance) =>
  async (id: number, data: { role: string; name: string }) => {
    await axios.$put(`/dashboard/api/v1/team/member/${id}`, data)
  }

export const inviteMember =
  (axios: NuxtAxiosInstance) =>
  async (data: { email: string; role: string }) => {
    await axios.$post(`/dashboard/api/v1/team/member`, data)
  }

const TeamMemberSchema = z.object({
  id: z.number(),
  role: z.string(),
  name: z.string(),
  email: z.string(),
  status: z.string(),
  profilePicture: z.string().url().optional().nullish(),
  userId: z.number().optional().nullish(),
})

export type TeamMember = z.infer<typeof TeamMemberSchema>

export const listMembers = (axios: NuxtAxiosInstance) => () => {
  return axios
    .$get(`/dashboard/api/v1/team`)
    .then(result => z.array(TeamMemberSchema).parse(result))
}
