sanksi.model.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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. sanksi: [{ description: String, label: String, level: Number }],
  15. pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
  16. keterangan: String,
  17. is_read: Boolean,
  18. last_step: String,
  19. is_pengajuan_keberatan: Boolean,
  20. is_pengajuan_banding: Boolean,
  21. tanggal_terima_sanksi: Date,
  22. dokumen_terima_sanksi: [{
  23. type: Types.ObjectId,
  24. ref: dokumen,
  25. }],
  26. tanggal_akhir_keberatan: Date,
  27. aktif: { type: Boolean, default: true },
  28. berita_acara:
  29. {
  30. type: Types.ObjectId,
  31. ref: dokumen,
  32. },
  33. dokumen: [
  34. {
  35. type: Types.ObjectId,
  36. ref: dokumen,
  37. },
  38. ],
  39. masa_berlaku: new Schema({
  40. from_date: Date,
  41. to_date: Date,
  42. }),
  43. batas_waktu: {
  44. keberatan: Date,
  45. jawaban_keberatan: Date,
  46. banding: Date,
  47. jawaban_banding: Date,
  48. },
  49. jawaban: {
  50. keberatan: new Schema(
  51. {
  52. status: String,
  53. keterangan: String,
  54. no_keberatan: String,
  55. tanggal_terima_keberatan: Date,
  56. tanggal_surat_keberatan: Date,
  57. dokumen_terima_keberatan: [{
  58. type: Types.ObjectId,
  59. ref: dokumen,
  60. }],
  61. tanggal_akhir_banding: Date,
  62. dokumen: [
  63. {
  64. type: Types.ObjectId,
  65. ref: dokumen,
  66. },
  67. ],
  68. },
  69. { timestamps: true }
  70. ),
  71. banding: new Schema(
  72. {
  73. no_banding: String,
  74. tanggal_terima_banding: Date,
  75. tanggal_surat_banding: Date,
  76. dokumen_terima_banding: [{
  77. type: Types.ObjectId,
  78. ref: dokumen,
  79. }],
  80. status: String,
  81. dokumen: [
  82. {
  83. type: Types.ObjectId,
  84. ref: dokumen,
  85. },
  86. ],
  87. },
  88. { timestamps: true }
  89. ),
  90. cabut_sanksi: new Schema(
  91. {
  92. status: String,
  93. keterangan: String,
  94. dokumen: [
  95. {
  96. type: Types.ObjectId,
  97. ref: dokumen,
  98. },
  99. ],
  100. },
  101. { timestamps: true }
  102. ),
  103. },
  104. pengajuan: {
  105. keberatan: new Schema(
  106. {
  107. dokumen: [
  108. {
  109. type: Types.ObjectId,
  110. ref: dokumen,
  111. },
  112. ],
  113. },
  114. { timestamps: true }
  115. ),
  116. banding: new Schema(
  117. {
  118. dokumen: [
  119. {
  120. type: Types.ObjectId,
  121. ref: dokumen,
  122. },
  123. ],
  124. },
  125. { timestamps: true }
  126. ),
  127. cabut_sanksi: new Schema(
  128. {
  129. dokumen: [
  130. {
  131. type: Types.ObjectId,
  132. ref: dokumen,
  133. },
  134. ],
  135. },
  136. { timestamps: true }
  137. ),
  138. update_tmt: new Schema(
  139. {
  140. no_surat: String,
  141. dokumen: [
  142. {
  143. type: Types.ObjectId,
  144. ref: dokumen,
  145. },
  146. ],
  147. },
  148. { timestamps: true }
  149. ),
  150. },
  151. riwayat_sanksi: [
  152. new Schema(
  153. {
  154. no_sanksi: String,
  155. laporan: { type: Types.ObjectId, ref: laporan },
  156. user: { type: Types.ObjectId, ref: user },
  157. pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
  158. keterangan: String,
  159. aktif: { type: Boolean, default: true },
  160. dokumen: [
  161. {
  162. type: Types.ObjectId,
  163. ref: dokumen,
  164. },
  165. ],
  166. masa_berlaku: new Schema({
  167. from_date: Date,
  168. to_date: Date,
  169. }),
  170. perbaikan: [
  171. new Schema(
  172. {
  173. keterangan: String,
  174. dokumen: [
  175. {
  176. type: Types.ObjectId,
  177. ref: dokumen,
  178. },
  179. ],
  180. },
  181. { timestamps: true }
  182. ),
  183. ],
  184. },
  185. { timestamps: true }
  186. ),
  187. ],
  188. perbaikan: [
  189. new Schema(
  190. {
  191. keterangan: String,
  192. dokumen: [
  193. {
  194. type: Types.ObjectId,
  195. ref: dokumen,
  196. },
  197. ],
  198. },
  199. { timestamps: true }
  200. ),
  201. ],
  202. rekomendasi: [
  203. new Schema(
  204. {
  205. dokumen: [
  206. {
  207. type: Types.ObjectId,
  208. ref: dokumen,
  209. },
  210. ],
  211. },
  212. { timestamps: true }
  213. ),
  214. ],
  215. },
  216. { timestamps: true }
  217. ),
  218. 'sanksi'
  219. )