Bladeren bron

remove peserta pleno

andi 2 jaren geleden
bovenliggende
commit
33b0afd46a

+ 9 - 0
actions/sanksi.js

@@ -67,18 +67,27 @@ export const addRekomendasiDelegasi = async (token, id, data) => {
 		return false;
 	}
 };
+
 export const editTmt = async (token, id, data) => {
 	const res = await axios.put(`sanksi/tmt/update/${id}`, data, { headers: { Authorization: token } });
 	await createLog(token, { aktivitas: `Berhasil perpanjangan sanksi, id: ${id}` });
 	return res.data;
 };
+
 export const update = async (token, id, data) => {
 	const res = await axios.put(`sanksi/update/${id}`, data, { headers: { Authorization: token } });
 	await createLog(token, { aktivitas: `Berhasil Merubah Sanksi, id: ${id}` });
 	return res.data;
 };
+
 export const updatePT = async (token, id, data) => {
 	const res = await axiosAPI.put(`/sanksi/update-pt/${id}`, data, { headers: { Authorization: token } });
 	await createLog(token, { aktivitas: `Berhasil mengubah status sanksi, id: ${id}` });
 	return res.data;
 };
+
+export const removePesertaPleno = async (token, data) => {
+	const res = await axios.delete(`sanksi/remove-peserta-pleno/`, { headers: { Authorization: token }, data });
+	await createLog(token, { aktivitas: `Berhasil hapus peserta pleno` });
+	return res.data;
+};

+ 77 - 24
components/Sanksi/BeritaAcara.js

@@ -1,8 +1,9 @@
 import React, { useRef, Component } from 'react';
 import { useReactToPrint } from "react-to-print";
-import { Row, Col, Button, Popover, PopoverHeader, PopoverBody, Card, CardBody } from "reactstrap";
+import { Row, Col, Button, Popover, PopoverHeader, PopoverBody, Card, CardBody, Modal, ModalBody, ModalFooter } from "reactstrap";
 import Head from 'next/head'
 import SignatureCanvas from 'react-signature-canvas'
+import { connect } from "react-redux";
 import ComponentToPrint from "./SuratBA_A";
 import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
 import { getOneLaporan, updateLaporan } from "@/actions/pelaporan";
@@ -12,6 +13,9 @@ 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";
 
 
 
@@ -36,6 +40,8 @@ class BeritaAcara extends Component {
             copied: false,
             setmeState: true,
             descPelanggaran: [],
+            modalRemovePeserta: false,
+            selectedPeserta: ""
         };
     }
 
@@ -44,7 +50,7 @@ class BeritaAcara extends Component {
     };
 
     componentDidMount = async () => {
-        const { query, dataPelanggaran } = this.props;
+        const { query, token, dataPelanggaran } = this.props;
         const { id } = query;
         const getDataSave = await getAutoSave({ id, laporan: true });
         const autosaveDataSuratBA = getDataSave.data?.PenetapanSanksi?.dataSuratBA;
@@ -191,11 +197,46 @@ class BeritaAcara extends Component {
         }, 1000);
     }
 
