import { apiSlice } from "./baseApi";
import { MarkNotificationReadResponse, SuperAdminNotificationsResponse } from "@/types/api";

const notificationsApi = apiSlice.injectEndpoints({
  endpoints: (builder) => ({
    
    getSuperAdminNotifications: builder.query<
      SuperAdminNotificationsResponse,
      {
        page?: number
        limit?: number
        fromDate?: string
        toDate?: string
        mandalId?: number
        isRead?: "all" | "true" | "false"
      } | void
    >({
      query: (params) => {
        const queryParams = new URLSearchParams();
        if (params?.page) queryParams.append("page", String(params.page));
        if (params?.limit) queryParams.append("limit", String(params.limit));
        if (params?.fromDate) queryParams.append("fromDate", params.fromDate);
        if (params?.toDate) queryParams.append("toDate", params.toDate);
        if (params?.mandalId) queryParams.append("mandalId", String(params.mandalId));
        if (params?.isRead) queryParams.append("isRead", params.isRead);

        return {
          url: "/api/notifications",
          method: "GET",
          params: queryParams,
        };
      },
      providesTags: ["Notification"],
    }),

    markNotificationAsRead: builder.mutation<MarkNotificationReadResponse, number>({
      query: (notificationId) => ({
        url: `/api/notifications/${notificationId}/read`,
        method: "PATCH",
      }),
      invalidatesTags: ["Notification"],
    }),
  }),
});

export const {
  useGetSuperAdminNotificationsQuery,
  useMarkNotificationAsReadMutation,
} = notificationsApi;
