| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 |
- 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 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, query } = 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.ttate.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,
- // searching:false,
- ordering: false,
- // info: 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>TMT : {jp.tmt_bulan} Bulan</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>
- }
- {/* {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 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);
|