import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import {
  fetchCapacityPlanning,
  syncSprintCapacityAllocations,
} from '@/features/projects/services/projectService';

export const capacityPlanningKey = (projectId: string, sprintId?: string) =>
  ['projects', projectId, 'capacity-planning', sprintId ?? 'default'];

export function useCapacityPlanning(projectId: string | undefined, sprintId?: string) {
  return useQuery({
    queryKey: capacityPlanningKey(projectId ?? '', sprintId),
    queryFn: () => fetchCapacityPlanning(projectId!, sprintId),
    enabled: Boolean(projectId && sprintId),
  });
}

export function useSyncCapacityAllocations(projectId: string) {
  const qc = useQueryClient();
  return useMutation({
    mutationFn: ({
      sprintId,
      allocations,
    }: {
      sprintId: string;
      allocations: { user_id: string; capacity_md: number }[];
    }) => syncSprintCapacityAllocations(projectId, sprintId, allocations),
    onSuccess: (_data, vars) => {
      qc.invalidateQueries({ queryKey: capacityPlanningKey(projectId, vars.sprintId) });
      qc.invalidateQueries({ queryKey: ['projects', projectId, 'sprints'] });
    },
  });
}
