sanksi2.model.js 4.2 KB

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