+    setModalRemovePeserta = (modalRemovePeserta) => {
+        this.setState({
+            modalRemovePeserta: !this.state.modalRemovePeserta
+        })
+    }
+
     render() {
         const { dataLaporan, dataSuratBA, dataPelanggaran } = this.props
         const { descPelanggaran, tanggal, setTanggal } = this.state
         return (
             <div>
+                <Modal isOpen={this.state.modalRemovePeserta} >
+                    <ModalBody>Apakah anda ingin menghapus peserta pleno?</ModalBody>
+                    <ModalFooter>
+
+                        <Button color className="btn-login"
+                            onClick={async () => {
+                                const { query, token } = this.props;
+                                const { id: laporan_id } = query;
+                                let update = null;
+                                const toastid = toast.loading("Please wait...");
+                                const peserta_id = this.state.selectedPeserta;
+                                update = await removePesertaPleno(token, { laporan_id, peserta_id });
+                                if (!update) {
+                                    toast.update(toastid, { render: "Gagal hapus peserta pleno", type: "error", isLoading: false, autoClose: true, closeButton: true });
+                                } else {
+                                    toast.update(toastid, { render: "Berhasil hapus peserta pleno", type: "success", isLoading: false, autoClose: true, closeButton: true });
+                                    Router.push(`/app/sanksi/proses?id=${laporan_id}`);
+                                    this.setModalRemovePeserta()
+                                }
+                            }}
+                        >
+
+                            <span className="font-color-white">Ya</span>
+                        </Button>
+                        <Button color className="btn-v2" onClick={this.setModalRemovePeserta}>
+                            Tidak
+                        </Button>
+                    </ModalFooter>
+                </Modal>
                 <div className=' content-heading border-radius-login'>
                     <span className="btn-radius">
                         <ReactToPrint
@@ -258,7 +299,7 @@ class BeritaAcara extends Component {
                                 </span>
                             }
                             {this.state?.tempat ?
-                                <span onClick={this.isEditTempat}  className='hhh'>
+                                <span onClick={this.isEditTempat} className='hhh'>
                                     &nbsp;{dataSuratBA?.tempat || this.state?.tempat}
                                 </span>
                                 :
@@ -269,7 +310,17 @@ class BeritaAcara extends Component {
                             telah dilakukan rapat evaluasi dan pembahasan dugaan pelanggaran penyelenggaraan oleh perguruan tinggi dan/atau badan penyelenggara {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, yang dihadiri oleh:
 
                             <ol>
-                                {dataLaporan.data?.peserta_penetapan_sanksi?.map((value) => <li>{value.nama}</li>)}
+                                {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>
@@ -409,27 +460,27 @@ class BeritaAcara extends Component {
                             </ol>
                         </p>
                         <p>
-                            Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir. 
+                            Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
                         </p>
                         <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>
-
-                                            {/* <h5 className="p-0 mt-3 float-right"> <em className="fas fa-project-diagram float-left mt-1" /> &nbsp;Link Dokumen</h5> */}
-                                        </Button>
-                                    </span>
-                                    <Popover placement="bottom" isOpen={this.state.copied} target="Popover1" toggle={this.Copied}>
-                                        <PopoverHeader>Link Berhasil Disalin</PopoverHeader>
-                                    </Popover>
-                                </div>
-
-                            </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>
+
+                                        {/* <h5 className="p-0 mt-3 float-right"> <em className="fas fa-project-diagram float-left mt-1" /> &nbsp;Link Dokumen</h5> */}
+                                    </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'>
@@ -460,4 +511,6 @@ class BeritaAcara extends Component {
         );
     }
 }
-export default BeritaAcara
+
+const mapStateToProps = (state) => ({ user: state.user, token: state.token });
+export default connect(mapStateToProps)(BeritaAcara)

+ 1 - 1
components/Sanksi/Ringkasan.js

@@ -3,7 +3,7 @@ import { Card, Row, Col, Table, FormGroup, Label, Button } from "reactstrap";
 import moment from "moment";
 import 'moment/locale/id'
 moment.locale('id')
-import ComponentToPrint from "./SuratBA";
+import ComponentToPrint from "./SuratBA_A";
 import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
 import React, { Component } from "react";
 import { getAutoSave, inputAutoSave } from "@/actions/autosave";

+ 1 - 38
components/Sanksi/UploadSurat.js

@@ -84,7 +84,6 @@ export class UploadSurat extends Component {
 			awalsanksi: "",
 			akhirsanksi: "",
 			tmtCheck: false,
-			filesBeritaAcara: [],
 			saveData: [],
 			terimaSuratSanksi: "",
 			tglAkhirKeberatan: "",
@@ -104,18 +103,6 @@ export class UploadSurat extends Component {
 		});
 		this.props.setUploadSuratSanksi(this.state);
 	};
-
-	onDropBA = (filesBeritaAcara) => {
-		this.setState({
-			filesBeritaAcara: filesBeritaAcara.map((file) =>
-				Object.assign(file, {
-					preview: URL.createObjectURL(file),
-				})
-			),
-			stat: "Added " + filesBeritaAcara.length + " file(s)",
-		});
-		this.props.setUploadSuratSanksi(this.state);
-	};
 	onDropTandaTerimaSS = (filesTandaTerimaSS) => {
 		this.setState({
 			filesTandaTerimaSS: filesTandaTerimaSS.map((file) =>
@@ -166,17 +153,6 @@ export class UploadSurat extends Component {
 		});
 		this.props.setUploadSuratSanksi(this.state);
 	};
-	clearFilesBA = (e) => {
-		e.preventDefault();
-		e.stopPropagation();
-		this.setState({
-			stat: this.state.filesBeritaAcara.length ? this.state.filesBeritaAcara.length + " file(s) cleared." : "No files to clear.",
-		});
-		this.setState({
-			filesBeritaAcara: [],
-		});
-		this.props.setUploadSuratSanksi(this.state);
-	};
 	clearFilesTerimaSanksi = (e) => {
 		e.preventDefault();
 		e.stopPropagation();
@@ -219,13 +195,6 @@ export class UploadSurat extends Component {
 				files: newFiles,
 			});
 		}
-		const removeFileBA = file => () => {
-			const newFiles = [...filesBeritaAcara]
-			newFiles.splice(newFiles.indexOf(file), 1)
-			this.setState({
-				filesBeritaAcara: newFiles,
-			});
-		}
 		const removeFileTandaTerimaSS = file => () => {
 			const newFiles = [...filesTandaTerimaSS]
 			newFiles.splice(newFiles.indexOf(file), 1)
@@ -239,12 +208,6 @@ export class UploadSurat extends Component {
 				<button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right" onClick={removeFile(file)} />
 			</p>
 		));
-		const thumbsBA = filesBeritaAcara.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={removeFileBA(file)} />
-			</p>
-		));
 		const thumbsTandaTerimaSS = filesTandaTerimaSS.map((file, index) => (
 			<p>
 				<em className="far fa-file" />&nbsp;&nbsp;{file.name}
@@ -454,7 +417,7 @@ export class UploadSurat extends Component {
 										<input {...getInputProps()} />
 										<div className="dropzone-style-1">
 											<div className="center-ver-hor dropzone-previews flex">
-												{this.state.filesBeritaAcara.length > 0 ? (
+												{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>

+ 1 - 6
pages/app/sanksi/proses.js

@@ -83,11 +83,6 @@ class ProsesSanksi extends Component {
 					formdata.append("dokumen", e);
 				});
 			}
-			if (this.state.dataUpload.filesBeritaAcara && this.state.dataUpload.filesBeritaAcara.length > 0) {
-				this.state.dataUpload.filesBeritaAcara.forEach((e) => {
-					formdata.append("berita_acara", e);
-				});
-			}
 			if (this.state.dataUpload.fileTandaTerimaSS && this.state.dataUpload.fileTandaTerimaSS.length > 0) {
 				this.state.dataUpload.fileTandaTerimaSS.forEach((e) => {
 					formdata.append("dokumen_terima_sanksi", e);
@@ -320,7 +315,7 @@ class ProsesSanksi extends Component {
 										<TabPane tabId="6">
 											<div className="pt-3 mb-3">
 												<h2>Ringkasan</h2>
-												{pelaporan.data ? <Ringkasan    dataSuratBA={dataSuratBA} query={this.props.query} dataLaporan={pelaporan.data} dataPelanggaran={dataPelanggaran?.data} dataUpload={dataUpload} /> : <Loader />}
+												{pelaporan.data ? <Ringkasan dataSuratBA={dataSuratBA} query={this.props.query} dataLaporan={pelaporan.data} dataPelanggaran={dataPelanggaran?.data} dataUpload={dataUpload} /> : <Loader />}
 											</div>
 											<hr />
 											<div className="d-flex">