andi 2 years ago
parent
commit
8c20ab0cd2

+ 0 - 605
components/BypassII/BeritaAcara.js

@@ -1,605 +0,0 @@
-import React, { useRef, Component } from 'react';
-import { Row, Col, Button, Popover, PopoverHeader, PopoverBody, Card, CardBody, Modal, ModalBody, ModalFooter } from "reactstrap";
-import ComponentToPrint from "./SuratBA_A";
-import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
-import DatePicker from "react-datepicker";
-import "react-datepicker/dist/react-datepicker.css";
-import id from 'date-fns/locale/id';
-import CopyToClipboard from "react-copy-to-clipboard";
-import { getAutoSave } from "@/actions/autosave";
-import ContentEditable from 'react-contenteditable'
-import { removePesertaPleno } from '../../actions/sanksi';
-import { ToastContainer, toast } from "react-toastify";
-import Router from "next/router";
-import { getCsrf } from '../../actions/security';
-import { ENV } from '../../env';
-
-
-
-class BeritaAcara_Bypass extends Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            isEditTempat: false,
-            tempat: "",
-            isEditTanggal: false,
-            isEditTanggal_2: false,
-            tanggal: "",
-            tanggal_2: "",
-            setTanggal: false,
-            setTanggal_2: false,
-            isEditNamaPeserta: false,
-            isEditTemuanLain: false,
-            temuanLain: [],
-            memberatkan: [],
-            isEditKeberatan: false,
-            isEditMeringankan: false,
-            meringankan: [],
-            sanksi: "",
-            isEditSanksi: false,
-            copied: false,
-            setmeState: true,
-            descPelanggaran: [],
-            modalRemovePeserta: false,
-            selectedPeserta: ""
-        };
-    }
-    static getInitialProps = async ({ query }) => {
-        return { query };
-    };
-
-    // componentDidMount = async () => {
-    //     const { query, token, dataPelanggaran } = this.props;
-    //     const { id } = query;
-    //     const getDataSave = await getAutoSave({ id, laporan: true });
-    //     const autosaveDataSuratBA = getDataSave.data?.PenetapanSanksi?.dataSuratBA;
-    //     this.setState(autosaveDataSuratBA)
-    // };
-
-    componentDidUpdate = (prevProps) => {
-        const { dataPelanggaran } = this.state;
-        if (prevProps.dataPelanggaran != this.state.dataPelanggaran) {
-            const descPelanggaran = {}
-            dataPelanggaran?.forEach(e => {
-                descPelanggaran[e._id] = {
-                    simpulan: 'simpulan',
-                    rekomendasi: 'rekomendasi'
-                }
-            });
-        }
-    }
-
-    updateValueSimpulan = (evt, id) => {
-        const descPelanggaran = this.state.descPelanggaran
-        this.state.descPelanggaran = {
-            ...descPelanggaran, [id]: {
-                ...descPelanggaran[id], simpulan: evt.target.value
-            }
-        }
-        // this.handleAutoSave()
-        // this.setState((prevState) => ({
-        //     ...prevState, descPelanggaran: {
-        //         ...prevState.descPelanggaran, [id]: {
-        //             ...prevState.descPelanggaran[id], simpulan: evt.target.value
-        //         }
-        //     }
-        // }), this.handleAutoSave)
-    }
-    updateValueRekomendasi = (evt, id) => {
-        const descPelanggaran = this.state.descPelanggaran
-        this.state.descPelanggaran = {
-            ...descPelanggaran, [id]: {
-                ...descPelanggaran[id], rekomendasi: evt.target.value
-            }
-        }
-        // this.handleAutoSave()
-        // this.setState((prevState) => ({
-        //     ...prevState, descPelanggaran: {
-        //         ...prevState.descPelanggaran, [id]: {
-        //             ...prevState.descPelanggaran[id], rekomendasi: evt.target.value
-        //         }
-        //     }
-        // }), this.handleAutoSave)
-    }
-
-    setDataSuratBA = () => {
-        this.props.setDataSuratBA(this.state);
-    }
-    // handleAutoSave = () => {
-    //     this.props.handleAutoSave()
-    // }
-    isEditTempat = () => {
-        this.state.isEditTempat = !this.state.isEditTempat
-        this.setDataSuratBA()
-        // this.handleAutoSave()
-        // this.setState({
-        //     isEditTempat: !this.state.isEditTempat,
-        // }, this.setDataSuratBA, this.handleAutoSave())
-    }
-    isEditTanggal = () => {
-        this.state.isEditTanggal = !this.state.isEditTanggal
-        this.setDataSuratBA()
-        // this.handleAutoSave()
-        // this.setState({
-        //     isEditTanggal: !this.state.isEditTanggal,
-        // }, this.setDataSuratBA, this.handleAutoSave())
-
-    }
-    isEditTanggal_2 = () => {
-        this.state.isEditTanggal_2 = !this.state.isEditTanggal_2
-        this.setDataSuratBA()
-        // this.handleAutoSave()
-        // this.setState({
-        //     isEditTanggal: !this.state.isEditTanggal,
-        // }, this.setDataSuratBA, this.handleAutoSave())
-
-    }
-
-    isEditTemuanLain = () => {
-        this.state.isEditTemuanLain = !this.state.isEditTemuanLain
-        this.setDataSuratBA()
-        // this.handleAutoSave()
-        // this.setState({
-        //     isEditTemuanLain: !this.state.isEditTemuanLain,
-        // }, this.setDataSuratBA, this.handleAutoSave())
-    }
-
-    isEditKeberatan = () => {
-        this.state.isEditKeberatan = !this.state.isEditKeberatan
-        this.setDataSuratBA()
-        // this.handleAutoSave()
-        // this.setState({
-        //     isEditKeberatan: !this.state.isEditKeberatan,
-        // }, this.setDataSuratBA, this.handleAutoSave())
-
-    }
-    isEditMeringankan = () => {
-        this.state.isEditMeringankan = !this.state.isEditMeringankan
-        this.setDataSuratBA()
-        // this.handleAutoSave()
-        // this.setState({
-        //     isEditMeringankan: !this.state.isEditMeringankan,
-        // }, this.setDataSuratBA, this.handleAutoSave())
-    }
-    isEditSanksi = () => {
-        this.state.isEditSanksi = !this.state.isEditSanksi
-        this.setDataSuratBA()
-        // this.handleAutoSave()
-        // this.setState({
-        //     isEditSanksi: !this.state.isEditSanksi,
-        // }, this.setDataSuratBA, this.handleAutoSave())
-    }
-    updateValueTemuanLain = () => {
-        const addTemuanLain = this.refs.inputTemuan.value
-        this.state.temuanLain.push(addTemuanLain)
-        this.setDataSuratBA(this.state)
-        // this.handleAutoSave()
-
-    }
-    updateValueMemringankan = () => {
-        const addMeringankan = this.refs.inputMeringankan.value
-        this.state.meringankan.push(addMeringankan)
-        this.setDataSuratBA(this.state)
-        // this.handleAutoSave()
-
-    }
-    updateValueMemberatkan = () => {
-        const addKeberatan = this.refs.inputMemberatkan.value
-        this.state.memberatkan.push(addKeberatan)
-        this.setDataSuratBA(this.state)
-        // this.handleAutoSave()
-    }
-
-
-    Copied = () => this.setState({
-        copied: !this.state.copied
-    },
-        //  this.handleAutoSave()
-    )
-
-    CloseCopied = () => {
-
-        setTimeout(() => {
-            // this.state.copied = !this.state.copied
-            this.setState({
-                copied: !this.state.copied
-            },
-                // this.handleAutoSave()
-            );
-        }, 1000);
-    }
-
-    setModalRemovePeserta = (modalRemovePeserta) => {
-        this.setState({
-            modalRemovePeserta: !this.state.modalRemovePeserta
-        })
-    }
-    removeTemuanLain = index => () => {
-        const temuanLain = this.state.temuanLain
-        const data = [...temuanLain]
-        data.splice(index, 1);
-
-        this.setState({
-            temuanLain: data,
-        }, this.setDataSuratBA()
-        );
-
-
-    }
-    removeMemberatkan = index => () => {
-        const memberatkan = this.state.memberatkan
-        const data = [...memberatkan]
-        data.splice(index, 1);
-
-        this.setState({
-            memberatkan: data,
-        }, this.setDataSuratBA()
-        );
-
-    }
-    removeMeringankan = index => () => {
-        const meringankan = this.state.meringankan
-        const data = [...meringankan]
-        data.splice(index, 1);
-
-        this.setState({
-            meringankan: data,
-        }, this.setDataSuratBA()
-        );
-
-    }
-
-    render() {
-        const { dataLaporan, dataSuratBA, dataPelanggaran, pt } = this.props
-        const { descPelanggaran, tanggal, setTanggal, setTanggal_2, tanggal_2, temuanLain } = this.state
-
-        return (
-            <div>
-                <div className=' content-heading border-radius-login'>
-                    <span className="btn-radius">
-                        <ReactToPrint
-                            trigger={() => {
-                                return <span>
-                                    <Button color className="btn-labeled-4">
-                                        <h4 className="p-0 mt-2">Print dan Download</h4>
-                                    </Button>
-                                </span>
-                            }}
-                            content={() => this.componentRef}
-                        />
-                    </span>
-                </div>
-                <div style={{ display: "none" }}>
-                    <ComponentToPrint ref={el => (this.componentRef = el)} dataPelanggaran={this.props.dataPelanggaran} dataSuratBA={this.props.dataSuratBA} pt={this.props.pt} />
-                </div>
-                <div className='page py-5 m-0 '>
-                    <div className='BA-Header'>
-                        <img className='BA-logo' src="/static/img/logo-single-1-login.png" alt="logo" />
-                        <h4 >LAPORAN HASIL EVALUASI DAN PEMBAHASAN</h4>
-                        {pt?.data && (<h4 className='text-uppercase' >{pt.data.nama}</h4>)}
-                    </div>
-                    <div className='BA-body px-5 pt-3'>
-                        <p>
-                            Pada hari ini
-                            {dataSuratBA?.isEditTanggal &&
-                                <span style={{ textIndent: "0rem" }}>
-                                    <DatePicker
-                                        selected={tanggal ? new Date(tanggal) : tanggal}
-                                        onChange={(tanggal) => {
-                                            this.setState({ tanggal, setTanggal: true }, this.setDataSuratBA)
-                                        }}
-                                        dateFormat="dd/MM/yyyy"
-                                        placeholderText="Isi Tanggal"
-                                        locale={id}
-                                        className="form-control bg-white"
-                                    />
-                                    <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTanggal} />
-                                    <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={this.isEditTanggal}
-                                    />
-                                </span>
-                            }
-                            {setTanggal === true || this.state?.setTanggal === true ?
-                                <span onClick={this.isEditTanggal}> {moment(tanggal || this.state?.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(tanggal || this.state?.tanggal).format("D")}&nbsp; bulan &nbsp;{moment(tanggal || this.state?.tanggal).format("MMMM")} tahun &nbsp;{moment(tanggal || this.state?.tanggal).format("YYYY")},</span> :
-                                <span onClick={this.isEditTanggal}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
-                            }
-                            &nbsp;bertempat di
-                            {dataSuratBA?.isEditTempat &&
-                                <span>
-                                    <input type='text'
-                                        defaultValue={""}
-                                        ref="inputTempat"
-                                        onChange={() => {
-                                            this.setState({ tempat: this.refs.inputTempat.value }, this.setDataSuratBA)
-                                        }}
-                                    />
-                                    <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTempat} />
-                                    <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.isEditTempat() }} />
-                                </span>
-                            }
-                            {this.state?.tempat ?
-                                <span onClick={this.isEditTempat} className='hhh'>
-                                    &nbsp;{dataSuratBA?.tempat || this.state?.tempat}
-                                </span>
-                                :
-                                <span onClick={this.isEditTempat}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
-                            }
-
-                            ,
-                            telah dilakukan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {pt?.data && (<span>{pt.data.nama}</span>)}, yang dihadiri oleh:
-
-                            {/* <ol>
-                                {dataLaporan.data?.peserta_penetapan_sanksi?.map((value) =>
-                                    <li>
-                                        {value.nama}
-                                        <button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
-                                            onClick={() => {
-                                                this.setState({
-                                                    selectedPeserta: value._id
-                                                })
-                                                this.setModalRemovePeserta()
-                                            }} />
-                                    </li>)}
-                            </ol> */}
-                        </p>
-                        <p>
-                            Berdasarkan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {pt?.data && (<span>{pt.data.nama}</span>)}, disampaikan sebagai berikut:
-
-                            <ol className='mt-3'>
-                                <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi  {pt?.data && (<span>{pt.data.nama}</span>)}, tanggal
-                                    {/* {setTanggal === true || this.state?.setTanggal === true ?
-                                        <span> &nbsp;{moment(tanggal || this.state?.tanggal).format("DD-MM-YYYY")}</span>
-                                        :
-                                        <span> &nbsp;....... &nbsp;</span>
-                                    } */}
-                                    {dataSuratBA?.isEditTanggal_2 &&
-                                        <span style={{ textIndent: "0rem" }}>
-                                            <DatePicker
-                                                selected={tanggal_2 ? new Date(tanggal_2) : tanggal_2}
-                                                onChange={(tanggal_2) => {
-                                                    this.setState({ tanggal_2, setTanggal_2: true }, this.setDataSuratBA)
-                                                }}
-                                                dateFormat="dd/MM/yyyy"
-                                                placeholderText="Isi Tanggal"
-                                                locale={id}
-                                                className="form-control bg-white"
-                                            />
-                                            <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTanggal_2} />
-                                            <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={this.isEditTanggal_2}
-                                            />
-                                        </span>
-                                    }
-                                    {setTanggal_2 === true || this.state?.setTanggal_2 === true ?
-                                        <span onClick={this.isEditTanggal_2}> {moment(tanggal_2 || this.state?.tanggal_2).locale("id").format("dddd")}, tanggal&nbsp;{moment(tanggal_2 || this.state?.tanggal_2).format("D")}&nbsp; bulan &nbsp;{moment(tanggal_2 || this.state?.tanggal_2).format("MMMM")} tahun &nbsp;{moment(tanggal_2 || this.state?.tanggal_2).format("YYYY")},</span> :
-                                        <span onClick={this.isEditTanggal_2}><strong>&nbsp;[Mohon Diisi] &nbsp;</strong></span>
-                                    }
-                                </li>
-                                <li>Telah dilakukan pembahasan rekomendasi mengenai fakta-fakta yang ditemukan Tim EKPT Ditjen Diktiristek, dengan temuan sebagai berikut:</li>
-                            </ol>
-                        </p>
-                        <div className='table-a my-4' >
-                            <table>
-                                <thead >
-                                    <tr>
-                                        <th rowspan="2">NO</th>
-                                        <th rowspan="2">NAMA DAN IZIN PRODI</th>
-                                        <th colspan="3">PELANGGARAN TERHADAP PERMENDIKBUD NO.7 TAHUN 2020</th>
-                                        <th rowspan="2">SIMPULAN</th>
-                                        <th rowspan="2">REKOMENDASI</th>
-                                    </tr>
-                                    <tr>
-                                        <th>PASAL</th>
-                                        <th>BUTIR PELANGGARAN</th>
-                                        <th>DESKRIPSI PELANGGARAN</th>
-                                    </tr>
-                                </thead>
-                                <tbody>
-                                    {dataPelanggaran?.data?.map((e, i) => (
-                                        <tr key={e._id}>
-                                            <td>{++i}</td>
-                                            {pt.data && (<td >{pt.data.nama}</td>)}
-                                            <td>{e.pasal}</td>
-                                            <td>{e.butir_pelanggaran}</td>
-                                            <td>{e.pelanggaran}</td>
-                                            <td >
-                                                <ContentEditable
-                                                    html={descPelanggaran[e._id]?.simpulan || ""}
-                                                    disabled={false}
-                                                    onChange={(evt) => {
-                                                        this.updateValueSimpulan(evt, e._id), this.setDataSuratBA()
-
-                                                    }}
-                                                />
-                                            </td>
-                                            <td style={{ maxWidth: "80px" }}>
-                                                {`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}
-                                            </td>
-                                        </tr>
-                                    ))}
-                                </tbody>
-                            </table>
-                        </div>
-                        <p>
-                            <ol start="3">
-                                <li>Temuan Lain:
-                                    {this.props.dataSuratBA?.isEditTemuanLain ?
-                                        <span>
-                                            <input style={{ height: "30px", width: "250px" }} type='textarea' defaultValue={""} ref="inputTemuan"
-                                            />
-                                            <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => {
-                                                this.updateValueTemuanLain(), this.isEditTemuanLain()
-                                            }} />
-                                            <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditTemuanLain} />
-                                        </span>
-
-                                        : <Button onClick={this.isEditTemuanLain} className=" p-0 m-0" color="success">Input Data</Button>}
-                                    <ol type="a">
-                                        {
-                                            // dataSuratBA?.temuanLain?.map((value, index) =>
-                                            //     <li>
-                                            //         {value}
-                                            //         <button onClick={removeTemuanLain(index)} className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
-                                            //         />
-                                            //     </li>) ||
-                                            this.state?.temuanLain?.map((value, index) =>
-                                                <li>
-                                                    {value}
-                                                    <button onClick={
-                                                        this.removeTemuanLain(index)
-                                                    } className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
-                                                    />
-                                                </li>)}
-                                    </ol>
-                                </li>
-                                <li>Hal-hal yang memberatkan, sebagai berikut:
-                                    {this.props.dataSuratBA?.isEditKeberatan ?
-                                        <span>
-                                            <input style={{ height: "30px", width: "250px" }} type='text' defaultValue={""} ref="inputMemberatkan" />
-                                            <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.updateValueMemberatkan(), this.isEditKeberatan() }} />
-                                            <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditKeberatan} />
-                                        </span>
-
-                                        : <Button onClick={this.isEditKeberatan} className=" p-0 m-0" color="success">Input Data</Button>}
-                                    <ol type="a">
-                                        {
-                                            // dataSuratBA?.memberatkan?.map((value) =>
-                                            //     <li>
-                                            //         {value}
-                                            //     </li>)
-                                            //     ||
-                                            this.state?.memberatkan?.map((value, index) =>
-                                                <li>
-                                                    {value}
-                                                    <button onClick={
-                                                        this.removeMemberatkan(index)
-                                                    } className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
-                                                    />
-                                                </li>
-                                            )}
-                                    </ol>
-                                </li>
-                                <li>hal-hal yang meringankan, sebagai berikut:
-                                    {this.props.dataSuratBA?.isEditMeringankan ?
-                                        <span>
-                                            <input type='text' defaultValue={""} ref="inputMeringankan" />
-                                            <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.updateValueMemringankan(), this.isEditMeringankan() }} />
-                                            <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditMeringankan} />
-                                        </span>
-
-                                        : <Button onClick={this.isEditMeringankan} className=" p-0 m-0" color="success">Input Data</Button>}
-                                    <ol type="a">
-                                        {
-                                            // dataSuratBA?.meringankan?.map((value) =>
-                                            //     <li>
-                                            //         {value}
-                                            //     </li>)
-                                            //     ||
-                                            this.state?.meringankan?.map((value, index) =>
-                                                <li>
-                                                    {value}
-                                                    <button onClick={
-                                                        this.removeMeringankan(index)
-                                                    } className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right"
-                                                    />
-                                                </li>
-                                            )}
-                                    </ol>
-                                </li>
-                                <li>
-                                    Berdasarkan pembahasan yang dilakukan, disepakati untuk merekomendasikan <strong>“Sanksi Administratif berupa
-                                        {dataSuratBA?.isEditSanksi &&
-                                            <span>
-                                                <input type='text'
-                                                    defaultValue=""
-                                                    ref="inputsanksi"
-                                                    onChange={() => {
-                                                        this.setState({ sanksi: this.refs.inputsanksi.value }, this.setDataSuratBA)
-                                                    }}
-                                                />
-                                                <button className='bg-transparent button-transparent border-0 fas fa-times-circle text-danger' onClick={this.isEditSanksi} />
-                                                <button className='bg-transparent button-transparent border-0 fas fa-check-circle text-success' onClick={() => { this.isEditSanksi() }} />
-                                            </span>
-                                        }
-                                        {dataSuratBA?.sanksi || this.state?.sanksi ?
-                                            <span onClick={this.isEditSanksi}>
-                                                &nbsp;{dataSuratBA?.sanksi || this.state?.sanksi}
-                                            </span>
-                                            :
-                                            <span onClick={this.isEditSanksi}>[Mohon Diisi]</span>
-                                        }
-                                    </strong>
-                                </li>
-                            </ol>
-                        </p>
-                        <p>
-                            Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
-                        </p>
-                        {/* {ENV === "production" &&
-                            <CopyToClipboard
-                                text={`https://sidali.kemdikbud.go.id/signature/pleno-sanksi/${dataLaporan.data?._id}`}
-                                options={{ asHtml: true }}
-                            >
-                                <div>
-                                    <span className="btn-radius">
-                                        <Button color id="Popover1" className="ml-0 mt-2 mb-2 btn-v1-outline-purple" onClick={() => {
-                                            this.CloseCopied()
-                                        }} ><span><em className="fas fa-project-diagram float-left mt-1 mr-1" />&nbsp;Link Dokumen</span>
-                                        </Button>
-                                    </span>
-                                    <Popover placement="bottom" isOpen={this.state.copied} target="Popover1" toggle={this.Copied}>
-                                        <PopoverHeader>Link Berhasil Disalin</PopoverHeader>
-                                    </Popover>
-                                </div>
-
-                            </CopyToClipboard>
-                        }
-                        {ENV === "development" &&
-                            <CopyToClipboard
-                                text={`https://dev.sidali.kemdikbud.go.id/signature/pleno-sanksi/${dataLaporan.data?._id}`}
-                                options={{ asHtml: true }}
-                            >
-                                <div>
-                                    <span className="btn-radius">
-                                        <Button color id="Popover1" className="ml-0 mt-2 mb-2 btn-v1-outline-purple" onClick={() => {
-                                            this.CloseCopied()
-                                        }} ><span><em className="fas fa-project-diagram float-left mt-1 mr-1" />&nbsp;Link Dokumen</span>
-                                        </Button>
-                                    </span>
-                                    <Popover placement="bottom" isOpen={this.state.copied} target="Popover1" toggle={this.Copied}>
-                                        <PopoverHeader>Link Berhasil Disalin</PopoverHeader>
-                                    </Popover>
-                                </div>
-
-                            </CopyToClipboard>
-                        } */}
-                        <div  >
-                            <div className='header-ttd signature-border pt-1 pb-1'>
-                                <text className='header-ttd font-weight-bold '>PESERTA RAPAT PENYUSUNAN REKOMENDASI</text>
-                            </div>
-                            {/* <div id="ttd">
-                                {dataLaporan
-                                    ? dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => (
-                                        <div className='ttd-div'>
-                                            <div className='sign-ttd'>
-                                                <img
-                                                    className='sign-ttd'
-                                                    src={value.ttd.path} />
-                                            </div>
-                                            <div className='sign-nama'>
-                                                <text>
-                                                    {value.nama}
-                                                </text>
-                                            </div>
-                                        </div>
-                                    )) : ""}
-                            </div> */}
-                        </div>
-                    </div>
-                </div>
-            </div >
-        );
-    }
-}
-
-// const mapStateToProps = (state) => ({ user: state.user, token: state.token });
-// export default connect(mapStateToProps)(BeritaAcara)
-export default BeritaAcara_Bypass

