sanksi.model.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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, 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. masa_berlaku: new Schema({
  24. from_date: Date,
  25. to_date: Date,
  26. }),
  27. batas_waktu: {
  28. keberatan: Date,
  29. jawaban_keberatan: Date,
  30. banding: Date,
  31. jawaban_banding: Date,
  32. },
  33. jawaban: {
  34. keberatan: new Schema(
  35. {
  36. status: String,
  37. keterangan: String,
  38. dokumen: [
  39. {
  40. type: Types.ObjectId,
  41. ref: dokumen,
  42. },
  43. ],
  44. },
  45. { timestamps: true }
  46. ),
  47. banding: new Schema(
  48. {
  49. status: String,
  50. dokumen: [
  51. {
  52. type: Types.ObjectId,
  53. ref: dokumen,
  54. },
  55. ],
  56. },
  57. { timestamps: true }
  58. ),
  59. cabut_sanksi: new Schema(
  60. {
  61. status: String,
  62. keterangan: String,
  63. dokumen: [
  64. {
  65. type: Types.ObjectId,
  66. ref: dokumen,
  67. },
  68. ],
  69. },
  70. { timestamps: true }
  71. ),
  72. },
  73. pengajuan: {
  74. keberatan: new Schema(
  75. {
  76. dokumen: [
  77. {
  78. type: Types.ObjectId,
  79. ref: dokumen,
  80. },
  81. ],
  82. },
  83. { timestamps: true }
  84. ),
  85. banding: new Schema(
  86. {
  87. dokumen: [
  88. {
  89. type: Types.ObjectId,
  90. ref: dokumen,
  91. },
  92. ],
  93. },
  94. { timestamps: true }
  95. ),
  96. cabut_sanksi: new Schema(
  97. {
  98. dokumen: [
  99. {
  100. type: Types.ObjectId,
  101. ref: dokumen,
  102. },
  103. ],
  104. },
  105. { timestamps: true }
  106. ),
  107. update_tmt: new Schema(
  108. {
  109. dokumen: [
  110. {
  111. type: Types.ObjectId,
  112. ref: dokumen,
  113. },
  114. ],
  115. },
  116. { timestamps: true }
  117. ),
  118. },
  119. perbaikan: [
  120. new Schema(
  121. {
  122. keterangan: String,
  123. dokumen: [
  124. {
  125. type: Types.ObjectId,
  126. ref: dokumen,
  127. },
  128. ],
  129. },
  130. { timestamps: true }
  131. ),
  132. ],
  133. rekomendasi: [
  134. new Schema(
  135. {
  136. dokumen: [
  137. {
  138. type: Types.ObjectId,
  139. ref: dokumen,
  140. },
  141. ],
  142. },
  143. { timestamps: true }
  144. ),
  145. ],
  146. },
  147. { timestamps: true }
  148. ),
  149. 'sanksi'
  150. )