migrasi.controller.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const sanksiModel = require('../../model/sanksi.model')
  2. const dokumenModel = require('../../model/dokumen.model')
  3. const laporanModel = require('../../model/laporan.model')
  4. const handleError = require('../../utils/v1/handleError')
  5. const response = require('../../utils/responseHandler')
  6. const coba = require('../../utils/coba')
  7. exports.pengajuan = handleError(async (req, res) => {
  8. const [keberatan, banding] = await Promise.all([
  9. (() =>
  10. sanksiModel.find({
  11. ['pengajuan.keberatan']: { $ne: null, $exists: true },
  12. is_pengajuan_keberatan: { $eq: null, $exists: false }
  13. }))(),
  14. (() =>
  15. sanksiModel.find({
  16. ['jawaban.keberatan']: { $ne: null, $exists: true },
  17. ['pengajuan.banding']: { $ne: null, $exists: true },
  18. is_pengajuan_banding: { $eq: null, $exists: false }
  19. }))()
  20. ])
  21. await Promise.all([
  22. ...keberatan.map(async (e) => {
  23. await sanksiModel.findOneAndUpdate({ _id: e._id }, { is_pengajuan_keberatan: true })
  24. }),
  25. ...banding.map(async (e) => {
  26. await sanksiModel.findOneAndUpdate({ _id: e._id }, { is_pengajuan_banding: true })
  27. })
  28. ])
  29. return response.success(res, {
  30. message: 'Berhasil migrasi pengajuan'
  31. })
  32. })
  33. exports.dokumen = handleError(async (req, res) => {
  34. const dokumen = await dokumenModel.find({ path: /api.sidali.sixsenz.net/ })
  35. if (dokumen?.length) await Promise.all(dokumen.map(async e => {
  36. const path = e.path.split('/').slice(3).join('/')
  37. await dokumenModel.findOneAndUpdate({
  38. _id: e._id
  39. }, {
  40. path: `${coba.decrypt(process.env.W8A1C)}/${path}`
  41. })
  42. }))
  43. return response.success(res, {
  44. message: 'Berhasil migrasi dokumen'
  45. })
  46. })
  47. exports.pelanggaranSanksi = handleError(async (req, res) => {
  48. const sanksi = await sanksiModel.find({
  49. sanksi: {
  50. $eq: []
  51. }
  52. }).populate('pelanggaran')
  53. if (sanksi?.length) await Promise.all(sanksi.map(async e => {
  54. await sanksiModel.findOneAndUpdate({
  55. _id: e._id
  56. }, {
  57. sanksi: e.pelanggaran.map(e2 => ({ label: e2.label_sanksi, description: e2.sanksi, level: e2.level_sanksi }))
  58. })
  59. }))
  60. return response.success(res, {
  61. message: 'Berhasil migrasi pelanggaran sanksi'
  62. })
  63. })
  64. exports.tambahStep = handleError(async (req, res) => {
  65. const laporan = await laporanModel.find()
  66. await Promise.all(laporan.map(e => {
  67. let step = ['pelaporan']
  68. if (e.jadwal) step.push('penjadwalan')
  69. if (e.evaluasi.length) step.push('pemeriksaan')
  70. if (e.sanksi) step.push('sanksi')
  71. return laporanModel.updateOne({ _id: e._id }, { step })
  72. }))
  73. const sanksi = await sanksiModel.find()
  74. await Promise.all(sanksi.map(e => {
  75. let step = []
  76. if (e.pengajuan?.keberatan) step.push('keberatan')
  77. if (e.pengajuan?.banding) step.push('banding')
  78. if (e.perbaikan.length) step.push('dokumen_perbaikan')
  79. if (e.pengajuan?.cabut_sanksi) step.push('cabut_sanksi')
  80. return sanksiModel.updateOne({ _id: e._id }, { step })
  81. }))
  82. return laporan
  83. })
  84. exports.backToSanksi = handleError(async (req, res) => {
  85. const sanksi = await sanksiModel.find({
  86. 'masa_berlaku.to_date': {
  87. $lte: new Date().toISOString()
  88. },
  89. aktif: false
  90. })
  91. await Promise.all(sanksi.map(e => sanksiModel.findOneAndUpdate({ _id: e._id }, { aktif: true, 'masa_berlaku.berakhir': true })))
  92. return sanksi
  93. })