import { apiSlice } from "./baseApi";
import { Registration, PaginatedResponse, PaginationParams } from "@/types/api";

const registrationsApi = apiSlice.injectEndpoints({
  overrideExisting: true,
  endpoints: (builder) => ({
    getRegistrations: builder.query<PaginatedResponse<Registration>, PaginationParams>({
      query: (params) => {
        const { page, limit, ...filters } = params;
        const searchParams = new URLSearchParams({
          page: (page || 1).toString(),
          limit: (limit || 10).toString(),
        });

        Object.entries(filters).forEach(([key, value]) => {
          if (value !== undefined && value !== null && value !== "") {
            searchParams.append(key, value.toString());
          }
        });

        return {
          url: "/api/registrations",
          params: searchParams,
          method: "GET",
        };
      },
      providesTags: ["Registration"],
    }),
  }),
});

export const { useGetRegistrationsQuery, useLazyGetRegistrationsQuery } = registrationsApi;
