import React, { Component } from "react"; import { Card, CardBody, TabContent, TabPane, Nav, NavItem, NavLink, Button, Row, Col, FormGroup } from "reactstrap"; import Router from "next/router"; import classnames from "classnames"; import ContentWrapper from "@/components/Layout/ContentWrapper"; import DetailLaporan from "@/components/Main/DetailLaporan"; import Header from "@/components/Main/Header"; import TableRiwayat from "@/components/Pemeriksaan/TableRiwayat"; import UploadSurat from "@/components/Sanksi/UploadSurat"; import Ringkasan from "@/components/Sanksi/Ringkasan"; import TablePenetapanSanksi from "@/components/Sanksi/TablePenetapanSanksi"; import Link from "next/link"; import { getOneLaporan, updateLaporan } from "@/actions/pelaporan"; import { createSanksi } from "@/actions/sanksi"; import { getPelanggaran, getPelanggaranSanksi } from "@/actions/pelanggaran"; import { connect } from "react-redux"; import Loader from "@/components/Common/Loader"; import { ToastContainer, toast } from "react-toastify"; import BeritaAcara from "@/components/Sanksi/BeritaAcara"; import { getAutoSave, inputAutoSave } from "@/actions/autosave"; import swal from "sweetalert2"; import { getCsrf } from "../../../actions/security"; import ComponentToPrint from "../../../components/Sanksi/SuratBA_A"; import ReactToPrint, { PrintContextConsumer } from 'react-to-print'; const stepNavitemStyle = { backgroundColor: "#fcfcfc", }; class ProsesSanksi extends Component { // dataUpload = {}; constructor(props) { super(props); this.state = { activeStep: "1", dataUpload: null, dataSuratBA: null, dataPelanggaran: {}, pelaporan: {}, listSanksi: [], loading: false, }; } static getInitialProps = async ({ query }) => { return { query }; }; componentDidMount = async () => { const { query, token } = this.props; const { id } = query; const pelaporan = await getOneLaporan(token, id); const { data: listSanksi } = await getPelanggaranSanksi(token) const getDataSave = await getAutoSave({ id, laporan: true }); const autoSaveDataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran; const activeStep = getDataSave.data?.PenetapanSanksi?.activeStep this.setState({ pelaporan, listSanksi, activeStep: activeStep || "1" }); this.setState({ dataPelanggaran: autoSaveDataPelanggaran }) }; handleAutoSave = async (data, activeStep) => { const { query, token } = this.props; const { id } = query; const { dataSuratBA, dataUpload } = this.state await inputAutoSave({ data: { PenetapanSanksi: { dataSuratBA, dataUpload, dataPelanggaran: data, activeStep } }, token, id, laporan: true }) } done = async (e) => { const getToken = await getCsrf(); const _csrf = getToken.token; const toastid = toast.loading("Please wait..."); this.setState({ loading: true }) try { e.preventDefault(); const { query, token } = this.props; const { id } = query; const formdata = new FormData(); formdata.append("no_sanksi", this.state.dataUpload.nomorSanksi); formdata.append("keterangan", this.state.dataUpload.keterangan); formdata.append("from_date", this.state.dataUpload.awalsanksi); formdata.append("to_date", this.state.dataUpload.akhirsanksi); formdata.append("tanggal_terima_sanksi", this.state.dataUpload.terimaSuratSanksi); formdata.append("tanggal_akhir_keberatan", this.state.dataUpload.tglAkhirKeberatan); formdata.append("pelanggaran_id", this.state.dataPelanggaran.data.map((e) => e._id).join()); if (this.state.dataUpload.files && this.state.dataUpload.files.length > 0) { this.state.dataUpload.files.forEach((e) => { formdata.append("dokumen", e); }); } if (this.state.dataUpload.filesTandaTerimaSS && this.state.dataUpload.filesTandaTerimaSS.length > 0) { this.state.dataUpload.filesTandaTerimaSS.forEach((e) => { formdata.append("dokumen_terima_sanksi", e); }); } // if (this.state.dataUpload.filesBeritaAcara && this.state.dataUpload.filesBeritaAcara.length > 0) { // this.state.dataUpload.filesBeritaAcara.forEach((e) => { // formdata.append("berita_acara", e); // }); // } await createSanksi(token, id, formdata, _csrf); toast.update(toastid, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true }); Router.push({ pathname: "/app/sanksi", }); } catch (error) { toast.update(toastid, { render: (error.request.message), type: "error", isLoading: false, autoClose: true, closeButton: true }); } }; handleDelegasi = async (data) => { const getToken = await getCsrf(); const _csrf = getToken.token; const { token, query } = this.props; const { id } = query; let update = null; const toastid = toast.loading("Please wait..."); data.change_role = "true"; data.keterangan = "delegasi ke DIKTI" update = await updateLaporan(token, id, data, _csrf); if (!update) { toast.update(toastid, { render: "Laporan gagal didelegasi", type: "error", isLoading: false, autoClose: true, closeButton: true }); } else { toast.update(toastid, { render: "Laporan berhasil didelegasi", type: "success", isLoading: false, autoClose: true, closeButton: true }); Router.push("/app/sanksi"); } }; toggleStep = (activeStep) => () => { if (this.state.activeStep !== activeStep) { this.setState({ activeStep: activeStep }); this.handleAutoSave(this.state.dataPelanggaran, activeStep)// parameter 1 untuk data pelanggaran 1 untuk activestep // this.state.activeStep = activeStep; } }; setCheckedData = async (data) => { if (data.length === 0) { this.handleAutoSave("null") this.setState({ dataPelanggaran: "null" }) } else { const { token } = this.props; const result = await getPelanggaran(token, { id: data.join(",") }); this.setState({ dataPelanggaran: result }); this.handleAutoSave(result) } }; setUploadSuratSanksi = (data) => { this.setState({ dataUpload: data }); }; setDataSuratBA = (data) => { this.setState({ dataSuratBA: data }); }; validation = (activeStep) => { const dataUpload = this.state.dataUpload const dataPelanggaran = this.state.dataPelanggaran if ( dataUpload?.nomorSanksi === undefined || dataUpload?.nomorSanksi === "" || dataUpload?.keterangan === undefined || dataUpload?.keterangan === "" || dataUpload?.awalsanksi === undefined || dataUpload?.awalsanksi === "" || dataUpload?.listSanksi === undefined || dataUpload?.listSanksi === null || dataUpload?.files === undefined || dataUpload?.files.length === 0 || dataUpload?.files === null || dataUpload?.terimaSuratSanksi === undefined || dataUpload?.terimaSuratSanksi === "" || dataUpload?.tglAkhirKeberatan === undefined || dataUpload?.tglAkhirKeberatan === "" || dataUpload?.filesTandaTerimaSS === undefined || dataUpload?.filesTandaTerimaSS.length === 0 || dataUpload?.filesTandaTerimaSS === null || dataPelanggaran?.data === undefined ) { swal.fire({ title: "Form Wajib Diisi", icon: "error", confirmButtonColor: "#3e3a8e", }); } else { this.setState({ activeStep: "6" }); } } render() { const { dataUpload, dataPelanggaran, pelaporan, dataSuratBA } = this.state return ( {/*
*/}
Penetapan Sanksi

Detail Laporan

{pelaporan.data ? : }

Hasil Evaluasi

{pelaporan.data ? ( ) : ( )}

Penetapan Jenis Pelanggaran


Penetapan Sanksi

{this.state.listSanksi && }
(this.componentRef = el)} query={this.props.query} handleAutoSave={this.handleAutoSave} dataPelanggaran={this.state.dataPelanggaran} setDataSuratBA={this.setDataSuratBA} dataLaporan={pelaporan} dataSuratBA={dataSuratBA} />
{ return }} content={() => this.componentRef} />

Ringkasan

{pelaporan.data ? : } Surat Berita Acara: { return }} content={() => this.componentRef} />
(this.componentRef = el)} query={this.props.query} handleAutoSave={this.handleAutoSave} dataPelanggaran={this.state.dataPelanggaran} setDataSuratBA={this.setDataSuratBA} dataLaporan={pelaporan} dataSuratBA={dataSuratBA} />

); } } const mapStateToProps = (state) => ({ user: state.user, token: state.token }); export default connect(mapStateToProps)(ProsesSanksi);