sanksi2.model.js 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. const mongoose = require('mongoose')
  2. const { Schema, Types } = mongoose
  3. const dokumen = require('./dokumen.model')
  4. const user = require('./user.model')
  5. const pelanggaran = require('./pelanggaran.model')
  6. module.exports = mongoose.model(
  7. 'Sanksi2',
  8. new Schema(
  9. {
  10. no_sanksi: String,
  11. user: { type: Types.ObjectId, ref: user },
  12. pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
  13. sanksi: [{ description: String, label: String, level: Number }],
  14. keterangan: String,
  15. is_read: Boolean,
  16. last_step: String,
  17. levelSanksi: Number,
  18. is_pengajuan_keberatan: Boolean,
  19. is_pengajuan_banding: Boolean,
  20. is_finalisasi: { type: Boolean, default: false },
  21. is_cabut_sanksi: Boolean,
  22. tanggal_terima_sanksi: Date,
  23. dokumen_terima_sanksi: [{
  24. type: Types.ObjectId,
  25. ref: dokumen,
  26. }],
  27. tanggal_akhir_keberatan: Date,
  28. aktif: { type: Boolean, default: true },
  29. step: [{ type: String, enum: ['keberatan', 'banding', 'cabut_sanksi', 'dokumen_perbaikan'] }],
  30. tuntas: {
  31. keterangan: String,
  32. dokumen: [
  33. {
  34. type: Types.ObjectId,
  35. ref: dokumen,
  36. },
  37. ],
  38. },
  39. berita_acara:
  40. {
  41. type: Types.ObjectId,
  42. ref: dokumen,
  43. },
  44. dokumen: [
  45. {
  46. type: Types.ObjectId,
  47. ref: dokumen,
  48. },
  49. ],
  50. masa_berlaku: new Schema({
  51. from_date: Date,
  52. to_date: Date,
  53. berakhir: Boolean,
  54. }),
  55. batas_waktu: {
  56. keberatan: Date,
  57. jawaban_keberatan: Date,
  58. banding: Date,
  59. jawaban_banding: Date,
  60. },
  61. jawaban: {
  62. keberatan: new Schema(
  63. {
  64. status: String,
  65. keterangan: String,
  66. no_keberatan: String,
  67. tanggal_terima_keberatan: Date,
  68. tanggal_surat_keberatan: Date,
  69. dokumen_terima_keberatan: [{
  70. type: Types.ObjectId,
  71. ref: dokumen,
  72. }],
  73. tanggal_akhir_banding: Date,
  74. dokumen: [
  75. {
  76. type: Types.ObjectId,
  77. ref: dokumen,
  78. },
  79. ],
  80. },
  81. { timestamps: true }
  82. ),
  83. banding: new Schema(
  84. {
  85. no_banding: String,
  86. tanggal_terima_banding: Date,
  87. tanggal_surat_banding: Date,
  88. dokumen_terima_banding: [{
  89. type: Types.ObjectId,
  90. ref: dokumen,
  91. }],
  92. status: String,
  93. dokumen: [
  94. {
  95. type: Types.ObjectId,
  96. ref: dokumen,
  97. },
  98. ],
  99. },
  100. { timestamps: true }
  101. ),
  102. cabut_sanksi: new Schema(
  103. {
  104. index: {
  105. type: Number,
  106. default: 0,
  107. },
  108. status: String,
  109. keterangan: String,
  110. dokumen: [
  111. {
  112. type: Types.ObjectId,
  113. ref: dokumen,
  114. },
  115. ],
  116. },
  117. { timestamps: true }
  118. ),
  119. },
  120. pengajuan: {
  121. keberatan: new Schema(
  122. {
  123. dokumen: [
  124. {
  125. type: Types.ObjectId,
  126. ref: dokumen,
  127. },
  128. ],
  129. },
  130. { timestamps: true }
  131. ),
  132. banding: new Schema(
  133. {
  134. dokumen: [
  135. {
  136. type: Types.ObjectId,
  137. ref: dokumen,
  138. },
  139. ],
  140. },
  141. { timestamps: true }
  142. ),
  143. cabut_sanksi: new Schema(
  144. {
  145. dokumen_rekomendasi: [
  146. {
  147. type: Types.ObjectId,
  148. ref: dokumen
  149. }
  150. ],
  151. dokumen: [
  152. {
  153. type: Types.ObjectId,
  154. ref: dokumen,
  155. },
  156. ],
  157. },
  158. { timestamps: true }
  159. ),
  160. update_tmt: new Schema(
  161. {
  162. no_surat: String,
  163. dokumen: [
  164. {
  165. type: Types.ObjectId,
  166. ref: dokumen,
  167. },
  168. ],
  169. },
  170. { timestamps: true }
  171. ),
  172. },
  173. riwayat_sanksi: [
  174. new Schema(
  175. {
  176. no_sanksi: String,
  177. user: { type: Types.ObjectId, ref: user },
  178. pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
  179. keterangan: String,
  180. aktif: { type: Boolean, default: true },
  181. dokumen: [
  182. {
  183. type: Types.ObjectId,
  184. ref: dokumen,
  185. },
  186. ],
  187. masa_berlaku: new Schema({
  188. from_date: Date,
  189. to_date: Date,
  190. }),
  191. index_perbaikan: {
  192. type: Number,
  193. default: 0,
  194. },
  195. perbaikan: [
  196. new Schema(
  197. {
  198. keterangan: String,
  199. dokumen: [
  200. {
  201. type: Types.ObjectId,
  202. ref: dokumen,
  203. },
  204. ],
  205. },
  206. { timestamps: true }
  207. ),
  208. ],
  209. },
  210. { timestamps: true }
  211. ),
  212. ],
  213. riwayat_perpanjangan_sanksi: [
  214. new Schema(
  215. {
  216. masa_berlaku: new Schema({
  217. from_date: Date,
  218. to_date: Date
  219. }),
  220. index: {
  221. type: Number,
  222. default: 0
  223. },
  224. dokumen: [
  225. {
  226. type: Types.ObjectId,
  227. ref: dokumen
  228. }
  229. ]
  230. },
  231. { timestamps: true }
  232. )
  233. ],
  234. riwayat_pengajuan_cabut_sanksi: [
  235. new Schema(
  236. {
  237. index: {
  238. default: 0,
  239. type: Number
  240. },
  241. dokumen: [
  242. {
  243. type: Types.ObjectId,
  244. ref: dokumen
  245. }
  246. ]
  247. },
  248. { timestamps: true }
  249. )
  250. ],
  251. riwayat_jawaban_cabut_sanksi: [
  252. new Schema(
  253. {
  254. index: {
  255. default: 0,
  256. type: Number,
  257. },
  258. status: String,
  259. keterangan: String,
  260. dokumen: [
  261. {
  262. type: Types.ObjectId,
  263. ref: dokumen,
  264. },
  265. ],
  266. },
  267. { timestamps: true }
  268. ),
  269. ],
  270. index_perbaikan: {
  271. type: Number,
  272. default: 0,
  273. },
  274. index_perpanjangan: {
  275. type: Number,
  276. default: 0
  277. },
  278. perbaikan: [
  279. new Schema(
  280. {
  281. keterangan: String,
  282. index: {
  283. type: Number,
  284. default: 0,
  285. },
  286. dokumen: [
  287. {
  288. type: Types.ObjectId,
  289. ref: dokumen,
  290. },
  291. ],
  292. },
  293. { timestamps: true }
  294. ),
  295. ],
  296. rekomendasi: [
  297. new Schema(
  298. {
  299. dokumen: [
  300. {
  301. type: Types.ObjectId,
  302. ref: dokumen,
  303. },
  304. ],
  305. },
  306. { timestamps: true }
  307. ),
  308. ],
  309. bypass_cabut_sanksi: Boolean,
  310. },
  311. { timestamps: true }
  312. ),
  313. 'sanksi'
  314. )