Ticket.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import { User } from 'src/models/User.js'
  2. import { Collection, Model } from 'js-abstract-model'
  3. import { TicketReplyList } from 'src/models/TicketReply.js'
  4. import { TicketCategory } from 'src/models/TicketCategory.js'
  5. class Ticket extends Model {
  6. constructor (data) {
  7. super(data, [
  8. { key: 'id' },
  9. { key: 'title' },
  10. { key: 'body' }, //
  11. { key: 'priority' }, // HIGH - ...
  12. { key: 'status' }, // ADMIN_REPLIED - ...
  13. { key: 'source_type' }, // INVOICE - CLASSROOM
  14. { key: 'source_id' },
  15. { key: 'source' },
  16. { key: 'category' },
  17. { key: 'category' },
  18. {
  19. key: 'category_info',
  20. relatedModel: TicketCategory
  21. },
  22. {
  23. key: 'replies_info',
  24. relatedModel: TicketReplyList
  25. },
  26. { key: 'creator' },
  27. {
  28. key: 'creator_info',
  29. relatedModel: User
  30. },
  31. { key: 'owner' },
  32. {
  33. key: 'owner_info',
  34. relatedModel: User
  35. }
  36. ], {
  37. status: {
  38. infoKey: 'status_info',
  39. enumListKey: 'statusEnums',
  40. enums: [
  41. {
  42. label: 'در انتظار پاسخ',
  43. value: 'OPENED',
  44. color: '#2FA84A'
  45. },
  46. {
  47. label: 'ادمین پاسخ داده',
  48. value: 'ADMIN_REPLIED',
  49. color: '#0B6AB1'
  50. },
  51. {
  52. label: 'کاربر پاسخ داده',
  53. value: 'USER_REPLIED',
  54. color: '#0B6AB1'
  55. },
  56. // {
  57. // label: 'در حال انتظار',
  58. // value: 'PENDING',
  59. // color: '#2FA84A'
  60. // },
  61. // {
  62. // label: 'خوانده نشده',
  63. // value: 'UNREAD',
  64. // color: '#2FA84A'
  65. // },
  66. // {
  67. // label: 'خوانده شده',
  68. // value: 'READ',
  69. // color: '#2FA84A'
  70. // },
  71. {
  72. label: 'بسته شده',
  73. value: 'CLOSED',
  74. color: '#989898'
  75. }
  76. ]
  77. },
  78. priority: {
  79. infoKey: 'priority_info',
  80. enumListKey: 'priorityEnums',
  81. enums: [
  82. {
  83. label: 'بالا',
  84. value: 'HIGH'
  85. }
  86. ]
  87. }
  88. })
  89. }
  90. }
  91. class TicketList extends Collection {
  92. model () {
  93. return Ticket
  94. }
  95. }
  96. export { Ticket, TicketList }