+ 0 - 201
components/BypassII/SuratBA_A.js

@@ -1,201 +0,0 @@
-import React, { Component } from 'react';
-import SignatureCanvas from 'react-signature-canvas'
-import { getOneLaporan, updateLaporan } from "@/actions/pelaporan";
-import { Row, Col, Input, FormGroup, Label, Progress } from "reactstrap";
-import { connect } from "react-redux";
-import moment from "moment";
-import 'moment/locale/id'
-moment.locale('id')
-import { getAutoSave } from "@/actions/autosave";
-
-
-
-
-class ComponentToPrint extends React.Component {
-    formData = {}
-    constructor(props) {
-        super(props);
-        this.state = {
-            dataLaporan: {},
-
-        };
-    }
-
-    static getInitialProps = async ({ query }) => {
-        return { query };
-    };
-
-
-    componentDidMount = async () => {
-        // const { query, token } = this.props;
-        // const { id } = query;
-        // const dataLaporan = await getOneLaporan(token, id);
-        // const getDataSave = await getAutoSave({ id, laporan: true });
-        // const autoSaveDataSuratBA = getDataSave.data?.PenetapanSanksi?.dataSuratBA;
-        // const dataPelanggaran = getDataSave.data?.PenetapanSanksi?.dataPelanggaran?.data;
-        // this.setState({ dataLaporan });
-        // this.setState(dataPelanggaran)
-        // this.setState(autoSaveDataSuratBA)
-
-    };
-
-    render() {
-        const { dataLaporan, dataSuratBA, dataPelanggaran, pt } = this.props   
-        return (
-            <page>
-                <div className='BA-Header'>
-                    <img className='BA-logo' src="/static/img/logo-single-1-login.png" alt="logo" />
-                    <h3 >LAPORAN HASIL EVALUASI DAN PEMBAHASAN</h3>
-                    {pt?.data && (<h3 className='text-uppercase' >{pt.data.nama}</h3>)}
-                </div>
-                <div className='BA-body pt-3'>
-                    <p>
-                        Pada hari ini
-                        {dataSuratBA?.setTanggal === true || this.state?.setTanggal === true ?
-                            <span > {moment(dataSuratBA?.tanggal || this.state?.tanggal).locale("id").format("dddd")}, tanggal&nbsp;{moment(dataSuratBA?.tanggal || this.state?.tanggal).format("D")}&nbsp; bulan &nbsp;{moment(dataSuratBA?.tanggal || this.state?.tanggal).format("MMMM")} tahun &nbsp;{moment(dataSuratBA?.tanggal || this.state?.tanggal).format("YYYY")},</span> :
-                            <span> &nbsp;- &nbsp;</span>
-                        }
-                        bertempat di
-                        {dataSuratBA?.tempat || this.state?.tempat ?
-                            <span>
-                                &nbsp;{dataSuratBA?.tempat || this.state?.tempat}
-                            </span>
-                            :
-                            <span>-</span>
-                        }
-                        ,
-                        telah dilakukan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {pt?.data && (<span>{pt.data.nama}</span>)}, yang dihadiri oleh:
-                        {/* <ol>
-                            {dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => <li>{value.nama}</li>)}
-                        </ol> */}
-                    </p>
-                    <p>
-                        Berdasarkan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {pt.data && (<span>{pt.data.nama}</span>)}, disampaikan sebagai berikut:
-
-                        <ol className='mt-3'>
-                            <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi  {pt.data && (<span>{pt.data.nama}</span>)}, tanggal
-                                {dataSuratBA?.setTanggal_2 === true || this.state?.setTanggal_2 === true ?
-                                    <span> &nbsp;{moment(dataSuratBA?.tanggal_2 || this.state?.tanggal_2).format("DD-MM-YYYY")}</span>
-                                    :
-                                    <span> &nbsp;....... &nbsp;</span>
-                                }
-                            </li>
-                            <li>Telah dilakukan pembahasan rekomendasi mengenai fakta-fakta yang ditemukan Tim EKPT Ditjen Diktiristek, dengan temuan sebagai berikut:</li>
-                        </ol>
-                    </p>
-                    <div className='table-a my-4' >
-                        <table >
-                            <thead>
-                                <tr>
-                                    <th rowspan="2">NO</th>
-                                    <th rowspan="2">NAMA DAN IZIN PRODI</th>
-                                    <th colspan="3">PELANGGARAN TERHADAP PERMENDIKBUD NO.7 TAHUN 2020</th>
-                                    <th rowspan="2">SIMPULAN</th>
-                                    <th rowspan="2">REKOMENDASI</th>
-                                </tr>
-                                <tr>
-                                    <th>PASAL</th>
-                                    <th>BUTIR PELANGGARAN</th>
-                                    <th>DESKRIPSI PELANGGARAN</th>
-                                </tr>
-                            </thead>
-                            <tbody>
-                                {dataPelanggaran?.data?.map((e, i) => (
-                                    <tr key={e._id}>
-                                        <td>{++i}</td>
-                                        {pt.data && (<td className='BA-header'>{pt.data.nama}</td>)}
-                                        <td>{e.pasal}</td>
-                                        <td>{e.butir_pelanggaran}</td>
-                                        <td>{e.pelanggaran}</td>
-                                        {this.state.descPelanggaran ?
-                                            (
-                                                <td style={{ minWidth: "215px" }} >{"" || dataSuratBA?.descPelanggaran[e?._id]?.simpulan
-                                                    || this.state.descPelanggaran[e?._id]?.simpulan
-                                                }</td>
-                                            ) :
-                                            (<td style={{ minWidth: "215px" }} >{"" || dataSuratBA?.descPelanggaran[e?._id]?.simpulan
-                                                // || this.state.descPelanggaran[e?._id]?.simpulan
-                                            }</td>)
-                                        }
-                                        {/* <td style={{ minWidth: "215px" }} >{"" || dataSuratBA?.descPelanggaran[e?._id]?.simpulan
-                                            || this.state.descPelanggaran[e?._id]?.simpulan
-                                        }</td> */}
-                                        <td style={{ minWidth: "215px" }}>{`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}</td>
-                                    </tr>
-
-                                ))}
-                            </tbody>
-                        </table>
-                    </div>
-                    <p>
-                        <ol start="3">
-                            <li>Temuan Lain:
-                                <ol type="a">
-                                    {dataSuratBA?.temuanLain || this.state?.temuanLain ?
-                                        <span>{dataSuratBA?.temuanLain || this.state?.temuanLain.map((value) => <li>{value}</li>)}</span>
-                                        : "Belum Diisi"}
-                                </ol>
-                            </li>
-                            <li>Hal-hal yang memberatkan, sebagai berikut:
-                                <ol type="a">
-                                    {dataSuratBA?.memberatkan || this.state?.memberatkan ?
-                                        <span>{dataSuratBA?.memberatkan || this.state?.memberatkan.map((value) => <li>{value}</li>)}</span>
-                                        : "Belum Diisi"}
-                                </ol>
-                            </li>
-                            <li>hal-hal yang meringankan, sebagai berikut:
-                                <ol type="a">
-                                    {dataSuratBA?.meringankan || this.state?.meringankan ?
-                                        <span>{dataSuratBA?.meringankan || this.state?.meringankan.map((value) => <li>{value}</li>)}</span>
-                                        : "Belum Diisi"}
-                                </ol>
-                            </li>
-                            <li>
-                                Berdasarkan pembahasan yang dilakukan, disepakati untuk merekomendasikan <strong contenteditable='true'>“Sanksi Administratif berupa
-                                    {dataSuratBA?.sanksi || this.state?.sanksi ?
-                                        <span>{dataSuratBA?.sanksi || this.state?.sanksi}</span>
-                                        : "Belum Diisi"}
-                                    ”.</strong>
-                            </li>
-                        </ol>
-                    </p>
-                    <p>
-                        Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
-                    </p>
-                    <div className='mt-5'>
-                        <div className='header-ttd signature-border pt-1 pb-1'>
-                            <text className='header-ttd font-weight-bold '>PESERTA RAPAT PENYUSUNAN REKOMENDASI</text>
-                        </div>
-                        <div id="ttd">
-                            {dataLaporan
-                                ? dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => (
-                                    <div className='ttd-div'>
-                                        <div className='sign-ttd'>
-                                            <img
-                                                className='sign-ttd'
-                                                src={value.ttd.path} />
-                                        </div>
-                                        <div className='sign-nama'>
-                                            <text>
-                                                {value.nama}
-                                            </text>
-                                        </div>
-                                    </div>
-                                )) : ""}
-                        </div>
-                    </div>
-
-                </div>
-
-
-
-                <div id="footer">
-                    <span>*LAPORAN HASIL EVALUASI DAN PEMBAHASAN …………. – …bulan&tahun…</span>
-                </div>
-            </page>
-
-
-        );
-    }
-}
-export default ComponentToPrint

+ 0 - 162
components/BypassII/TablePenetapanSanksi.js

@@ -1,162 +0,0 @@
-import React, { Component } from "react";
-import { Card, Table } from "reactstrap";
-import { getPelanggaran } from "@/actions/pelanggaran";
-import { connect } from "react-redux";
-import Button from "reactstrap/lib/Button";
-import { getOneLaporan, updateLaporan } from "@/actions/pelaporan";
-import Router from "next/router";
-import { ToastContainer, toast } from "react-toastify";
-import { getAutoSave } from "@/actions/autosave";
-import Datatable from "@/components/Tables/Datatable";
-
-
-
-
-export class TablePenetapanSanksi_Bypass extends Component {
-	checkedData = [];
-
-	constructor(props) {
-		super(props);
-		this.state = {
-			// pelanggaran: null,
-			checkedData: [],
-			labelSanksi: [],
-			btnDelegasi: false,
-			trigger: false,
-		};
-		this.onHandleChange = this.onHandleChange.bind(this)
-	}
-
-	componentDidMount = async () => {
-		const { token } = this.props;
-		// const { id } = query;
-		const pelanggaran = await getPelanggaran(token);
-		// const getDataSave = await getAutoSave({ id, laporan: true });
-		// const getDataPelanggaranfromAutoSave = getDataSave.data?.PenetapanSanksi?.dataPelanggaran;
-		// if (this.state.trigger === false || this.state.trigger === true) {
-		// 	if (getDataPelanggaranfromAutoSave === "null")
-		// 		this.setState({ checkedData: [] })
-		// 	else{
-		// 		this.setState({
-		// 			checkedData: getDataPelanggaranfromAutoSave ? getDataPelanggaranfromAutoSave?.data?.map(e => e._id) : [],
-		// 			labelSanksi: getDataPelanggaranfromAutoSave ? getDataPelanggaranfromAutoSave?.data?.map(e => ({ value: e._id, labelSanksi: e.label_sanksi })) : []
-		// 		})
-		// 	}}
-			this.setState({
-				pelanggaran
-			});
-	};
-
-	onHandleChange = (evt) => {
-		const checked = evt.target.checked // item terceklis true/false
-		const item = evt.target.value;
-		if (checked)
-			this.state.checkedData.push(item)
-		else this.state.checkedData = this.state.checkedData.filter((e) => e != item)
-		this.setState({ trigger: !this.state.trigger })
-
-		this.props.setCheckedData(this.state.checkedData);
-	};
-
-	setLabelSanksi = (evt, label_sanksi) => {
-		const checked = evt.target.checked;
-		const item = evt.target.value;
-		if (checked) this.state.labelSanksi.push({ value: item, labelSanksi: label_sanksi });
-		else this.state.labelSanksi = this.state.labelSanksi.filter((e) => e.value != item);
-	}
-
-	ondelegasi = () => {
-		this.props.handleDelegasi(this.state)
-	}
-
-	render() {
-		const { pelanggaran, labelSanksi, checkedData } = this.state;
-		return (
-			<div className="card b ">
-				<div className="card-body card-over">
-					{pelanggaran && <Datatable options={{
-						responsive: false, ordering: true,
-						paging: false,
-						ordering: false,
-					}}>
-						<table className="table w-100" >
-							<thead>
-								<tr>
-									<th>No</th>
-									<th>Jenis Pelanggaran</th>
-									<th>Sanksi</th>
-									<th></th>
-								</tr>
-							</thead>
-							<tbody>
-								{pelanggaran?.data?.map((jp, index) =>
-									<tr key={jp._id}>
-										<td>
-											<label>{index + 1}</label>
-										</td>
-										<td>
-											<div className="media align-items-center">
-												<div className="media-body d-flex">
-													<div>
-														<p>{jp.pelanggaran}</p>
-														<p>Jenis Sanksi Administratif : {jp.label_sanksi}</p>
-													</div>
-												</div>
-											</div>
-										</td>
-										<td>
-											<div className="media align-items-center">
-												<div className="media-body d-flex">
-													<div>
-														<p>{jp.sanksi}</p>
-														<p>Keterangan : {jp.keterangan_sanksi}</p>
-													</div>
-												</div>
-											</div>
-										</td>
-										<td>
-											<div className="checkbox c-checkbox">
-												<label>
-													<input type="checkbox" checked={checkedData.find(id => id === jp._id)} value={jp._id} onChange={(evt) => {
-														this.onHandleChange(evt)
-														this.setLabelSanksi(evt, jp.label_sanksi)
-														// this.props.handleAutoSave()
-													}} />
-													<span className="fa fa-check"></span>
-												</label>
-											</div>
-										</td>
-									</tr>
-								)
-								}
-							</tbody>
-
-						</table>
-
-
-					</Datatable>
-
-					}
-					{/* <div className="float-right m-2 ">
-						{this.props.user?.role.id === 2020 ? (
-							labelSanksi.length && labelSanksi.filter((e) => e.labelSanksi === "Ringan" || e.labelSanksi === "Sedang").length === labelSanksi.length ? (
-								<Button className="btn-login float-right" color onClick={this.ondelegasi} >
-									<span className="font-color-white">
-										Delegasi ke LLDIKTI
-									</span>
-								</Button>
-							) : ("")
-						) : ("")
-						}
-
-					</div> */}
-
-
-				</div>
-			</div>
-		);
-	}
-}
-
-const mapStateToProps = (state) => ({ user: state.user, token: state.token });
-export default connect(mapStateToProps)(TablePenetapanSanksi_Bypass);

+ 0 - 443
components/BypassII/UploadSurat.js

@@ -1,443 +0,0 @@
-import React, { Component } from "react";
-import { Row, Col, Input, FormGroup, Label, Progress, Button } from "reactstrap";
-import Select from "react-select";
-import DatePicker from "react-datepicker";
-import "react-datepicker/dist/react-datepicker.css";
-// import "react-datepicker/dist/react-datepicker.css";
-import ms from "ms";
-import { addDays, addMonths } from 'date-fns';
-import id from 'date-fns/locale/id';
-// registerLocale('id', id)
-import { getAutoSave, inputAutoSave } from "@/actions/autosave";
-import ComponentToPrint from "./SuratBA_A";
-import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
-import Link from "next/dist/client/link";
-
-let Dropzone = null;
-class DropzoneWrapper extends Component {
-	state = {
-		isClient: false,
-	};
-	componentDidMount = () => {
-		Dropzone = require("react-dropzone").default;
-		this.setState({ isClient: true });
-	};
-	render() {
-		return Dropzone ? <Dropzone {...this.props}>{this.props.children}</Dropzone> : null;
-	}
-}
-const formatOptionLabel = ({ value, sanksi, label_sanksi }) => (
-	<div style={{ display: "flex" }}>
-		<span className="">{value}</span>
-		<div style={{ marginLeft: "10px", color: "#adaca8" }}>{label_sanksi}</div>
-	</div>
-);
-
-export class UploadSurat_Bypass extends Component {
-	constructor(props) {
-		super(props);
-		const tmt_awal = new Date();
-		this.state = {
-			files: [],
-			nomorSanksi: "",
-			keterangan: "",
-			listSanksi: "",
-			startDay: tmt_awal,
-			maxDay: "",
-			awalTMT: "",
-			akhirTMT: "",
-			tidakPerluTMTCheck: false,
-			terimaSuratSanksi: "",
-			tglAkhirKeberatan: "",
-			filesTandaTerimaSS: [],
-			selectedFile: {}
-
-		};
-	}
-
-	onDrop = (selectedFile) => {
-		this.setState({
-			selectedFile: selectedFile.map((file) =>
-				Object.assign(file, {
-					preview: URL.createObjectURL(file),
-				})
-			),
-			stat: "Added " + selectedFile.length + " file(s)",
-		});
-		const selectFile = this.state.selectedFile
-		this.setState(prevState => ({
-			files: [...prevState.files, ...selectFile]
-		}))
-	};
-	onDropTandaTerimaSS = (filesTandaTerimaSS) => {
-		this.setState({
-			filesTandaTerimaSS: filesTandaTerimaSS.map((file) =>
-				Object.assign(file, {
-					preview: URL.createObjectURL(file),
-				})
-			),
-			stat: "file tanda terima sanksi " + filesTandaTerimaSS.length + " file",
-		});
-		this.props.setUploadSuratSanksi(this.state);
-	};
-
-	componentDidMount = async () => {
-		const { query, token } = this.props;
-		// const { id } = query;
-		// const getDataSave = await getAutoSave({ id, laporan: true });
-		// const autosaveDataUpload = getDataSave.data?.PenetapanSanksi?.dataUpload;
-		// this.setState(autosaveDataUpload)
-	}
-
-	clearFiles = (e) => {
-		e.preventDefault();
-		e.stopPropagation();
-		this.setState({
-			stat: this.state.files.length ? this.state.files.length + " file(s) cleared." : "No files to clear.",
-		});
-		this.setState({
-			files: [],
-		});
-		this.props.setUploadSuratSanksi(this.state);
-	};
-	clearFilesTerimaSanksi = (e) => {
-		e.preventDefault();
-		e.stopPropagation();
-		this.setState({
-			stat: this.state.filesTandaTerimaSS.length ? this.state.filesTandaTerimaSS.length + " file(s) cleared." : "No files to clear.",
-		});
-		this.setState({
-			filesTandaTerimaSS: [],
-		});
-		this.props.setUploadSuratSanksi(this.state);
-	};
-
-	// handleAutoSave = () => {
-	// 	this.props.handleAutoSave()
-	// }
-
-	setUploadSuratSanksi = () => {
-		this.props.setUploadSuratSanksi(this.state);
-	};
-
-	setNomorSanksi = (e) => {
-		// this.setState({ nomorSanksi: e.target.value }, this.setUploadSuratSanksi);
-		this.state.nomorSanksi = e.target.value
-		this.setUploadSuratSanksi()
-		// this.handleAutoSave()
-
-	};
-
-	setKeterangan = (e) => {
-		// this.setState({ keterangan: e.target.value }, this.setUploadSuratSanksi);
-		this.state.keterangan = e.target.value
-		this.setUploadSuratSanksi()
-		// this.handleAutoSave()
-	};
-	setAkhirSanksi = (akhirTMT) => {
-		// this.setState({ keterangan: e.target.value }, this.setUploadSuratSanksi);
-		this.state.akhirTMT = akhirTMT
-		this.setUploadSuratSanksi()
-		// this.handleAutoSave()
-	};
-
-	setListSanksi = (ls) => {
-		this.setState({ listSanksi: ls.target.value }, this.setUploadSuratSanksi);
-	};
-	handleChangeListSanksi = (listSanksi) => {
-		this.setState({ listSanksi }, this.setUploadSuratSanksi);
-	};
-	handleTmtCheck = () => {
-		// this.setState({ tmtCheck: !this.state.tmtCheck }, this.setUploadSuratSanksi);
-		this.state.tidakPerluTMTCheck = !this.state.tidakPerluTMTCheck
-		this.setUploadSuratSanksi()
-		// this.handleAutoSave()
-	}
-	render() {
-		const { files, terimaSuratSanksi, tglAkhirKeberatan, filesTandaTerimaSS, tidakPerluTMTCheck } = this.state;
-		const removeFile = file => () => {
-			const newFiles = [...files]
-			newFiles.splice(newFiles.indexOf(file), 1)
-			this.setState({
-				files: newFiles,
-			});
-		}
-		const removeFileTandaTerimaSS = file => () => {
-			const newFiles = [...filesTandaTerimaSS]
-			newFiles.splice(newFiles.indexOf(file), 1)
-			this.setState({
-				filesTandaTerimaSS: newFiles,
-			});
-		}
-		const thumbs = files.map((file, index) => (
-			<p>
-				<em className="far fa-file" />&nbsp;&nbsp;{file.name}
-				<button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right" onClick={removeFile(file)} />
-			</p>
-		));
-		const thumbsTandaTerimaSS = filesTandaTerimaSS.map((file, index) => (
-			<p>
-				<em className="far fa-file" />&nbsp;&nbsp;{file.name}
-				<button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right" onClick={removeFileTandaTerimaSS(file)} />
-			</p>
-		));
-		return (
-			<form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
-				<FormGroup row>
-					<label className="col-md-4 col-form-label">Nomor Surat<span className="text-danger">*</span></label>
-					<div className="col-md-8">
-						<Input type="text" value={this.state.nomorSanksi} onChange={(e) => { this.setNomorSanksi(e) }} />
-					</div>
-				</FormGroup>
-				<FormGroup row className="mt-3">
-					<label className="col-md-4 col-form-label">Keterangan<span className="text-danger">*</span></label>
-					<div className="col-md-8">
-						<Input type="textarea" value={this.state.keterangan} onChange={(e) => { this.setKeterangan(e) }} required />
-					</div>
-				</FormGroup>
-				<FormGroup row>
-					<label className="col-md-4 col-form-label">Tidak Perlu TMT</label>
-					<div className="col-md-8 mt-2">
-						<div className="checkbox c-checkbox">
-							<label>
-								<Input type="checkbox" onChange={() => this.handleTmtCheck()} defaultChecked={this.state.tidakPerluTMTCheck} />
-								<span className="fa fa-check"></span></label>
-						</div>
-					</div>
-				</FormGroup>
-				{/* {this.state.tidakPerluTMTCheck && (
-					<FormGroup row className="mt-3">
-						<label className="col-md-4 col-form-label">Tanggal Penetapan Sanksi</label>
-						<span className="col-sm-3 float-left">
-							<DatePicker
-								selected={this.state.awalTMT ? new Date(this.state.awalTMT) : this.state.awalTMT}
-								onChange={(awalTMT) => {
-									this.setState({ awalTMT }, this.setUploadSuratSanksi)
-								}}
-								dateFormat="dd/MM/yyyy"
-								maxDate={new Date(this.state.startDay)}
-								placeholderText="Isi Tanggal"
-								locale={id}
-								className="form-control bg-white"
-							/>
-						</span>
-					</FormGroup>
-				)} */}
-				{!this.state.tidakPerluTMTCheck && (
-					<FormGroup row className="mt-3">
-						<label className="col-md-4 col-form-label">Isi TMT</label>
-						<Row >
-							<Col>
-								<FormGroup>
-									<span className="ml-3">
-										<DatePicker
-											selected={this.state.awalTMT ? new Date(this.state.awalTMT) : this.state.awalTMT}
-											onChange={(awalTMT) => {
-												this.setState({ awalTMT }, this.setUploadSuratSanksi)
-											}}
-											dateFormat="dd/MM/yyyy"
-											maxDate={new Date(this.state.startDay)}
-											placeholderText="Dari Tanggal"
-											locale={id}
-											className="form-control bg-white"
-										/>
-									</span>
-
-								</FormGroup>
-							</Col>
-							<Col>
-								<FormGroup>
-									<span className="ml-3">
-										<DatePicker
-											selected={this.state.akhirTMT ? new Date(this.state.akhirTMT) : this.state.akhirTMT}
-											// onChange={(akhirTMT, e) => {
-											// 	this.setState({ akhirTMT }, this.setUploadSuratSanksi(e), this.props.handleAutoSave(e))
-											// }}
-											onChange={(akhirTMT) => { this.setAkhirSanksi(akhirTMT) }}
-											dateFormat="dd/MM/yyyy"
-											minDate={new Date(this.state.awalTMT)}
-											maxDate={addMonths(new Date(this.state.awalTMT), 6)}
-											placeholderText="Sampai tanggal"
-											locale={id}
-											className="form-control bg-white"
-										/>
-									</span>
-								</FormGroup>
-							</Col>
-						</Row>
-					</FormGroup>
-				)}
-				{!this.state.tidakPerluTMTCheck && (
-					<FormGroup row className="mt-1">
-						<label className="col-md-4 col-form-label">TMT berlaku</label>
-						<div className="col-md-8 mt-2">
-							<b>{this.state.awalTMT ? moment(this.state.awalTMT).format("DD-MM-YYYY") : "-"}</b> hingga <b>{this.state.akhirTMT ? moment(this.state.akhirTMT).format("DD-MM-YYYY") : "-"}</b>
-						</div>
-					</FormGroup>
-				)}
-				{!this.state.tidakPerluTMTCheck && (
-					<FormGroup row className="mt-1">
-						<label className="col-md-4 col-form-label">TMT</label>
-						<div className="col-md-8 mt-2">
-							<b>{this.state.akhirTMT ? moment(this.state.akhirTMT).diff(this.state.awalTMT, 'month') : "-"} bulan</b>
-						</div>
-					</FormGroup>
-				)}
-				<FormGroup row className="mt-3">
-					<label className="col-md-4 col-form-label">List sanksi </label>
-					<div className="col-md-8">
-						<Select
-							options={this.props.listSanksi.map(e => ({ value: `Sanksi Administratif ${e.split(";")[0]} - ${e.split(";")[1]}` }))}
-							isMulti
-							formatOptionLabel={formatOptionLabel}
-							onChange={(e) => {
-								this.handleChangeListSanksi(e);
-							}}
-						/>
-					</div>
-				</FormGroup>
-				<FormGroup row>
-					<label className="col-md-4 col-form-label">
-						Dokumen Surat Sanksi<span className="text-danger">*</span>
-					</label>
-					<div className="col-md-8">
-						<DropzoneWrapper className="" onDrop={this.onDrop}>
-							{({ getRootProps, getInputProps, isDragActive }) => {
-								return (
-									<div {...getRootProps()} className={"dropzone card" + (isDragActive ? "dropzone-drag-active" : "")}>
-										<input {...getInputProps()} />
-										<div className="dropzone-style-1">
-											<div className="center-ver-hor dropzone-previews flex">
-												{this.state.files.length > 0 ? (
-													<div className="text-center fa-2x icon-cloud-upload mr-2 ">
-														<h5 className="text-center dz-default dz-message">Klik untuk tambah file</h5>
-													</div>
-												) : (
-													<div className="text-center fa-2x icon-cloud-upload mr-2 ">
-														<h5 className="text-center dz-default dz-message">Klik untuk upload dokumen</h5>
-													</div>
-												)}
-											</div>
-										</div>
-										<div className="d-flex align-items-center">
-											<small className="ml-auto">
-												<button type="button" className="btn btn-link" onClick={this.clearFiles}>
-													Reset dokumen
-												</button>
-											</small>
-										</div>
-									</div>
-								);
-							}}
-						</DropzoneWrapper>
-						<div>
-							{thumbs}
-						</div>
-						<p className="mrgn-top-5 font-color-black">Ukuran setiap dokumen maksimal 15mb</p>
-					</div>
-				</FormGroup>
-				{/* <FormGroup row>
-					<label className="col-md-4 col-form-label">
-						Dokumen Laporan Evaluasi dan Pembahasan
-					</label>
-					<div className="col-md-8">
-
-						<div style={{ display: "none" }}>
-							<ComponentToPrint ref={el => (this.componentRef = el)} query={this.props.query} dataPelanggaran={this.props.dataPelanggaran} dataSuratBA={this.props.dataSuratBA} />
-						</div>
-						<ReactToPrint
-							trigger={() => {
-								return <span>
-									<Button color className="btn-labeled-4 mt-0">
-										<h5 className="p-0 mt-2"><em className="fas fa-download mr-2" />Print dan Download</h5>
-									</Button>
-								</span>
-							}}
-							content={() => this.componentRef}
-						/>
-					</div>
-				</FormGroup> */}
-				<FormGroup row className="mt-3">
-					<label className="col-md-4 col-form-label">Tanggal Terima Surat Sanksi<span className="text-danger">*</span></label>
-					<span className="col-sm-8 float-left">
-						<DatePicker
-							selected={this.state.terimaSuratSanksi ? new Date(this.state.terimaSuratSanksi) : this.state.terimaSuratSanksi}
-							onChange={(terimaSuratSanksi) => {
-								this.setState({ terimaSuratSanksi }, this.setUploadSuratSanksi)
-							}}
-							dateFormat="dd/MM/yyyy"
-							minDate={new Date(this.state.awalTMT)}
-							placeholderText="DD/MM/YYYY"
-							locale={id}
-							className="form-control bg-white"
-						/>
-					</span>
-				</FormGroup>
-				<FormGroup row>
-					<label className="col-md-4 col-form-label">
-						Dokumen Tanda Terima Surat Sanksi<span className="text-danger">*</span>
-					</label>
-					<div className="col-md-8">
-						<DropzoneWrapper className="" onDrop={this.onDropTandaTerimaSS}>
-							{({ getRootProps, getInputProps, isDragActive }) => {
-								return (
-									<div {...getRootProps()} className={"dropzone card" + (isDragActive ? "dropzone-drag-active" : "")}>
-										<input {...getInputProps()} />
-										<div className="dropzone-style-1">
-											<div className="center-ver-hor dropzone-previews flex">
-												{this.state.filesTandaTerimaSS.length > 0 ? (
-													<div className="text-center fa-2x icon-cloud-upload mr-2 ">
-														<h5 className="text-center dz-default dz-message">Klik untuk tambah file</h5>
-													</div>
-												) : (
-													<div className="text-center fa-2x icon-cloud-upload mr-2 ">
-														<h5 className="text-center dz-default dz-message">Klik untuk upload dokumen</h5>
-													</div>
-												)}
-											</div>
-										</div>
-										<div className="d-flex align-items-center">
-											<small className="ml-auto">
-												<button type="button" className="btn btn-link" onClick={this.clearFilesTerimaSanksi}>
-													Reset dokumen
-												</button>
-											</small>
-										</div>
-									</div>
-								);
-							}}
-						</DropzoneWrapper>
-						<div>
-							{thumbsTandaTerimaSS}
-						</div>
-						<p className="mrgn-top-5 font-color-black">Ukuran setiap dokumen maksimal 15mb</p>
-					</div>
-				</FormGroup>
-				{!this.state.tidakPerluTMTCheck && (
-					<FormGroup row className="mt-3">
-						<label className="col-md-4 col-form-label">Tanggal Akhir Pengajuan Keberatan<span className="text-danger">*</span>
-							<p>
-								Note : 21 hari kerja
-							</p>
-						</label>
-						<span className="col-sm-8 float-left">
-							<DatePicker
-								selected={this.state.tglAkhirKeberatan ? new Date(this.state.tglAkhirKeberatan) : this.state.tglAkhirKeberatan}
-								onChange={(tglAkhirKeberatan) => {
-									this.setState({ tglAkhirKeberatan }, this.setUploadSuratSanksi)
-								}}
-								dateFormat="dd/MM/yyyy"
-								minDate={new Date(terimaSuratSanksi)}
-								placeholderText="DD/MM/YYYY"
-								locale={id}
-								className="form-control bg-white"
-							/>
-						</span>
-					</FormGroup>
-				)}
-			</form >
-		);
-	}
-}
-
-export default UploadSurat_Bypass;

+ 2 - 2
components/Extras/calendar.view.js

@@ -136,7 +136,7 @@ class Calendar extends Component {
 	}
 
 	handleEventCalendar = async (data) => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',
@@ -197,7 +197,7 @@ class Calendar extends Component {
 	}
 
 	handleSimpan = async (value) => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 144 - 0
components/Layout/MenuReadOnly.js

@@ -0,0 +1,144 @@
+const MenuReadOnly = [
+	{
+		heading: "Main Navigation",
+		translate: "sidebar.heading.HEADER",
+	},
+	{
+		name: "Pemantauan",
+		path: "/app/pemantauan",
+		icon: "icon-speedometer",
+		translate: "sidebar.nav.PEMANTAUAN",
+	},
+	{
+		name: "Laporan Delegasi",
+		path: "/app/laporan-delegasi",
+		icon: "icon-notebook",
+		translate: "sidebar.nav.LAPORAN_DELEGASI",
+	},
+	{
+		name: "Pelaporan",
+		path: "/app/pelaporan",
+		icon: "icon-note",
+		translate: "sidebar.nav.PELAPORAN",
+	},
+	{
+		name: "Penjadwalan Evaluasi",
+		path: "/app/penjadwalan",
+		icon: "icon-event",
+		translate: "sidebar.nav.PENJADWALAN",
+	},
+	{
+		name: "Pemeriksaan",
+		path: "/app/pemeriksaan",
+		icon: "icon-book-open",
+		translate: "sidebar.nav.PEMERIKSAAN",
+	},
+	{
+		name: "Sanksi",
+		path: "/app/sanksi",
+		icon: "icon-social-steam",
+		translate: "sidebar.nav.SANKSI",
+	},
+	{
+		heading: "Dikti Ristek/LLDIKTI",
+		translate: "sidebar.heading.DIKTI_RISTEK",
+	},
+	{
+		name: "Keberatan",
+		path: "/app/keberatan",
+		icon: "icon-hourglass",
+		translate: "sidebar.nav.KEBERATAN",
+	},
+	{
+		name: "Banding",
+		path: "/app/banding",
+		icon: "icon-directions",
+		translate: "sidebar.nav.BANDING",
+	},
+	{
+		name: "Pemantauan Perbaikan",
+		path: "/app/perbaikan",
+		icon: "icon-graph",
+		translate: "sidebar.nav.PEMANTAUAN_PERBAIKAN",
+	},
+	{
+		name: "Pencabutan Sanksi",
+		path: "/app/pencabutan-sanksi",
+		icon: "icon-shield",
+		translate: "sidebar.nav.PENCABUTAN_SANKSI",
+	},
+
+	///////------OPERASIONAL SANKSI-------\\\\\\
+	{
+		heading: "Operasional Sanksi",
+		translate: "sidebar.heading.OPERASIONAL_SANKSI",
+	},
+	{
+		name: "Rekomendasi Delegasi",
+		path: "/app/rekomendasi-delegasi",
+		icon: "icon-paper-plane",
+		translate: "sidebar.nav.REKOMENDASI_DELEGASI",
+	},
+	{
+		name: "Perpanjangan Sanksi",
+		path: "/app/perpanjangan-sanksi",
+		icon: "icon-pencil",
+		translate: "sidebar.nav.PERPANJANGAN_SANKSI",
+	},
+	{
+		name: "Perubahan Sanksi",
+		path: "/app/perubahan-sanksi",
+		icon: "fas fa-dna",
+		translate: "sidebar.nav.PERUBAHAN_SANKSI",
+		submenu: [
+			{
+				name: "a. Naik Sanksi",
+				path: "/app/naik-sanksi",
+			},
+			{
+				name: "b. Turun Sanksi",
+				path: "/app/turun-sanksi",
+			},
+		],
+	},
+
+
+	///////------ANALYTICS REPORT------\\\\\\\\\\\
+
+	{
+		heading: "Analytics Report",
+		translate: "sidebar.heading.ANALYTICS_REPORT",
+	},
+	{
+		name: "Riwayat",
+		path: "/app/riwayat",
+		icon: "icon-film",
+		translate: "sidebar.nav.Riwayat",
+	},
+	{
+		name: "Pelaporan Tuntas",
+		path: "/app/tuntas",
+		icon: "far fa-check-circle",
+		translate: "sidebar.nav.Pelaporan-tuntas",
+	},
+
+	/////////------BANTUAN-------\\\\\\\\\\\
+	{
+		heading: "Bantuan",
+		translate: "sidebar.heading.BANTUAN",
+	},
+	{
+		name: "Buku Panduan",
+		path: "/app/Bantuan",
+		icon: "fas fa-book",
+		translate: "sidebar.nav.Bantuan",
+	},
+	{
+		name: "Workflow Aplikasi SIDALI",
+		path: "/app/workflow",
+		icon: "fas fa-project-diagram",
+		translate: "sidebar.nav.Bantuan",
+	},
+];
+
+export default MenuReadOnly;

+ 1 - 1
components/NaikSanksi/InputTanggal.js

@@ -156,7 +156,7 @@ class InputTanggal extends Component {
 
 
     handelSimpan = async (data) => {
-        if (this.props.user.role.id === 2024) {
+        if (this.props?.user?.role.id === 2024) {
             Swal.fire({
                 icon: 'error',
                 title: 'Oops...',

+ 1 - 1
components/Pelaporan/InputData.js

@@ -146,7 +146,7 @@ export class InputData extends Component {
 		await createLog(token, { aktivitas: "Mengakses halaman Pelaporan", menu: "Pelaporan", _csrf: _csrf });
 	}
 	onSubmit = async (data) => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 1 - 1
components/Pemeriksaan/InputEvaluasi.js

@@ -139,7 +139,7 @@ class InputEvaluasi extends Component {
 	};
 
 	onSubmit = async (data, { resetForm }) => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 1 - 1
components/PerpanjanganSanksi/InputTanggal.js

@@ -141,7 +141,7 @@ class InputTanggal extends Component {
 
 
     handelSimpan = async (data) => {
-        if (this.props.user.role.id === 2024) {
+        if (this.props?.user?.role.id === 2024) {
             Swal.fire({
                 icon: 'error',
                 title: 'Oops...',

+ 1 - 1
components/RekomendasiDelegasi/InputRekomendasi.js

@@ -123,7 +123,7 @@ class InputRekomendasi extends Component {
 
 
 	handelSimpan = async () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 3 - 3
components/Sanksi/DetailSanksi.js

@@ -104,7 +104,7 @@ class DetailSanksi extends Component {
 														<em className="fa-lg far fa-file-code"></em>
 													</td>
 													<td>
-														{this.props.user.role.id === 2024?
+														{this.props?.user?.role.id === 2024 ?
 															<a className="text-muted" onClick={this.handleOpenAlert} >
 																{e.judul}
 															</a>
@@ -128,7 +128,7 @@ class DetailSanksi extends Component {
 							<Col md="4">Dokumen Acara Pleno:</Col>
 							<Col md="8">
 								<div>
-									{this.props.user.role.id === 2024 ?
+									{this.props?.user?.role.id === 2024 ?
 										<Button color className="btn-labeled-4 mt-0" onClick={this.handleOpenAlert}>
 											<h5 className="p-0 mt-2"><em className="fas fa-download mr-2" />Print dan Download</h5>
 										</Button>
@@ -155,7 +155,7 @@ class DetailSanksi extends Component {
 										<ComponentBA ref={el => (this.componentRef = el)} query={this.props.query} />
 									</div>
 								</div>
-					
+
 							</Col>
 						</FormGroup>
 						<FormGroup row>

+ 26 - 9
components/Sanksi/SuratBA _detail.js

@@ -87,8 +87,8 @@ class ComponentBA extends React.Component {
                                 {this.state?.setTanggal_2 === true ? (
 
                                     this.state?.setTanggal_2 === true ?
-                                    <span > {moment(this.state?.tanggal_2).locale("id").format("dddd")}, tanggal&nbsp;{moment(this.state?.tanggal_2).format("D")}&nbsp; bulan &nbsp;{moment(this.state?.tanggal_2).format("MMMM")} tahun &nbsp;{moment(this.state?.tanggal_2).format("YYYY")},</span> :
-                                    <span> &nbsp;- &nbsp;</span>
+                                        <span > {moment(this.state?.tanggal_2).locale("id").format("dddd")}, tanggal&nbsp;{moment(this.state?.tanggal_2).format("D")}&nbsp; bulan &nbsp;{moment(this.state?.tanggal_2).format("MMMM")} tahun &nbsp;{moment(this.state?.tanggal_2).format("YYYY")},</span> :
+                                        <span> &nbsp;- &nbsp;</span>
                                 )
                                     : (
                                         this.state?.setTanggal === true ?
@@ -119,7 +119,26 @@ class ComponentBA extends React.Component {
                                 </tr>
                             </thead>
                             <tbody>
-                                {this.state.dataPelanggaran?.data?.map((e, i) => (
+                                {dataLaporan?.data?.sanksi.pelanggaran.map((e, i) => (
+                                    <tr key={e._id}>
+                                        <td>{++i}</td>
+                                        {dataLaporan.data && (<td >{dataLaporan.data.pt.nama}</td>)}
+                                        <td>{e.pasal}</td>
+                                        <td>{e.butir_pelanggaran}</td>
+                                        <td>{e.pelanggaran}</td>
+                                        {this.state?.descPelanggaran ?
+                                            (
+                                                <td style={{ minWidth: "215px" }} >{"-" || this.state.descPelanggaran[e?._id]?.simpulan
+                                                }</td>
+                                            ) :
+                                            (<td style={{ minWidth: "215px" }}>
+                                                -
+                                            </td>)
+                                        }
+                                        <td style={{ minWidth: "215px" }}>{`Sanksi Administratif berupa ${this.state?.sanksi ? this.state?.sanksi : ""}` || ""}</td>
+                                    </tr>
+                                ))}
+                                {/* {this.state.dataPelanggaran?.data?.map((e, i) => (
                                     <tr key={e._id}>
                                         <td>{++i}</td>
                                         {this.state.dataSanksi.data && (<td className='BA-header'>{this.state.dataSanksi.data.laporan.pt.nama}</td>)}
@@ -130,18 +149,16 @@ class ComponentBA extends React.Component {
                                             (
                                                 <td style={{ minWidth: "215px" }} >{"-" || this.state.descPelanggaran[e?._id]?.simpulan
                                                 }</td>
-                                            ):
+                                            ) :
                                             (<td style={{ minWidth: "215px" }}>
                                                 -
                                             </td>)
                                         }
-                                        {/* <td style={{ minWidth: "215px" }} >{"" || dataSuratBA?.descPelanggaran[e?._id]?.simpulan
-                                            || this.state.descPelanggaran[e?._id]?.simpulan
-                                        }</td> */}
-                                        <td style={{ minWidth: "215px" }}>{`Sanksi Administratif berupa ${this.state?.sanksi? this.state?.sanksi:"" }` || ""}</td>
+
+                                        <td style={{ minWidth: "215px" }}>{`Sanksi Administratif berupa ${this.state?.sanksi ? this.state?.sanksi : ""}` || ""}</td>
                                     </tr>
 
-                                ))}
+                                ))} */}
                             </tbody>
                         </table>
                     </div>

+ 1 - 1
components/TurunSanksi/InputTanggal.js

@@ -159,7 +159,7 @@ class InputTanggal extends Component {
 
 
     handelSimpan = async (data) => {
-        if (this.props.user.role.id === 2024) {
+        if (this.props?.user?.role.id === 2024) {
             Swal.fire({
                 icon: 'error',
                 title: 'Oops...',

+ 1 - 1
pages/app/banding/detail.js

@@ -173,7 +173,7 @@ class JawabanBanding extends Component {
 
 
 	handelSimpan = async () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 0 - 222
pages/app/bypassII/detail.js

@@ -1,222 +0,0 @@
-import React, { Component } from "react";
-import ContentWrapper from "@/components/Layout/ContentWrapper";
-import { getLog } from "@/actions/log";
-import { Card, CardBody, TabContent, TabPane, Nav, NavItem, NavLink, Button, Row, Col, FormGroup } from "reactstrap";
-import Timeline from "@/components/Main/Timeline";
-import { getOnePT } from "@/actions/PT";
-import { connect } from "react-redux";
-import { getOneLaporan, getPelaporan } from "../../../actions/pelaporan";
-import DetailLaporan from "@/components/Main/DetailLaporan";
-import Link from "next/link";
-import Loader from "@/components/Common/Loader";
-import DetailPT from "@/components/Main/DetailPT";
-import moment from "moment";
-import Datatable from "@/components/Tables/Datatable";
-import classnames from "classnames";
-import BeritaAcara_Bypass from "../../../components/BypassII/BeritaAcara";
-import { UploadSurat_Bypass } from "../../../components/BypassII/UploadSurat";
-import { TablePenetapanSanksi_Bypass } from "../../../components/BypassII/TablePenetapanSanksi";
-import { getPelanggaran, getPelanggaranSanksi } from "@/actions/pelanggaran";
-import ComponentToPrint from "../../../components/BypassII/SuratBA_A";
-import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
-
-
-
-const stepNavitemStyle = {
-    backgroundColor: "#fcfcfc",
-};
-
-class bypassIIDetail extends Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            activeStep: "1",
-
-            log: {},
-            detailLaporanPt: {},
-            pelaporan: {},
-            pt: {},
-        };
-    }
-
-    static async getInitialProps({ query }) {
-        return { query };
-    }
-
-    componentDidMount = async () => {
-        const { query, token } = this.props;
-        const ptId = query.ptId;
-        const pelaporan = await getPelaporan(token, { pt_id: ptId, all: true, aktif: true });
-        const { data: listSanksi } = await getPelanggaranSanksi(token)
-        const pt = await getOnePT(token, ptId);
-        this.setState({ pelaporan, pt, listSanksi });
-    };
-
-    toggleStep = (activeStep) => () => {
-        if (this.state.activeStep !== activeStep) {
-            this.setState({
-                activeStep: activeStep
-            });
-            // this.handleAutoSave(this.state.dataPelanggaran, activeStep)
-
-        }
-    };
-    setDataSuratBA = (data) => {
-        this.setState({ dataSuratBA: data });
-
-    };
-
-    setCheckedData = async (data) => {
-        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 });
-
-
-    };
-    render() {
-        const { dataUpload, dataPelanggaran, pelaporan, dataSuratBA } = this.state
-        return (
-            <ContentWrapper unwrap>
-                {/* <Header /> */}
-                <div className="p-3">
-                    <div className="content-heading">
-                        <span className="font-color-white">Bypass II</span>
-                        <div className="ml-auto">
-                            <Link href="/app/bypassII">
-                                <Button className="color-3e3a8e" color>
-                                    <span className="font-color-white">&lt; Kembali</span>
-                                </Button>
-                            </Link>
-                        </div>
-                    </div>
-                    <Card className="card-default">
-                        <CardBody>
-                            <Row>
-                                <Col xs="4">
-                                    <Nav pills vertical={true} className="cursor-pointer">
-                                        <NavItem style={stepNavitemStyle}>
-                                            <NavLink
-                                                tag="div"
-                                                className={classnames({
-                                                    active: this.state.activeStep === "1",
-                                                })}
-                                                onClick={this.toggleStep("1")}
-                                            >
-                                                <h4 className="text-left my-3">1. Penetapan Sanksi</h4>
-                                            </NavLink>
-                                        </NavItem>
-                                        <NavItem style={stepNavitemStyle}>
-                                            <NavLink
-                                                tag="div"
-                                                className={classnames({
-                                                    active: this.state.activeStep === "2",
-                                                })}
-                                                onClick={this.toggleStep("2")}
-                                            >
-                                                <h4 className="text-left my-3">2. Penetapan Jenis Pelanggaran</h4>
-                                            </NavLink>
-                                        </NavItem>
-                                        <NavItem style={stepNavitemStyle}>
-                                            <NavLink
-                                                tag="div"
-                                                className={classnames({
-                                                    active: this.state.activeStep === "3",
-                                                })}
-                                                onClick={this.toggleStep("3")}
-                                            >
-                                                <h4 className="text-left my-3">3. Berita Acara Pleno</h4>
-                                            </NavLink>
-                                        </NavItem>
-                                    </Nav>
-                                </Col>
-
-                                <Col xs="8">
-                                    <TabContent activeTab={this.state.activeStep} className="border-0">
-                                        <TabPane tabId="1">
-                                            <div className="pt-3 mb-3">
-                                                <h2>Penetapan Sanksi</h2>
-                                                {this.state.listSanksi && <UploadSurat_Bypass setUploadSuratSanksi={this.setUploadSuratSanksi} listSanksi={this.state.listSanksi} />}
-                                            </div>
-                                            <FormGroup row className="mt-3">
-                                                <label className="col-md-4 col-form-label">
-                                                    Dokumen Laporan Evaluasi dan Pembahasan
-                                                </label>
-                                                <div className="col-md-10">
-
-                                                    <div style={{ display: "none" }}>
-                                                        <ComponentToPrint ref={el => (this.componentRef = el)} dataPelanggaran={this.state.dataPelanggaran} setDataSuratBA={this.setDataSuratBA} dataSuratBA={dataSuratBA} pt={this.state.pt} />
-                                                    </div>
-                                                    <ReactToPrint
-                                                        trigger={() => {
-                                                            return <span>
-
-                                                                <Button color className="btn-labeled-4 mt-0">
-                                                                    <h5 className="p-0 mt-2"><em className="fas fa-download mr-2" />Print dan Download</h5>
-                                                                </Button>
-                                                            </span>
-                                                        }}
-                                                        content={() => this.componentRef}
-                                                    />
-                                                </div>
-                                            </FormGroup>
-                                            <hr />
-                                            <div className="d-flex">
-                                                {/* <Button color className="btn-login color-3e3a8e" onClick={this.toggleStep("4")}>
-                                                    <span className="font-color-white">Previous</span>
-                                                </Button> */}
-                                                <Button className="ml-auto btn-login color-3e3a8e" color onClick={this.toggleStep("2")}>
-                                                    <span className="font-color-white">Next</span>
-                                                </Button>
-                                            </div>
-                                        </TabPane>
-                                        <TabPane tabId="2">
-                                            <div className="pt-3 mb-3">
-                                                <h2>Penetapan Jenis Pelanggaran</h2>
-                                                <TablePenetapanSanksi_Bypass setCheckedData={this.setCheckedData} />
-                                            </div>
-                                            <hr />
-                                            <div className="d-flex">
-                                                <Button color className="btn-login color-3e3a8e" onClick={this.toggleStep("1")}>
-                                                    <span className="font-color-white">Previous</span>
-                                                </Button>
-                                                <Button className="ml-auto btn-login color-3e3a8e" color onClick={this.toggleStep("3")}>
-                                                    <span className="font-color-white">Next</span>
-                                                </Button>
-                                            </div>
-                                        </TabPane>
-                                        <TabPane tabId="3">
-                                            <Card>
-                                                <BeritaAcara_Bypass dataPelanggaran={this.state.dataPelanggaran} setDataSuratBA={this.setDataSuratBA} dataSuratBA={dataSuratBA} pt={this.state.pt} />
-                                            </Card>
-
-
-                                            <div className="d-flex">
-                                                <Button color className="btn-login color-3e3a8e" onClick={this.toggleStep("2")}>
-                                                    <span className="font-color-white">Previous</span>
-                                                </Button>
-                                                <Button className="ml-auto btn-login color-3e3a8e" color onClick={this.toggleStep("3")}>
-                                                    <span className="font-color-white">Next</span>
-                                                </Button>
-                                            </div>
-                                        </TabPane>
-                                    </TabContent>
-                                </Col>
-                            </Row>
-                        </CardBody>
-                    </Card>
-
-
-
-                </div>
-            </ContentWrapper>
-        )
-    }
-
-
-}
-const mapStateToProps = (state) => ({ user: state.user, token: state.token });
-export default connect(mapStateToProps)(bypassIIDetail);

+ 0 - 118
pages/app/bypassII/index.js

@@ -1,118 +0,0 @@
-import React from "react";
-import ContentWrapper from '@/components/Layout/ContentWrapper';
-import { Container, Row, Col, Card, CardBody, CardFooter, CardHeader, Input, Button } from 'reactstrap';
-import FormValidator from "@/components/Forms/Validator.js";
-import { ptPublic } from "@/actions/PT";
-import AsyncSelect from "react-select/async";
-import { loginToPt } from "../../../actions/auth";
-import { connect } from "react-redux";
-import { ToastContainer, toast } from "react-toastify";
-import { getCsrf } from "../../../actions/security";
-import Router from "next/router";
-
-
-
-
-
-const loadOptions = (inputValue, callback) => {
-    setTimeout(async () => {
-        const pt = await ptPublic({ search: inputValue });
-        const data = pt?.data.map((e) => ({
-            value: e.id,
-            label: e.nama,
-            className: "State-ACT",
-        }));
-        callback(data);
-    }, 1000);
-};
-class BypassII extends React.Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            formLogin: {
-                password: ""
-            },
-            loading: false,
-            inputValue: "",
-            pt_id: ""
-
-        };
-    }
-
-
-
-    handleChangeSelectPerguruanTinggi = (selected_PT) => {
-        this.setState({ pt_id: selected_PT.value });
-    };
-    handleClick = (e, PT_ID) => {
-        e.preventDefault();
-        Router.push({
-            pathname: "/app/bypassII/detail",
-            query: { ptId: PT_ID },
-        });
-
-    }
-
-
-    render() {
-        return (
-            <ContentWrapper>
-                <div className="content-heading">
-                    <span className="font-color-white">
-                        Bypass II
-                    </span>
-                </div>
-                <Container className="container-sm pt-5" >
-                    <Card
-                        style={{ margin: "20px", borderRadius: "15px" }}
-                    >
-                        <CardHeader className="text-center">
-                            <div className="card-title font-weight-bold mt-4  font-color-black"
-                                style={{ fontSize: "20px" }}
-                            >Pilih Perguruan tinggi</div>
-                        </CardHeader>
-                        <CardBody>
-                            <div className="form-group">
-                                <label className="col-form-label font-color-black mb-0 font-weight-bold">Perguruan Tinggi</label>
-                                <AsyncSelect
-                                    style={{ borderRadius: "7px" }}
-                                    cacheOptions
-                                    loadOptions={loadOptions}
-                                    defaultOptions
-                                    onChange={(e) => {
-                                        this.handleChangeSelectPerguruanTinggi(e);
-                                    }}
-                                // onInputChange={this.handleInputChange}
-                                />
-                                <span className="invalid-feedback">Field is required</span>
-                            </div>
-                            <Button color className="btn-login float-right mt-3"
-                                style={{ borderRadius: "7px" }}
-                                onClick={(e) => this.handleClick(e, this.state.pt_id)}
-                            >
-                                <span className="font-color-white">
-                                    {this.state.loading ? (
-                                        <div class="d-flex justify-content-center">
-                                            <div
-                                                class="spinner-border spinner-border-sm"
-                                                role="status"
-                                            ></div>
-                                        </div>
-                                    ) : (
-                                        "Pilih"
-                                    )}
-                                </span>
-                            </Button>
-                        </CardBody>
-                    </Card>
-                </Container>
-            </ContentWrapper>)
-    }
-}
-
-
-
-
-
-const mapStateToProps = (state) => ({ user: state.user, token: state.token });
-export default connect(mapStateToProps)(BypassII);

+ 1 - 1
pages/app/keberatan/detail.js

@@ -182,7 +182,7 @@ class DetailKeberatan extends Component {
 	};
 
 	handelSimpan = async () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 2 - 2
pages/app/pelaporan/index.js

@@ -64,7 +64,7 @@ class Pelaporan extends Component {
 		if (prevState.graph !== this.state.graph) return true;
 	};
 	excelMenu = () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',
@@ -90,7 +90,7 @@ class Pelaporan extends Component {
 		}
 	};
 	excelSemua = () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 2 - 2
pages/app/pemeriksaan/index.js

@@ -48,7 +48,7 @@ class Pemeriksaan extends Component {
 
 
 	excelMenu = () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			swal.fire({
 				icon: 'error',
 				title: 'Oops...',
@@ -75,7 +75,7 @@ class Pemeriksaan extends Component {
 	};
 
 	excelSemua = () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 1 - 1
pages/app/pencabutan-sanksi/detail.js

@@ -137,7 +137,7 @@ class JawabanPencabutanSanksi extends Component {
 	};
 
 	handleSimpan = async () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 2 - 2
pages/app/penjadwalan/index.js

@@ -46,7 +46,7 @@ class Penjadwalan extends Component {
 		if (prevState.graph !== this.state.graph) return true;
 	};
 	excelMenu = () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',
@@ -72,7 +72,7 @@ class Penjadwalan extends Component {
 		}
 	};
 	excelSemua = () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 2 - 2
pages/app/sanksi/index.js

@@ -46,7 +46,7 @@ class Sanksi extends Component {
 		if (prevState.graph !== this.state.graph) return true;
 	};
 	excelMenu = () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',
@@ -72,7 +72,7 @@ class Sanksi extends Component {
 		}
 	};
 	excelSemua = () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 3 - 3
pages/app/sanksi/proses.js

@@ -66,7 +66,7 @@ class ProsesSanksi extends Component {
 
 
 	handleAutoSave = async (data, activeStep) => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			""
 		} else {
 			const { query, token } = this.props;
@@ -78,7 +78,7 @@ class ProsesSanksi extends Component {
 	}
 
 	done = async () => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',
@@ -196,7 +196,7 @@ class ProsesSanksi extends Component {
 	}
 
 	handleDelegasi = async (data) => {
-		if (this.props.user.role.id === 2024) {
+		if (this.props?.user?.role.id === 2024) {
 			Swal.fire({
 				icon: 'error',
 				title: 'Oops...',

+ 31 - 29
pages/app/tuntas/index.js

@@ -70,7 +70,7 @@ class PelaporanTuntas extends Component {
         Router.push(url);
     };
     excelMenu = () => {
-        if (this.props.user.role.id === 2024) {
+        if (this.props?.user?.role.id === 2024) {
             swal.fire({
                 icon: 'error',
                 title: 'Oops...',
@@ -79,22 +79,23 @@ class PelaporanTuntas extends Component {
                 confirmButtonText: 'Oke'
             })
         } else {
-        const url = getExcel(this.props.token, "Laporan", {
-            tahun: this.state.tahun,
-            pelaporan: true,
-        });
-        if (this.state.graph.data.jumlah_ditutup && this.state.graph.data.jumlah_selesai) {
-            Router.push(url);
-        } else {
-            swal.fire({
-                title: "Data Kosong",
-                icon: "error",
-                confirmButtonColor: "#3e3a8e",
+            const url = getExcel(this.props.token, "Laporan", {
+                tahun: this.state.tahun,
+                pelaporan: true,
             });
-        }}
+            if (this.state.graph.data.jumlah_ditutup && this.state.graph.data.jumlah_selesai) {
+                Router.push(url);
+            } else {
+                swal.fire({
+                    title: "Data Kosong",
+                    icon: "error",
+                    confirmButtonColor: "#3e3a8e",
+                });
+            }
+        }
     };
     excelSemua = () => {
-        if (this.props.user.role.id === 2024) {
+        if (this.props?.user?.role.id === 2024) {
             swal.fire({
                 icon: 'error',
                 title: 'Oops...',
@@ -103,23 +104,24 @@ class PelaporanTuntas extends Component {
                 confirmButtonText: 'Oke'
             })
         } else {
-        const url = getExcel(this.props.token, "Laporan", {
-            tahun: this.state.tahun,
-            pelaporan: true,
-            penjadwalan: true,
-            pemeriksaan: true,
-            sanksi: true,
+            const url = getExcel(this.props.token, "Laporan", {
+                tahun: this.state.tahun,
+                pelaporan: true,
+                penjadwalan: true,
+                pemeriksaan: true,
+                sanksi: true,
 
-        });
-        if (this.state.graph.data.jumlah_ditutup && this.state.graph.data.jumlah_selesai) {
-            Router.push(url);
-        } else {
-            swal.fire({
-                title: "Data Kosong",
-                icon: "error",
-                confirmButtonColor: "#3e3a8e",
             });
-        }}
+            if (this.state.graph.data.jumlah_ditutup && this.state.graph.data.jumlah_selesai) {
+                Router.push(url);
+            } else {
+                swal.fire({
+                    title: "Data Kosong",
+                    icon: "error",
+                    confirmButtonColor: "#3e3a8e",
+                });
+            }
+        }
     };
 
     render() {

+ 1 - 1
pages/app/verifikasi/index.js

@@ -71,7 +71,7 @@ class Verifikasi extends React.Component {
         this.setState({ pt_id: selected_PT.value });
     };
     onSubmit = async () => {
-        if (this.props.user.role.id === 2024) {
+        if (this.props?.user?.role.id === 2024) {
             Swal.fire({
                 icon: 'error',
                 title: 'Oops...',

+ 33 - 27
pages/signature/pleno-sanksi/[id].js

@@ -217,33 +217,39 @@ class PlenoSanksi extends Component {
                                     </tr>
                                 </thead>
                                 <tbody>
-                                    
-                                    {/* {dataPelanggaran?.map((e, i) => (
-                                        <tr key={e._id}>
-                                            <td>{++i}</td>
-                                            {dataLaporan.data && (<td >{dataLaporan.data.pt.nama}</td>)}
-                                            <td>{e.pasal}</td>
-                                            <td>{e.butir_pelanggaran}</td>
-                                            <td>{e.pelanggaran}</td>
-                                            <td >{dataSuratBA?.descPelanggaran[e._id]?.simpulan || ""}</td>
-                                            <td style={{ maxWidth: "80px" }}>
-                                                {`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}
-                                            </td>
-                                        </tr>
-                                    ))} */}
-                                    {dataLaporan.data?.sanksi.pelanggaran.map((e, i) => (
-                                        <tr key={e._id}>
-                                            <td>{++i}</td>
-                                            {dataLaporan.data && (<td >{dataLaporan.data.pt.nama}</td>)}
-                                            <td>{e.pasal}</td>
-                                            <td>{e.butir_pelanggaran}</td>
-                                            <td>{e.pelanggaran}</td>
-                                            <td >{dataSuratBA?.descPelanggaran[e._id]?.simpulan || ""}</td>
-                                            <td style={{ maxWidth: "80px" }}>
-                                                {`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}
-                                            </td>
-                                        </tr>
-                                    ))}
+                                    {dataLaporan.data?.sanksi?.pelanggaran ?
+                                        (
+                                            dataLaporan.data?.sanksi.pelanggaran.map((e, i) => (
+                                                <tr key={e._id}>
+                                                    <td>{++i}</td>
+                                                    {dataLaporan.data && (<td >{dataLaporan.data.pt.nama}</td>)}
+                                                    <td>{e.pasal}</td>
+                                                    <td>{e.butir_pelanggaran}</td>
+                                                    <td>{e.pelanggaran}</td>
+                                                    <td >{dataSuratBA?.descPelanggaran[e._id]?.simpulan || ""}</td>
+                                                    <td style={{ maxWidth: "80px" }}>
+                                                        {`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}
+                                                    </td>
+                                                </tr>
+                                            ))
+                                        ) :
+                                        (
+                                            dataPelanggaran?.map((e, i) => (
+                                                <tr key={e._id}>
+                                                    <td>{++i}</td>
+                                                    {dataLaporan.data && (<td >{dataLaporan.data.pt.nama}</td>)}
+                                                    <td>{e.pasal}</td>
+                                                    <td>{e.butir_pelanggaran}</td>
+                                                    <td>{e.pelanggaran}</td>
+                                                    <td >{dataSuratBA?.descPelanggaran[e._id]?.simpulan || ""}</td>
+                                                    <td style={{ maxWidth: "80px" }}>
+                                                        {`Sanksi Administratif berupa ${dataSuratBA?.sanksi || this.state.sanksi}` || ""}
+                                                    </td>
+                                                </tr>
+                                            ))
+                                        )}
+
+
                                 </tbody>
                             </table>
                         </div>