sanksi.model.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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. },
  108. perbaikan: [
  109. new Schema(
  110. {
  111. keterangan: String,
  112. dokumen: [
  113. {
  114. type: Types.ObjectId,
  115. ref: dokumen,
  116. },
  117. ],
  118. },
  119. { timestamps: true }
  120. ),
  121. ],
  122. },
  123. { timestamps: true }
  124. ),
  125. 'sanksi'
  126. )