sanksi.model.js 4.5 KB

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