import { baseApi } from "./baseApi";
import { API_ENDPOINTS } from "./constant";
import {
  IBuySubscriptionRequest,
  IBuySubscriptionResponse,
  IVerifyPaymentRequest,
  IVerifyPaymentResponse,
} from "./types/payment";

export const paymentApi = baseApi.injectEndpoints({
  endpoints: (builder) => ({
    buySubscription: builder.mutation<
      IBuySubscriptionResponse,
      IBuySubscriptionRequest
    >({
      query: (body) => ({
        url: API_ENDPOINTS.buySubscription,
        method: "POST",
        body,
      }),
    }),
    verifyPayment: builder.mutation<
      IVerifyPaymentResponse,
      IVerifyPaymentRequest
    >({
      query: (body) => ({
        url: API_ENDPOINTS.verifyPayment,
        method: "POST",
        body,
      }),
      invalidatesTags: ["User"],
    }),
    cancelSubscription: builder.mutation<{ message?: string }, number>({
      query: (id) => ({
        url: `${API_ENDPOINTS.cancelSubscription}/${id}`,
        method: "DELETE",
      }),
      invalidatesTags: ["User"],
    }),
  }),
});

export const {
  useBuySubscriptionMutation,
  useVerifyPaymentMutation,
  useCancelSubscriptionMutation,
} = paymentApi;
