const mongoose = require('mongoose') const { Schema, Types } = mongoose const dokumen = require('./dokumen.model') const user = require('./user.model') const pelanggaran = require('./pelanggaran.model') module.exports = mongoose.model( 'Sanksi2', new Schema( { no_sanksi: String, user: { type: Types.ObjectId, ref: user }, pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }], sanksi: [{ description: String, label: String, level: Number }], keterangan: String, is_read: Boolean, last_step: String, is_pengajuan_keberatan: Boolean, is_pengajuan_banding: Boolean, is_finalisasi: { type: Boolean, default: false }, is_cabut_sanksi: Boolean, tanggal_terima_sanksi: Date, dokumen_terima_sanksi: [{ type: Types.ObjectId, ref: dokumen, }], tanggal_akhir_keberatan: Date, aktif: { type: Boolean, default: true }, step: [{ type: String, enum: ['keberatan', 'banding', 'cabut_sanksi', 'dokumen_perbaikan'] }], tuntas: { keterangan: String, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, berita_acara: { type: Types.ObjectId, ref: dokumen, }, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], masa_berlaku: new Schema({ from_date: Date, to_date: Date, berakhir: Boolean, }), batas_waktu: { keberatan: Date, jawaban_keberatan: Date, banding: Date, jawaban_banding: Date, }, jawaban: { keberatan: new Schema( { status: String, keterangan: String, no_keberatan: String, tanggal_terima_keberatan: Date, tanggal_surat_keberatan: Date, dokumen_terima_keberatan: [{ type: Types.ObjectId, ref: dokumen, }], tanggal_akhir_banding: Date, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), banding: new Schema( { no_banding: String, tanggal_terima_banding: Date, tanggal_surat_banding: Date, dokumen_terima_banding: [{ type: Types.ObjectId, ref: dokumen, }], status: String, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), cabut_sanksi: new Schema( { index: { type: Number, default: 0, }, status: String, keterangan: String, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), }, pengajuan: { keberatan: new Schema( { dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), banding: new Schema( { dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), cabut_sanksi: new Schema( { dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), update_tmt: new Schema( { no_surat: String, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), }, riwayat_sanksi: [ new Schema( { no_sanksi: String, user: { type: Types.ObjectId, ref: user }, pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }], keterangan: String, aktif: { type: Boolean, default: true }, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], masa_berlaku: new Schema({ from_date: Date, to_date: Date, }), index_perbaikan: { type: Number, default: 0, }, perbaikan: [ new Schema( { keterangan: String, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), ], }, { timestamps: true } ), ], riwayat_pengajuan_cabut_sanksi: [ new Schema( { index: { default: 0, type: Number }, dokumen: [ { type: Types.ObjectId, ref: dokumen } ] }, { timestamps: true } ) ], riwayat_jawaban_cabut_sanksi: [ new Schema( { index: { default: 0, type: Number, }, status: String, keterangan: String, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), ], index_perbaikan: { type: Number, default: 0, }, perbaikan: [ new Schema( { keterangan: String, index: { type: Number, default: 0, }, dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), ], rekomendasi: [ new Schema( { dokumen: [ { type: Types.ObjectId, ref: dokumen, }, ], }, { timestamps: true } ), ], bypass_cabut_sanksi: Boolean, }, { timestamps: true } ), 'sanksi' )