sanksi.model.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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. pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
  14. keterangan: String,
  15. aktif: { type: Boolean, default: true },
  16. dokumen: [
  17. {
  18. type: Types.ObjectId,
  19. ref: dokumen,
  20. },
  21. ],
  22. batas_waktu: {
  23. keberatan: Date,
  24. jawaban_keberatan: Date,
  25. banding: Date,
  26. jawaban_banding: Date,
  27. },
  28. jawaban: {
  29. keberatan: new Schema(
  30. {
  31. status: String,
  32. keterangan: String,
  33. dokumen: [
  34. {
  35. type: Types.ObjectId,
  36. ref: dokumen,
  37. },
  38. ],
  39. },
  40. { timestamps: true }
  41. ),
  42. banding: new Schema(
  43. {
  44. status: String,
  45. dokumen: [
  46. {
  47. type: Types.ObjectId,
  48. ref: dokumen,
  49. },
  50. ],
  51. },
  52. { timestamps: true }
  53. ),
  54. cabut_sanksi: new Schema(
  55. {
  56. status: String,
  57. keterangan: String,
  58. dokumen: [
  59. {
  60. type: Types.ObjectId,
  61. ref: dokumen,
  62. },
  63. ],
  64. },
  65. { timestamps: true }
  66. ),
  67. },
  68. pengajuan: {
  69. keberatan: new Schema(
  70. {
  71. dokumen: [
  72. {
  73. type: Types.ObjectId,
  74. ref: dokumen,
  75. },
  76. ],
  77. },
  78. { timestamps: true }
  79. ),
  80. banding: new Schema(
  81. {
  82. dokumen: [
  83. {
  84. type: Types.ObjectId,
  85. ref: dokumen,
  86. },
  87. ],
  88. },
  89. { timestamps: true }
  90. ),
  91. cabut_sanksi: new Schema(
  92. {
  93. dokumen: [
  94. {
  95. type: Types.ObjectId,
  96. ref: dokumen,
  97. },
  98. ],
  99. },
  100. { timestamps: true }
  101. ),
  102. },
  103. perbaikan: [
  104. new Schema(
  105. {
  106. keterangan: String,
  107. dokumen: [
  108. {
  109. type: Types.ObjectId,
  110. ref: dokumen,
  111. },
  112. ],
  113. },
  114. { timestamps: true }
  115. ),
  116. ],
  117. },
  118. { timestamps: true }
  119. ),
  120. 'sanksi'
  121. )