import api from '..';
const COURSES_API = '/course';
export const coursesApi = api.injectEndpoints({
endpoints: (build) => ({
getTags: build.query<ResponseI<string[]>, void>({
query: () => ({
url: `${COURSES_API}/tags`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getMarketCourses: build.query<ResponseI<CEMarketCourseI[]>, void>({
query: () => ({
url: `${COURSES_API}/market`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getCoursesBySchool: build.query<ResponseI<CEMarketCourseI[]>, number>({
query: (school_id) => ({
url: `${COURSES_API}/school/${school_id}`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getCoursesByTeacher: build.query<ResponseI<CEMarketCourseI[]>, number>({
query: (teacher_id) => ({
url: `${COURSES_API}/teacher/${teacher_id}`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getAllMarketCourses: build.query<ResponseI<CEMarketCourseI[]>, void>({
query: () => ({
url: `${COURSES_API}/market/all`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getAllSnai3iCourses: build.query<ResponseI<Snai3iCourseI[]>, void>({
query: () => ({
url: `${COURSES_API}/snai3i/all`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getActiveSnai3iCourses: build.query<ResponseI<Snai3iCourseI[]>, void>({
query: () => ({
url: `${COURSES_API}/snai3i`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getSnai3iCourseById: build.query<ResponseI<Snai3iCourseI>, number>({
query: (courseId) => ({
url: `${COURSES_API}/snai3i/${courseId}`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getMarketCourseById: build.query<ResponseI<CEMarketCourseI>, number>({
query: (courseId) => ({
url: `${COURSES_API}/market/${courseId}`,
method: 'GET',
}),
providesTags: ['courses'],
}),
getCourseByInstructor: build.query<ResponseI<CEMarketCourseI[]>, number>({
query: (inst_designer_id) => ({
url: `${COURSES_API}/instructor/${inst_designer_id}`,
method: 'GET',
}),
providesTags: ['courses'],
}),
createSnai3iCourse: build.mutation<ResponseI<Snai3iCourseI>, Snai3iCourseI>(
{
query: (body) => ({
url: `${COURSES_API}/create/snai3i`,
method: 'POST',
body: body,
}),
invalidatesTags: ['courses'],
}
),
createMarketCourse: build.mutation<
ResponseI<CEMarketCourseI>,
CEMarketCourseI
>({
query: (body) => ({
url: `${COURSES_API}/create/market`,
method: 'POST',
body: body,
}),
invalidatesTags: ['courses'],
}),
updateSnai3iCourse: build.mutation<ResponseI<null>, Snai3iCourseI>({
query: (body) => ({
url: `${COURSES_API}/update/snai3i/${body.course_id}`,
method: 'PUT',
body: body,
}),
invalidatesTags: ['courses'],
}),
updateMarketCourse: build.mutation<ResponseI<null>, CEMarketCourseI>({
query: (body) => ({
url: `${COURSES_API}/update/market/${body.course_id}`,
method: 'PUT',
body: body,
}),
invalidatesTags: ['courses'],
}),
updateCourseStatus: build.mutation<
ResponseI<null>,
{
course_id: number;
status: string;
}
>({
query: ({ course_id, status }) => ({
url: `${COURSES_API}/update/status/${course_id}`,
method: 'PUT',
body: { status },
}),
invalidatesTags: ['courses'],
}),
deleteCourse: build.mutation<
ResponseI<null>,
{
course_id: number;
}
>({
query: ({ course_id }) => ({
url: `${COURSES_API}/delete/${course_id}`,
method: 'DELETE',
}),
invalidatesTags: ['courses'],
}),
}),
});
// update/status/:meeting_id
export const {
useGetMarketCoursesQuery,
useCreateSnai3iCourseMutation,
useGetSnai3iCourseByIdQuery,
useUpdateSnai3iCourseMutation,
useCreateMarketCourseMutation,
useGetMarketCourseByIdQuery,
useUpdateMarketCourseMutation,
useGetTagsQuery,
useGetAllMarketCoursesQuery,
useUpdateCourseStatusMutation,
useDeleteCourseMutation,
useGetCoursesBySchoolQuery,
useGetCoursesByTeacherQuery,
useGetActiveSnai3iCoursesQuery,
useGetAllSnai3iCoursesQuery,
useGetCourseByInstructorQuery,
} = coursesApi;