| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 | 
							- 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 { 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.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,
 
- 						// 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);
 
 
  |