AnswerBook.js 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. import { appApi } from 'src/boot/axios.js'
  2. import APIRepository from '../classes/APIRepository.js'
  3. import { AnswerBook, AnswerBookList } from 'src/models/AnswerBook.js'
  4. export default class AnswerBookAPI extends APIRepository {
  5. constructor() {
  6. super('answer_books', appApi)
  7. this.APIAdresses = {
  8. base: '/lma/answer_books',
  9. getOrCreate: '/lma/answer_books/get_or_create',
  10. exportReport: '/lma/answer_books/export_report',
  11. byId: (id) => '/lma/answer_books/' + id,
  12. submitGraderDescription: (id) => '/lma/answer_books/' + id + '/submit_grader_description',
  13. confirmAnswers: (id) => '/lma/answer_books/' + id + '/confirm_answers',
  14. confirmScores: (id) => '/lma/answer_books/' + id + '/confirm_scores',
  15. confirmUngradable: (id) => '/lma/answer_books/' + id + '/confirm_ungradable',
  16. setGraderToMe: (id) => '/lma/answer_books/' + id + '/set_grader_to_me',
  17. submitObjectionResult: (id) => '/lma/answer_books/' + id + '/submit_objection_result',
  18. submitObjectionRequest: (id) => '/lma/answer_books/' + id + '/submit_objection_request',
  19. getTestQuestions: (id) => '/lma/answer_books/' + id + '/get_test_questions',
  20. submitOverallAnswer: (id) => '/lma/answer_books/' + id + '/submit_overall_answer'
  21. }
  22. this.CacheList = {
  23. base: this.name + this.APIAdresses.base,
  24. byId: (id) => this.name + this.APIAdresses.byId(id),
  25. getTestQuestions: (id) => this.name + this.APIAdresses.getTestQuestions(id)
  26. }
  27. this.restUrl = (id) => this.APIAdresses.base + '/' + id
  28. /* Setting the callback functions for the CRUD operations. */
  29. this.setCrudCallbacks({
  30. get: (response) => { return new AnswerBook(response.data) },
  31. post: (response) => { return new AnswerBook(response.data) },
  32. put: (response) => { return new AnswerBook(response.data) },
  33. delete: (response) => { return response.data }
  34. })
  35. }
  36. index(data) {
  37. return this.sendRequest({
  38. apiMethod: 'get',
  39. api: this.api,
  40. request: this.APIAdresses.base,
  41. data: this.getNormalizedSendData({
  42. test__classroom: null, // Number
  43. owner: null, // Number
  44. per_page: 10, // Number
  45. page: 1 // Number
  46. }, data),
  47. resolveCallback: (response) => {
  48. const paginate = response.data
  49. const results = response.data.results
  50. delete paginate.results
  51. return {
  52. list: new AnswerBookList(results),
  53. paginate
  54. // {
  55. // "count": 1,
  56. // "num_pages": 1,
  57. // "per_page": 10,
  58. // "current": 1,
  59. // "next": null,
  60. // "previous": null,
  61. // }
  62. }
  63. },
  64. rejectCallback: (error) => {
  65. return error
  66. }
  67. })
  68. }
  69. get (id) {
  70. return this.sendRequest({
  71. apiMethod: 'get',
  72. api: this.api,
  73. request: this.APIAdresses.byId(id),
  74. resolveCallback: (response) => {
  75. return new AnswerBook(response.data)
  76. },
  77. rejectCallback: (error) => {
  78. return error
  79. }
  80. })
  81. }
  82. getOrCreate (userId, testId) {
  83. return this.sendRequest({
  84. apiMethod: 'post',
  85. api: this.api,
  86. request: this.APIAdresses.getOrCreate,
  87. data: {
  88. owner: userId,
  89. test: testId
  90. },
  91. resolveCallback: (response) => {
  92. return new AnswerBook(response.data)
  93. },
  94. rejectCallback: (error) => {
  95. return error
  96. }
  97. })
  98. }
  99. getTestQuestions (id) {
  100. return this.sendRequest({
  101. apiMethod: 'get',
  102. api: this.api,
  103. request: this.APIAdresses.getTestQuestions(id),
  104. resolveCallback: (response) => {
  105. return new AnswerBook(response.data)
  106. },
  107. rejectCallback: (error) => {
  108. return error
  109. }
  110. })
  111. }
  112. submitGraderDescription (id, graderDescription) {
  113. return this.sendRequest({
  114. apiMethod: 'put',
  115. api: this.api,
  116. request: this.APIAdresses.submitGraderDescription(id),
  117. data: {
  118. grader_description: graderDescription
  119. },
  120. resolveCallback: (response) => {
  121. return new AnswerBook(response.data)
  122. },
  123. rejectCallback: (error) => {
  124. return error
  125. }
  126. })
  127. }
  128. confirmAnswers (id) {
  129. return this.sendRequest({
  130. apiMethod: 'put',
  131. api: this.api,
  132. request: this.APIAdresses.confirmAnswers(id),
  133. resolveCallback: (response) => {
  134. return new AnswerBook(response.data)
  135. },
  136. rejectCallback: (error) => {
  137. return error
  138. }
  139. })
  140. }
  141. confirmScores (id) {
  142. return this.sendRequest({
  143. apiMethod: 'put',
  144. api: this.api,
  145. request: this.APIAdresses.confirmScores(id),
  146. resolveCallback: (response) => {
  147. return new AnswerBook(response.data)
  148. },
  149. rejectCallback: (error) => {
  150. return error
  151. }
  152. })
  153. }
  154. confirmUngradable (id) {
  155. return this.sendRequest({
  156. apiMethod: 'put',
  157. api: this.api,
  158. request: this.APIAdresses.confirmUngradable(id),
  159. resolveCallback: (response) => {
  160. return new AnswerBook(response.data)
  161. },
  162. rejectCallback: (error) => {
  163. return error
  164. }
  165. })
  166. }
  167. setGraderToMe (answerBookId) {
  168. return this.sendRequest({
  169. apiMethod: 'put',
  170. api: this.api,
  171. request: this.APIAdresses.setGraderToMe(answerBookId),
  172. resolveCallback: (response) => {
  173. return new AnswerBook(response.data)
  174. },
  175. rejectCallback: (error) => {
  176. return error
  177. }
  178. })
  179. }
  180. exportReport(data) {
  181. return this.sendRequest({
  182. apiMethod: 'get',
  183. api: this.api,
  184. request: this.APIAdresses.exportReport,
  185. data: this.getNormalizedSendData({
  186. registration__status: null, // String
  187. type: null, // String
  188. test: null, // Number
  189. test__classroom: null // Number
  190. }, data),
  191. responseType: 'blob',
  192. resolveCallback: (response) => {
  193. return response.data // xlsxData
  194. },
  195. rejectCallback: (error) => {
  196. return error
  197. }
  198. })
  199. }
  200. }