import { generateQueryString } from '@/utils/queryStringUtil';
import { apiSlice } from '.';
import URLS from './constants';

export interface Rules {
  [key: string]: boolean;
}

export interface RulesResponse {
  code: number;
  message: string;
  data: {
    companyId: {
      id: string;
    };
    rules: Rules;
    id: string;
    see_all_leads?: boolean;
    see_all_customers?: boolean;
    edit_property_details?: boolean;
  };
  success: boolean;
}

export interface UpdateRulesBody {
  rules: Rules;
}

export const rulesApi = apiSlice.injectEndpoints({
  endpoints: (builder) => ({
    getRules: builder.query<RulesResponse, { companyId: string; key?: string }>({
      query: (params) => ({
        url: `${URLS.RULES}?${generateQueryString(params as Record<string, unknown>)}`,
        method: 'GET',
      }),
      providesTags: ['Rules'],
    }),

    updateRules: builder.mutation<RulesResponse, { companyId: string; rules: Rules }>({
      query: ({ companyId, rules }) => ({
        url: `${URLS.RULES}/${companyId}`,
        method: 'PATCH',
        body: { rules },
      }),
      invalidatesTags: ['Rules'],
    }),
  }),
});

export const {
  useGetRulesQuery,
  useUpdateRulesMutation,
} = rulesApi;
