sanksi2.model.js 5.5 KB

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