import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { adminUsersService } from "../services/adminUsers.service";
import { AdminUsersQuery } from "../types/adminUsers.types";
import { showToast } from "@/lib/toast";

export const adminUserKeys = {
  all: ["adminUsers"] as const,
  list: (query?: AdminUsersQuery) => ["adminUsers", query] as const,
};

export const useAdminUsers = (query?: AdminUsersQuery) => {
  return useQuery({
    queryKey: adminUserKeys.list(query),
    queryFn: () => adminUsersService.getUsers(query),
  });
};

export const useUpdateUserStatus = () => {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: ({ id, status }: { id: string; status: "ACTIVE" | "SUSPENDED" | "INACTIVE" }) =>
      adminUsersService.updateUserStatus(id, status),
    onSuccess: () => {
      queryClient.invalidateQueries({ queryKey: adminUserKeys.all });
      showToast.success("User status updated successfully");
    },
    onError: (error: any) => {
      showToast.error(error?.response?.data?.message || "Failed to update user status");
    },
  });
};
