import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import type { InvitationCreate } from '@siop/shared';
import { api, unwrap } from './client';

/** Hooks R6.4 — Pilotage (Statistiques, Personnes & équipes) : mêmes
 *  opérations que le web (gestion.ts/referentiel.ts), lecture + une action
 *  courante (inviter) sur mobile — pas la gestion complète des rôles/
 *  équipes/taux horaires, réservée au web (D4). */

export function useAnalyticsSummary(months: 3 | 6 | 12 = 12) {
  return useQuery({
    queryKey: ['analytics', months],
    queryFn: async () =>
      unwrap(await api.GET('/analytics/summary', { params: { query: { months: String(months) } } })),
  });
}

export function useUsers() {
  return useQuery({
    queryKey: ['users'],
    queryFn: async () => (await unwrap(await api.GET('/users'))).users,
  });
}

export function useRoles() {
  return useQuery({
    queryKey: ['roles'],
    queryFn: async () => (await unwrap(await api.GET('/roles'))).roles,
  });
}

export function useInviteUser() {
  const queryClient = useQueryClient();
  return useMutation({
    mutationFn: async (body: InvitationCreate) =>
      unwrap(await api.POST('/users/invitations', { body })),
    onSuccess: () => queryClient.invalidateQueries({ queryKey: ['users'] }),
  });
}
