Snai3i-MarketPlace / frontend / src / app / backend / endpoints / enrollments.ts
enrollments.ts
Raw
import api from '..';
const ENROLLMENT_API = '/enrollment';

export const enrollmentApi = api.injectEndpoints({
  endpoints: (build) => ({
    getAssignedTeachersByCourseAndSchool: build.query<
      ResponseI<
        {
          enrollment_id: number;
          teacher: TeacherI;
        }[]
      >,
      {
        courseId: number;
        schoolId: number;
      }
    >({
      query: ({ courseId, schoolId }) => ({
        url: `${ENROLLMENT_API}/teachers/${courseId}/${schoolId}`,
        method: 'GET',
      }),
      providesTags: ['enrollments', 'orders', 'users', 'teachers'],
    }),
    assignTeacher: build.mutation<
      ResponseI<null>,
      {
        courseId: number;
        schoolId: number;
        teacherId: number;
      }
    >({
      query: ({ courseId, schoolId, teacherId }) => ({
        url: `${ENROLLMENT_API}/assign`,
        method: 'POST',
        body: {
          course_id: courseId,
          school_id: schoolId,
          teacher_id: teacherId,
        },
      }),
      invalidatesTags: ['enrollments', 'orders', 'users', 'teachers'],
    }),
    deleteEnrollment: build.mutation<
      ResponseI<null>,
      {
        enrollmentId: number;
      }
    >({
      query: ({ enrollmentId }) => ({
        url: `${ENROLLMENT_API}/delete/${enrollmentId}`,
        method: 'DELETE',
      }),
      invalidatesTags: ['enrollments', 'orders', 'users', 'teachers'],
    }),
  }),
});
export const {
  useGetAssignedTeachersByCourseAndSchoolQuery,
  useAssignTeacherMutation,
  useDeleteEnrollmentMutation,
} = enrollmentApi;