| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- const mongoose = require('mongoose')
- const { Schema, Types } = mongoose
- const dokumen = require('./dokumen.model')
- const laporan = require('./laporan.model')
- const user = require('./user.model')
- const pelanggaran = require('./pelanggaran.model')
- module.exports = mongoose.model(
- 'Sanksi',
- new Schema(
- {
- no_sanksi: String,
- laporan: { type: Types.ObjectId, unique: true, ref: laporan },
- user: { type: Types.ObjectId, ref: user },
- sanksi: [{ description: String, label: String, level: Number }],
- pelanggaran: [{ type: Types.ObjectId, ref: pelanggaran }],
- keterangan: String,
- is_read: Boolean,
- last_step: String,
- is_pengajuan_keberatan: Boolean,
- is_pengajuan_banding: 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(
- {
- 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,
- laporan: { type: Types.ObjectId, ref: laporan },
- 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,
- }),
- perbaikan: [
- new Schema(
- {
- keterangan: String,
- dokumen: [
- {
- type: Types.ObjectId,
- ref: dokumen,
- },
- ],
- },
- { timestamps: true }
- ),
- ],
- },
- { timestamps: true }
- ),
- ],
- perbaikan: [
- new Schema(
- {
- keterangan: String,
- 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'
- )
|