import { api } from '@/services/api';
import { PracVideoDataResponse } from './PracVideo';



export interface SchoolsDataResponse {

    id?: string,
    name: string,
    address: string,
    phone: string,
    email: string,
    notes: string,
    status: boolean
}
export interface SchoolsDataResponseByID {
    success: boolean,
    message: string
    info: SchoolsDataResponse
}


export interface SchoolsGetDataResponse {

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

export interface SchoolsCreate {
    id?: string,
    name: string,
    address: string,
    phone: string,
    email: string,
    notes: string,
    status: boolean
}

export const Schools = api.injectEndpoints({
    endpoints: (build) => ({
        SchoolsGetData: build.query<SchoolsGetDataResponse, { search?: string, page: number, paginate: number }>({
            query: (params) => ({
                url: `/school/showall`,
                method: 'GET',
                params
            }),
            providesTags: ['SchoolsGetData'],
        }),
        SchoolsGetDataById: build.query<SchoolsDataResponseByID, { id: string }>({
            query: (params) => ({
                url: `/school`,
                params
            }),
            providesTags: ['SchoolsGetDataById'],
        }),
        SchoolsCreate: build.mutation<SchoolsDataResponse, SchoolsCreate>({
            query: (body) => ({
                url: '/school',
                method: 'POST',
                body,
            }),
            invalidatesTags: ['SchoolsGetData', 'SchoolsCreate', "SchoolsGetDataById"],
        }),
        SchoolsUpdate: build.mutation<SchoolsDataResponse, SchoolsCreate>({
            query: (body) => ({
                url: '/school',
                body,
                method: 'PUT',

            }),
            invalidatesTags: ['SchoolsGetData', "SchoolsGetDataById", 'SchoolsCreate', 'SchoolsUpdate'],
        }),

        SchoolsRemove: build.mutation<void, { id: string }>({
            query: (params) => ({
                url: `/school`,
                method: 'DELETE',
                params
            }),
            invalidatesTags: ['SchoolsGetData', "SchoolsGetDataById", 'SchoolsRemove'],
        }),
    }),
});

export const {
    useSchoolsGetDataQuery,
    useLazySchoolsGetDataQuery,
    useSchoolsCreateMutation,
    useSchoolsGetDataByIdQuery,
    useLazySchoolsGetDataByIdQuery,
    useSchoolsUpdateMutation,
    useSchoolsRemoveMutation,
} = Schools;