Classroom.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. import { appApi } from 'src/boot/axios.js'
  2. import { Invoice } from 'src/models/Invoice.js'
  3. import APIRepository from '../classes/APIRepository.js'
  4. import { Classroom, ClassroomList } from 'src/models/Classroom.js'
  5. export default class ClassroomAPI extends APIRepository {
  6. constructor() {
  7. super('classrooms', appApi, '/lma/classrooms', Classroom)
  8. this.APIAdresses = {
  9. base: '/lma/classrooms',
  10. byId: (id) => '/lma/classrooms/' + id,
  11. enroll: (id) => '/lma/classrooms/' + id + '/enroll',
  12. drop: (id) => '/lma/classrooms/' + id + '/drop',
  13. members: (id) => '/lma/classrooms/' + id + '/members',
  14. enrollByAdmin: (classroomId, userId) => '/lma/classrooms/' + classroomId + '/enrolll?user_id=' + userId,
  15. dropByAdmin: (classroomId, userId) => '/lma/classrooms/' + classroomId + '/drop?user_id=' + userId,
  16. createInvoice: (id) => '/lma/classrooms/' + id + '/create_invoice',
  17. createInvoiceByAdmin: (classroomId, userId) => '/lma/classrooms/' + classroomId + '/create_invoice?user_id=' + userId
  18. }
  19. this.CacheList = {
  20. base: this.name + this.APIAdresses.base,
  21. byId: (id) => this.name + this.APIAdresses.byId(id)
  22. }
  23. }
  24. index (data) {
  25. return this.sendRequest({
  26. apiMethod: 'get',
  27. api: this.api,
  28. request: this.APIAdresses.base,
  29. data: this.getNormalizedSendData({
  30. per_page: 10, // Number
  31. page: 1 // Number
  32. }, data),
  33. resolveCallback: (response) => {
  34. const paginate = response.data
  35. const results = response.data.results
  36. delete paginate.results
  37. return {
  38. list: new ClassroomList(results),
  39. paginate
  40. // {
  41. // "count": 1,
  42. // "num_pages": 1,
  43. // "per_page": 10,
  44. // "current": 1,
  45. // "next": null,
  46. // "previous": null,
  47. // }
  48. }
  49. },
  50. rejectCallback: (error) => {
  51. return error
  52. }
  53. })
  54. }
  55. get (id) {
  56. return this.sendRequest({
  57. apiMethod: 'get',
  58. api: this.api,
  59. request: this.APIAdresses.byId(id),
  60. resolveCallback: (response) => {
  61. return new Classroom(response.data)
  62. },
  63. rejectCallback: (error) => {
  64. return error
  65. }
  66. })
  67. }
  68. enrollByUser (id) {
  69. return this.sendRequest({
  70. apiMethod: 'put',
  71. api: this.api,
  72. request: this.APIAdresses.enroll(id),
  73. resolveCallback: (response) => {
  74. return new Classroom(response.data)
  75. },
  76. rejectCallback: (error) => {
  77. return error
  78. }
  79. })
  80. }
  81. dropByUser (id) {
  82. return this.sendRequest({
  83. apiMethod: 'put',
  84. api: this.api,
  85. request: this.APIAdresses.drop(id),
  86. resolveCallback: (response) => {
  87. return new Classroom(response.data)
  88. },
  89. rejectCallback: (error) => {
  90. return error
  91. }
  92. })
  93. }
  94. dropByAdmin (classroomId, userId) {
  95. return this.sendRequest({
  96. apiMethod: 'put',
  97. api: this.api,
  98. request: this.APIAdresses.dropByAdmin(classroomId, userId),
  99. resolveCallback: (response) => {
  100. return new Classroom(response.data)
  101. },
  102. rejectCallback: (error) => {
  103. return error
  104. }
  105. })
  106. }
  107. createInvoice (id) {
  108. return this.sendRequest({
  109. apiMethod: 'put',
  110. api: this.api,
  111. request: this.APIAdresses.createInvoice(id),
  112. resolveCallback: (response) => {
  113. return new Invoice(response.data)
  114. },
  115. rejectCallback: (error) => {
  116. return error
  117. }
  118. })
  119. }
  120. createInvoiceByAdmin (classroomId, userId) {
  121. return this.sendRequest({
  122. apiMethod: 'put',
  123. api: this.api,
  124. request: this.APIAdresses.createInvoiceByAdmin(classroomId, userId),
  125. resolveCallback: (response) => {
  126. return new Invoice(response.data)
  127. },
  128. rejectCallback: (error) => {
  129. return error
  130. }
  131. })
  132. }
  133. }