sanksi.model.js 4.0 KB

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