sanksi.model.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. const mongoose = require('mongoose')
  2. const { Schema, Types } = mongoose
  3. const dokumen = require('./dokumen.model')
  4. const laporan = require('./laporan.model')
  5. const user = require('./user.model')
  6. const pelanggaran = require('./pelanggaran.model')
  7. module.exports = mongoose.model(
  8. 'Sanksi',
  9. new Schema(
  10. {
  11. no_sanksi: String,
  12. laporan: { type: Types.ObjectId, unique: true, ref: laporan },
  13. user: { type: Types.ObjectId, unique: true, ref: user },
  14. pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
  15. keterangan: String,
  16. aktif: { type: Boolean, default: true },
  17. dokumen: [
  18. {
  19. type: Types.ObjectId,
  20. ref: dokumen,
  21. },
  22. ],
  23. batas_waktu: {
  24. keberatan: Date,
  25. jawaban_keberatan: Date,
  26. banding: Date,
  27. jawaban_banding: Date,
  28. },
  29. jawaban: {
  30. keberatan: new Schema(
  31. {
  32. status: String,
  33. keterangan: String,
  34. dokumen: [
  35. {
  36. type: Types.ObjectId,
  37. ref: dokumen,
  38. },
  39. ],
  40. },
  41. { timestamps: true }
  42. ),
  43. banding: new Schema(
  44. {
  45. status: String,
  46. dokumen: [
  47. {
  48. type: Types.ObjectId,
  49. ref: dokumen,
  50. },
  51. ],
  52. },
  53. { timestamps: true }
  54. ),
  55. cabut_sanksi: new Schema(
  56. {
  57. status: String,
  58. keterangan: String,
  59. dokumen: [
  60. {
  61. type: Types.ObjectId,
  62. ref: dokumen,
  63. },
  64. ],
  65. },
  66. { timestamps: true }
  67. ),
  68. },
  69. pengajuan: {
  70. keberatan: new Schema(
  71. {
  72. dokumen: [
  73. {
  74. type: Types.ObjectId,
  75. ref: dokumen,
  76. },
  77. ],
  78. },
  79. { timestamps: true }
  80. ),
  81. banding: new Schema(
  82. {
  83. dokumen: [
  84. {
  85. type: Types.ObjectId,
  86. ref: dokumen,
  87. },
  88. ],
  89. },
  90. { timestamps: true }
  91. ),
  92. cabut_sanksi: new Schema(
  93. {
  94. dokumen: [
  95. {
  96. type: Types.ObjectId,
  97. ref: dokumen,
  98. },
  99. ],
  100. },
  101. { timestamps: true }
  102. ),
  103. },
  104. perbaikan: [
  105. new Schema(
  106. {
  107. keterangan: String,
  108. dokumen: [
  109. {
  110. type: Types.ObjectId,
  111. ref: dokumen,
  112. },
  113. ],
  114. },
  115. { timestamps: true }
  116. ),
  117. ],
  118. },
  119. { timestamps: true }
  120. ),
  121. 'sanksi'
  122. )