laporan.model.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. dokumen: [
  31. {
  32. type: Types.ObjectId,
  33. ref: dokumen,
  34. },
  35. ],
  36. jadwal: {
  37. judul: String,
  38. dari_tanggal: Date,
  39. sampai_tanggal: Date,
  40. warna: String,
  41. },
  42. berita_acara: {
  43. type: Object
  44. },
  45. peserta_penetapan_sanksi: [
  46. new Schema(
  47. {
  48. nama: String,
  49. ttd: {
  50. type: Types.ObjectId,
  51. ref: dokumen,
  52. },
  53. },
  54. {
  55. timestamps: true
  56. }
  57. )
  58. ],
  59. evaluasi: [
  60. new Schema(
  61. {
  62. dari: { type: Types.ObjectId, ref: user },
  63. judul: String,
  64. tanggal: Date,
  65. dokumen: [
  66. {
  67. type: Types.ObjectId,
  68. ref: dokumen,
  69. },
  70. ],
  71. },
  72. {
  73. timestamps: true,
  74. }
  75. ),
  76. ],
  77. },
  78. {
  79. timestamps: true,
  80. }
  81. ),
  82. 'laporan'
  83. )