laporan.model.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. const mongoose = require('mongoose')
  2. const { Schema, Types } = mongoose
  3. const user = require('./user.model')
  4. const dokumen = require('./dokumen.model')
  5. const pelanggaran = require('./pelanggaran.model')
  6. const sanksi = require('./sanksi2.model')
  7. module.exports = mongoose.model(
  8. 'Laporan',
  9. new Schema(
  10. {
  11. no_laporan: { type: String, unique: true },
  12. user: { type: Types.ObjectId, ref: user },
  13. sanksi: { type: Types.ObjectId, ref: sanksi },
  14. pt: Object,
  15. keterangan: String,
  16. pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
  17. alasan_delegasi: String,
  18. level: { type: Number, enum: [1, 2, 3] },
  19. role_asal: {
  20. type: String,
  21. enum: ['dikti', 'lldikti'],
  22. default: 'dikti',
  23. },
  24. role_data: {
  25. type: String,
  26. enum: ['dikti', 'lldikti'],
  27. default: 'dikti',
  28. },
  29. aktif: { type: Boolean, default: true },
  30. tuntas: {
  31. keterangan: String,
  32. dokumen: [
  33. {
  34. type: Types.ObjectId,
  35. ref: dokumen,
  36. },
  37. ],
  38. },
  39. dokumen: [
  40. {
  41. type: Types.ObjectId,
  42. ref: dokumen,
  43. },
  44. ],
  45. jadwal: {
  46. judul: String,
  47. dari_tanggal: Date,
  48. sampai_tanggal: Date,
  49. warna: String,
  50. },
  51. berita_acara: {
  52. type: Object
  53. },
  54. peserta_penetapan_sanksi: [
  55. new Schema(
  56. {
  57. nama: String,
  58. ttd: {
  59. type: Types.ObjectId,
  60. ref: dokumen,
  61. },
  62. },
  63. {
  64. timestamps: true
  65. }
  66. )
  67. ],
  68. evaluasi: [
  69. new Schema(
  70. {
  71. dari: { type: Types.ObjectId, ref: user },
  72. judul: String,
  73. tanggal: Date,
  74. dokumen: [
  75. {
  76. type: Types.ObjectId,
  77. ref: dokumen,
  78. },
  79. ],
  80. },
  81. {
  82. timestamps: true,
  83. }
  84. ),
  85. ],
  86. },
  87. {
  88. timestamps: true,
  89. }
  90. ),
  91. 'laporan'
  92. )