sanksi2.model.js 4.3 KB

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