AnswerBook.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import { User } from 'src/models/User.js'
  2. import { Test } from 'src/models/Test.js'
  3. import { Collection, Model } from 'js-abstract-model'
  4. import { AnswerSheetList } from 'src/models/AnswerSheet.js'
  5. class AnswerBook extends Model {
  6. constructor (data) {
  7. super(data, [
  8. { key: 'id' },
  9. { key: 'attachment' },
  10. { key: 'attending_end_time' },
  11. { key: 'attending_start_time' },
  12. { key: 'creation_time' },
  13. { key: 'creator' },
  14. {
  15. key: 'creator_info',
  16. relatedModel: User
  17. },
  18. { key: 'owner' },
  19. {
  20. key: 'owner_info',
  21. relatedModel: User
  22. },
  23. { key: 'test' },
  24. {
  25. key: 'test_info',
  26. relatedModel: Test
  27. },
  28. { key: 'duration' },
  29. { key: 'total_score' },
  30. { key: 'grader' },
  31. { key: 'grader_description' },
  32. { key: 'grader_info' },
  33. { key: 'is_active' },
  34. { key: 'is_deleted' },
  35. { key: 'last_modification_time' },
  36. { key: 'objection_request' },
  37. { key: 'objection_result' },
  38. { key: 'objection_time' },
  39. {
  40. key: 'answer_sheet_info',
  41. relatedModel: AnswerSheetList
  42. },
  43. { key: 'overall_answer_text' },
  44. { key: 'overall_answer_attachment' },
  45. { key: 'registration' },
  46. { key: 'registration_info' },
  47. { key: 'server_time' },
  48. { key: 'attending_start_time' },
  49. { key: 'status' },
  50. { key: 'remainingTime' },
  51. {
  52. key: 'is_enabled_attending',
  53. default: false
  54. },
  55. {
  56. key: 'is_enabled_continuing',
  57. default: false
  58. },
  59. {
  60. key: 'is_enabled_objecting',
  61. default: false
  62. },
  63. {
  64. key: 'is_enabled_viewing',
  65. default: false
  66. }
  67. ], {
  68. status: {
  69. infoKey: 'status_info',
  70. enumListKey: 'statusEnums',
  71. enums: [
  72. {
  73. label: 'جاری',
  74. value: 'ONGOING'
  75. },
  76. {
  77. label: 'حذف شده',
  78. value: 'DELETED'
  79. },
  80. {
  81. label: 'ایجاد شده',
  82. value: 'CREATED'
  83. },
  84. {
  85. label: 'در انتظار اتمام آزمون',
  86. value: 'FETCHED'
  87. },
  88. {
  89. label: 'در انتظار تصحیح',
  90. value: 'SUBMITTED'
  91. },
  92. {
  93. label: 'در حال تصحیح',
  94. value: 'GRADING'
  95. },
  96. {
  97. label: 'نیاز به رفع مشکل',
  98. value: 'UNGRADABLE'
  99. },
  100. {
  101. label: 'تصحیح شده',
  102. value: 'GRADED'
  103. },
  104. {
  105. label: 'اعتراض شده',
  106. value: 'OBJECTED'
  107. },
  108. {
  109. label: 'نهایی شده',
  110. value: 'FINALIZED'
  111. }
  112. ]
  113. }
  114. })
  115. // ذخیره مقدار اولیه‌ی status
  116. this._originalStatus = this.status
  117. }
  118. get status() {
  119. if (this._originalStatus === 'FETCHED' && this.test_info.status !== 'HOLDING') {
  120. return 'SUBMITTED'
  121. }
  122. return this._originalStatus
  123. }
  124. set status(value) {
  125. this._originalStatus = value
  126. }
  127. }
  128. class AnswerBookList extends Collection {
  129. model () {
  130. return AnswerBook
  131. }
  132. }
  133. export { AnswerBook, AnswerBookList }