| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | const mongoose = require('mongoose')const { Schema, Types } = mongooseconst user = require('./user.model')const dokumen = require('./dokumen.model')const pelanggaran = require('./pelanggaran.model')const sanksi = require('./sanksi2.model')module.exports = mongoose.model(  'Laporan',  new Schema(    {      no_laporan: { type: String, unique: true },      user: { type: Types.ObjectId, ref: user },      sanksi: { type: Types.ObjectId, ref: sanksi },      pt: Object,      keterangan: String,      pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],      alasan_delegasi: String,      level: { type: Number, enum: [1, 2, 3] },      role_asal: {        type: String,        enum: ['dikti', 'lldikti'],        default: 'dikti',      },      role_data: {        type: String,        enum: ['dikti', 'lldikti'],        default: 'dikti',      },      aktif: { type: Boolean, default: true },      tuntas: {        keterangan: String,        dokumen: [          {            type: Types.ObjectId,            ref: dokumen,          },        ],      },      dokumen: [        {          type: Types.ObjectId,          ref: dokumen,        },      ],      jadwal: {        judul: String,        dari_tanggal: Date,        sampai_tanggal: Date,        warna: String,      },      berita_acara: {        type: Object      },      peserta_penetapan_sanksi: [        new Schema(          {            nama: String,            ttd: {              type: Types.ObjectId,              ref: dokumen,            },          },          {            timestamps: true          }        )      ],      evaluasi: [        new Schema(          {            dari: { type: Types.ObjectId, ref: user },            judul: String,            tanggal: Date,            dokumen: [              {                type: Types.ObjectId,                ref: dokumen,              },            ],          },          {            timestamps: true,          }        ),      ],    },    {      timestamps: true,    }  ),  'laporan')
 |