sanksi.model.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. perubahan_sanksi: {
  120. no_surat: String,
  121. user: { type: Types.ObjectId, ref: user },
  122. pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
  123. keterangan: String,
  124. dokumen: [
  125. {
  126. type: Types.ObjectId,
  127. ref: dokumen,
  128. },
  129. ],
  130. masa_berlaku: new Schema({
  131. from_date: Date,
  132. to_date: Date,
  133. }),
  134. },
  135. perbaikan: [
  136. new Schema(
  137. {
  138. keterangan: String,
  139. dokumen: [
  140. {
  141. type: Types.ObjectId,
  142. ref: dokumen,
  143. },
  144. ],
  145. },
  146. { timestamps: true }
  147. ),
  148. ],
  149. rekomendasi: [
  150. new Schema(
  151. {
  152. dokumen: [
  153. {
  154. type: Types.ObjectId,
  155. ref: dokumen,
  156. },
  157. ],
  158. },
  159. { timestamps: true }
  160. ),
  161. ],
  162. },
  163. { timestamps: true }
  164. ),
  165. 'sanksi'
  166. )