| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- import { appApi } from 'src/boot/axios.js'
- import { Invoice } from 'src/models/Invoice.js'
- import APIRepository from '../classes/APIRepository.js'
- import { Registration } from 'src/models/Registration.js'
- import { Classroom, ClassroomList } from 'src/models/Classroom.js'
- export default class ClassroomAPI extends APIRepository {
- constructor() {
- super('classrooms', appApi, '/lma/classrooms', Classroom)
- this.APIAdresses = {
- base: '/lma/classrooms',
- myAsGraderClassrooms: '/lma/classrooms/my_as_a_grader_classrooms',
- byId: (id) => '/lma/classrooms/' + id,
- toggleOngoingStatus: (id) => '/lma/classrooms/' + id + '/toggle_ongoing_status',
- enroll: (id) => '/lma/classrooms/' + id + '/enroll',
- bulkEnroll: (id) => '/lma/classrooms/' + id + '/bulk_enroll',
- graders: (id) => '/lma/classrooms/' + id + '/graders',
- drop: (id) => '/lma/classrooms/' + id + '/drop',
- register: (id) => '/lma/classrooms/' + id + '/register',
- bulkRegister: (id) => '/lma/classrooms/' + id + '/bulk_register',
- leaders: (id) => '/lma/classrooms/' + id + '/leaders',
- announceResult: (id) => '/lma/classrooms/' + id + '/announce_result',
- getClassroomAndCorrespondingRegistration: (classroomId, ownerId) => '/lma/classrooms/' + classroomId + '/get_classroom_and_corresponding_registration/' + ownerId,
- members: '/lma/registrations',
- activitySheet: '/lma/registrations/activity_sheet',
- exportActivitySheetReport: '/lma/registrations/export_report',
- enrollByAdmin: (classroomId, userId) => '/lma/classrooms/' + classroomId + '/enrolll?user_id=' + userId,
- dropByAdmin: (classroomId) => '/lma/classrooms/' + classroomId + '/drop',
- createInvoice: (id) => '/lma/classrooms/' + id + '/create_invoice'
- }
- this.CacheList = {
- base: this.name + this.APIAdresses.base,
- index: (filters) => this.name + this.APIAdresses.base + encodeURI(filters),
- byId: (id) => this.name + this.APIAdresses.byId(id)
- }
- }
- index (data) {
- const normalizedSendData = this.getNormalizedSendData({
- unit__category__type: null, // String
- per_page: 10, // Number
- page: 1 // Number
- }, data)
- return this.sendRequest({
- apiMethod: 'get',
- api: this.api,
- request: this.APIAdresses.base,
- cacheKey: this.CacheList.index(normalizedSendData),
- data: normalizedSendData,
- resolveCallback: (response) => {
- const paginate = response.data
- const results = response.data.results
- delete paginate.results
- return {
- list: new ClassroomList(results),
- paginate
- // {
- // "count": 1,
- // "num_pages": 1,
- // "per_page": 10,
- // "current": 1,
- // "next": null,
- // "previous": null,
- // }
- }
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- exportActivitySheetReport(data) {
- return this.sendRequest({
- apiMethod: 'get',
- api: this.api,
- request: this.APIAdresses.exportActivitySheetReport,
- data: this.getNormalizedSendData({
- classroom: null, // Number
- type: null, // String
- status: null // String
- }, data),
- responseType: 'blob',
- resolveCallback: (response) => {
- return response.data // xlsxData
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- get (id) {
- return this.sendRequest({
- apiMethod: 'get',
- api: this.api,
- request: this.APIAdresses.byId(id),
- resolveCallback: (response) => {
- return new Classroom(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- getClassroomAndCorrespondingRegistration (classroomId, ownerId) {
- return this.sendRequest({
- apiMethod: 'get',
- api: this.api,
- request: this.APIAdresses.getClassroomAndCorrespondingRegistration(classroomId, ownerId),
- resolveCallback: (response) => {
- return new Classroom(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- register (id, data) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- data: this.getNormalizedSendData({
- discount_id: null // Number
- }, data),
- request: this.APIAdresses.register(id),
- resolveCallback: (response) => {
- const data = {
- type: null,
- model: response.data
- }
- if (response.data.status === 'PAYING') {
- data.type = 'Invoice'
- data.model = new Invoice(response.data)
- } else if (response.data.status === 'REGISTERED') {
- data.type = 'Registration'
- data.model = new Registration(response.data)
- }
- return data
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- toggleOngoingStatus (id) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.toggleOngoingStatus(id),
- resolveCallback: (response) => {
- return new Classroom(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- enrollByUser (id) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.enroll(id),
- resolveCallback: (response) => {
- return new Classroom(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- dropByUser (id) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.drop(id),
- resolveCallback: (response) => {
- return new Classroom(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- appendLeaders (data) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.leaders(data.classroomId),
- data: {
- leaders: data.leaders // array of numbers
- },
- resolveCallback: (response) => {
- return new Classroom(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- dropByAdmin (classroomId, userId) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.dropByAdmin(classroomId),
- data: {
- owner: userId
- },
- resolveCallback: (response) => {
- return new Classroom(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- createInvoice (id) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.createInvoice(id),
- resolveCallback: (response) => {
- return new Invoice(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- appendGraders (data) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.graders(data.classroomId),
- data: {
- classroomId: data.classroomId,
- graders: data.graders
- },
- resolveCallback: (response) => {
- return new ClassroomList(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- registerNewMembers (data) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.bulkRegister(data.classroomId),
- data: {
- classroomId: data.classroomId,
- owners: data.owners
- },
- resolveCallback: (response) => {
- return new ClassroomList(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- enrollNewMembers (data) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.bulkEnroll(data.classroomId),
- data: {
- classroomId: data.classroomId,
- owners: data.owners
- },
- resolveCallback: (response) => {
- return new ClassroomList(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- createInvoiceByAdmin (classroomId, userId) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.createInvoice(classroomId),
- data: { owner: userId },
- resolveCallback: (response) => {
- return new Invoice(response.data)
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- notifyAnnounceResult (classroomId) {
- return this.sendRequest({
- apiMethod: 'put',
- api: this.api,
- request: this.APIAdresses.announceResult(classroomId),
- resolveCallback: (response) => {
- return response.data
- },
- rejectCallback: (error) => {
- return error
- }
- })
- }
- }
|