import { api } from '@/services/api';



export interface QuestionsDataResponse {

    id?: string
    question: string
    TheoryTrainId: string
    score: string
    img: string,
    status: boolean,
    Choices?: any[]
}
export interface QuestionsDataResponseByID {
    success: boolean,
    message: string
    info: QuestionsDataResponse
}


export interface QuestionsGetDataResponse {

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

export const Questions = api.injectEndpoints({
    endpoints: (build) => ({
        QuestionsGetData: build.query<QuestionsGetDataResponse, { search?: string, page: number, paginate: number }>({
            query: (params) => ({
                url: `/questions/showall`,
                method: 'GET',
                params
            }),
            providesTags: ['QuestionsGetData'],
        }),
        QuestionsGetDataById: build.query<QuestionsDataResponseByID, { id: string }>({
            query: (params) => ({
                url: `/questions`,
                params
            }),
            providesTags: ['QuestionsGetDataById'],
            
        }),
        QuestionsCreate: build.mutation<QuestionsDataResponse, { id: string, body: FormData }>({
            query: ({ body, id }) => ({
                url: '/questions',
                method: 'POST',
                body,
                params: { id }
            }),
            invalidatesTags: ['QuestionsGetData', 'QuestionsCreate', "QuestionsGetDataById"],
        }),
        QuestionsUpdate: build.mutation<QuestionsDataResponse, { id: string, body: FormData }>({
            query: ({ body, id }) => ({
                url: '/questions',
                body,
                method: 'PUT',
                params: { id }
            }),
            invalidatesTags: ['QuestionsGetData', "QuestionsGetDataById", 'QuestionsCreate', 'QuestionsUpdate'],
        }),

        QuestionsRemove: build.mutation<void, { id: string }>({
            query: (params) => ({
                url: `/questions`,
                method: 'DELETE',
                params
            }),
            invalidatesTags: ['QuestionsGetData', "QuestionsGetDataById", 'QuestionsRemove'],
        }),
    }),
});

export const {
    useQuestionsGetDataQuery,
    useLazyQuestionsGetDataQuery,
    useQuestionsCreateMutation,
    useQuestionsGetDataByIdQuery,
    useLazyQuestionsGetDataByIdQuery,
    useQuestionsUpdateMutation,
    useQuestionsRemoveMutation,

} = Questions;