import { api } from '@/services/api';
import { SubscriptionsDataResponse } from './subscriptions';



export interface UserSubscriptionsDataResponse {

    id: string,
    subDate: string
    subExpiryDate: string
    status: boolean,
    userId: string,
    SubId: string,
    Sub: SubscriptionsDataResponse
}
export interface UserSubscriptionsDataResponseByID {
    success: boolean,
    message: string
    info: UserSubscriptionsDataResponse
}


export interface UserSubscriptionsGetDataResponse {

    success: boolean,
    message: string
    details: {
        docs: UserSubscriptionsDataResponse[],
        pages: number
        total: number
    }
}

export interface UserSubscriptionsCreate {
    id?: string,
    subDate: string
    subExpiryDate: string
    status: boolean,
    userId: string,
    subId: string

}

export const UserSubscriptions = api.injectEndpoints({
    endpoints: (build) => ({
        UserSubscriptionsGetData: build.query<UserSubscriptionsGetDataResponse, { search?: string, page: number, paginate: number }>({
            query: (params) => ({
                url: `/usersubs/showall`,
                method: 'GET',
                params
            }),
            providesTags: ['UserSubscriptionsGetData'],
        }),
        UserSubscriptionsGetDataById: build.query<UserSubscriptionsDataResponseByID, { id: string }>({
            query: (params) => ({
                url: `/usersubs`,
                params
            }),
            providesTags: ['UserSubscriptionsGetDataById'],
        }),
        UserSubscriptionsCreate: build.mutation<UserSubscriptionsDataResponse, UserSubscriptionsCreate>({
            query: (body) => ({
                url: '/usersubs',
                method: 'POST',
                body,
            }),
            invalidatesTags: ['UserSubscriptionsGetData', 'UserSubscriptionsCreate', "UserSubscriptionsGetDataById"],
        }),
        UserSubscriptionsUpdate: build.mutation<UserSubscriptionsDataResponse, UserSubscriptionsCreate>({
            query: (body) => ({
                url: '/usersubs',
                body,
                method: 'PUT',

            }),
            invalidatesTags: ['UserSubscriptionsGetData', "UserSubscriptionsGetDataById", 'UserSubscriptionsCreate', 'UserSubscriptionsUpdate'],
        }),

        UserSubscriptionsRemove: build.mutation<void, { id: string }>({
            query: (params) => ({
                url: `/usersubs`,
                method: 'DELETE',
                params
            }),
            invalidatesTags: ['UserSubscriptionsGetData', "UserSubscriptionsGetDataById", 'UserSubscriptionsRemove'],
        }),
    }),
});

export const {
    useUserSubscriptionsGetDataQuery,
    useLazyUserSubscriptionsGetDataQuery,
    useUserSubscriptionsCreateMutation,
    useUserSubscriptionsGetDataByIdQuery,
    useLazyUserSubscriptionsGetDataByIdQuery,
    useUserSubscriptionsUpdateMutation,
    useUserSubscriptionsRemoveMutation,
} = UserSubscriptions;