laporan.model.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. peserta_penetapan_sanksi: [
  43. new Schema(
  44. {
  45. nama: String,
  46. ttd: {
  47. type: Types.ObjectId,
  48. ref: dokumen,
  49. },
  50. },
  51. {
  52. timestamps: true
  53. }
  54. )
  55. ],
  56. evaluasi: [
  57. new Schema(
  58. {
  59. dari: { type: Types.ObjectId, ref: user },
  60. judul: String,
  61. tanggal: Date,
  62. dokumen: [
  63. {
  64. type: Types.ObjectId,
  65. ref: dokumen,
  66. },
  67. ],
  68. },
  69. {
  70. timestamps: true,
  71. }
  72. ),
  73. ],
  74. },
  75. {
  76. timestamps: true,
  77. }
  78. ),
  79. 'laporan'
  80. )