Sfoglia il codice sorgente

1.disable updating pddikti di dev with alert
2.Bagian tanggal berita acara pleno di menu BA diisi manual (untuk laporan sebelumnya tanggal tsb akan di ambil dari tanggal 1
3. dropzone bisa beda folder
4. version 2.6-2.5

andi 2 anni fa
parent
commit
fef7181d74

+ 6 - 1
actions/sanksi.js

@@ -9,6 +9,11 @@ export const createSanksi = async (token, id, data, _csrf) => {
 	logCreateSanksi(token, id)
 	return res.data;
 };
+export const updatePddikti = async (token, id, _csrf) => {
+	const res = await axiosAPI.put(`/sanksi/pddikti/${id}?_csrf=${_csrf}`, {}, { headers: { Authorization: token } });
+	logCreateSanksi(token, id)
+	return res.data;
+};
 const logCreateSanksi = async (token, id) => {
 	const getToken = await getCsrf();
 	const _csrf = getToken.token;
@@ -125,7 +130,7 @@ const logUpdatePT = async (token, id) => {
 
 }
 
-export const removePesertaPleno = async (token, data,_csrf) => {
+export const removePesertaPleno = async (token, data, _csrf) => {
 	const res = await axios.delete(`sanksi/remove-peserta-pleno?_csrf=${_csrf}`, { headers: { Authorization: token }, data });
 	logRemovePesertaPleno(token)
 	return res.data;

+ 1 - 1
components/Layout/Footer.js

@@ -7,7 +7,7 @@ class Footer extends Component {
         return (
             <footer className="footer-container">
                 <span>Sidali Dikti &copy; {year}</span>
-                <span className=' float-right'>Version 2.5 ~ 2.4</span>
+                <span className=' float-right'>Version 2.6 ~ 2.5</span>
             </footer>
         );
     }

+ 1 - 1
components/Layout/Sidebar.js

@@ -149,7 +149,7 @@ class Sidebar extends Component {
 	async componentDidMount() {
 		// const user = await getUser();
 		const user = this.props.user;
-		this.menu = user.user_id === "2A080F42-AE7F-407B-976E-DE5FA87BD277" ? MenuBypass : user.role.id === 2022 ? MenuPT : user.role.id === 2021 ? MenuLLDIKTI : Menu;
+		this.menu = user.user_id === "28DB23AE-2976-47E0-9410-241A11EE1F88" ? MenuBypass : user.role.id === 2022 ? MenuPT : user.role.id === 2021 ? MenuLLDIKTI : Menu;
 		// prepare the flags to handle menu collapsed states
 		this.buildCollapseList();
 

+ 28 - 6
components/Pemeriksaan/InputEvaluasi.js

@@ -57,6 +57,11 @@ class DropzoneWrapper extends Component {
 		return Dropzone ? <Dropzone {...this.props}>{this.props.children}</Dropzone> : null;
 	}
 }
+<ToastContainer
+
+/>
+{/* Same as */ }
+<ToastContainer />
 
 class InputEvaluasi extends Component {
 	constructor(props) {
@@ -69,6 +74,7 @@ class InputEvaluasi extends Component {
 			files: [],
 			delegasichecklist: false,
 			rolelldikti: false,
+			selectedFile: {},
 		};
 	}
 
@@ -92,15 +98,28 @@ class InputEvaluasi extends Component {
 		});
 	};
 
-	onDrop = (files) => {
+	onDrop = (selectedFile) => {
 		this.setState({
-			files: files.map((file) =>
+			selectedFile: selectedFile.map((file) =>
 				Object.assign(file, {
 					preview: URL.createObjectURL(file),
 				})
 			),
-			stat: "Added " + files.length + " file(s)",
+			stat: "Added " + selectedFile.length + " file(s)",
 		});
+		const selectFile = this.state.selectedFile
+		// this.state.files.push(...this.state.selectedFile)
+		// this.setState({
+		// 	files: files.map((file) =>
+		// 		Object.assign(file, {
+		// 			preview: URL.createObjectURL(file),
+		// 		})
+		// 	),
+		// 	stat: "Added " + files.length + " file(s)",
+		// });
+		this.setState(prevState => ({
+			files: [...prevState.files, ...selectFile]
+		}))
 	};
 
 	uploadFiles = (e) => {
@@ -138,7 +157,7 @@ class InputEvaluasi extends Component {
 				pending: "Loading",
 				success: "Success",
 				error: "Error",
-
+				autoClose: 1000
 			});
 
 			data.change_role = "true";
@@ -148,8 +167,12 @@ class InputEvaluasi extends Component {
 		} else {
 			await toast.promise(insertPemeriksaan(token, id, formdata, _csrf), {
 				pending: "Loading",
-				success: "Success",
+				success: {
+					render: "success",
+					autoClose: 1000
+				},
 				error: "Error",
+
 			});
 			Router.push("/app/pemeriksaan");
 		}
@@ -167,7 +190,6 @@ class InputEvaluasi extends Component {
 
 	render() {
 		const { files } = this.state;
-
 		const removeFile = file => () => {
 			const newFiles = [...files]
 			newFiles.splice(newFiles.indexOf(file), 1)

+ 78 - 20
components/Sanksi/BeritaAcara.js

@@ -12,6 +12,7 @@ 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';
 
 
 
@@ -22,8 +23,11 @@ class BeritaAcara extends Component {
             isEditTempat: false,
             tempat: "",
             isEditTanggal: false,
+            isEditTanggal_2: false,
             tanggal: "",
+            tanggal_2: "",
             setTanggal: false,
+            setTanggal_2: false,
             isEditNamaPeserta: false,
             isEditTemuanLain: false,
             temuanLain: [],
@@ -121,6 +125,15 @@ class BeritaAcara extends Component {
         //     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 = () => {
@@ -234,7 +247,7 @@ class BeritaAcara extends Component {
     }
     render() {
         const { dataLaporan, dataSuratBA, dataPelanggaran } = this.props
-        const { descPelanggaran, tanggal, setTanggal, temuanLain } = this.state
+        const { descPelanggaran, tanggal, setTanggal, setTanggal_2, tanggal_2, temuanLain } = this.state
         return (
             <div>
                 <Modal isOpen={this.state.modalRemovePeserta} >
@@ -359,10 +372,31 @@ class BeritaAcara extends Component {
 
                             <ol className='mt-3'>
                                 <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi  {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, tanggal
-                                    {setTanggal === true || this.state?.setTanggal === true ?
+                                    {/* {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>
@@ -526,25 +560,49 @@ class BeritaAcara extends Component {
                         <p>
                             Demikian Laporan Evaluasi dan Pembahasan ini dibuat dengan sesungguhnya dan telah dibaca dan dicermati oleh peserta rapat yang hadir.
                         </p>
-                        <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>
-
-                                        {/* <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>
+                        {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>
+
+                                            {/* <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>
+                        }
+                        {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>
+
+                                            {/* <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>
+                        }
 
-                        </CopyToClipboard>
 
                         <div  >
                             <div className='header-ttd signature-border pt-1 pb-1'>

+ 14 - 4
components/Sanksi/SuratBA _detail.js

@@ -84,11 +84,21 @@ class ComponentBA extends React.Component {
 
                         <ol className='mt-3'>
                             <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi  {this.state.dataSanksi.data && (<span>{this.state.dataSanksi.data.laporan.pt.nama}</span>)}, tanggal
-                                {this.state?.setTanggal === true ?
-                                    <span> &nbsp;{moment(this.state?.tanggal).format("DD-MM-YYYY")}</span>
-                                    :
-                                    <span> &nbsp;....... &nbsp;</span>
+                                {this.state?.setTanggal_2 === true ? (
+
+                                    this.state?.setTanggal_2 === true ?
+                                        <span> &nbsp;{moment(this.state?.tanggal_2).format("DD-MM-YYYY")}</span>
+                                        :
+                                        <span> &nbsp;....... &nbsp;</span>
+                                )
+                                    : (
+                                        this.state?.setTanggal === true ?
+                                            <span> &nbsp;{moment(this.state?.tanggal).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>

+ 2 - 2
components/Sanksi/SuratBA_A.js

@@ -75,8 +75,8 @@ class ComponentToPrint extends React.Component {
 
                         <ol className='mt-3'>
                             <li>Telah dibacakan Berita Acara Evaluasi Kinerja Perguruan Tinggi  {dataLaporan.data && (<span>{dataLaporan.data.pt.nama}</span>)}, tanggal
-                                {dataSuratBA?.setTanggal === true || this.state?.setTanggal === true ?
-                                    <span> &nbsp;{moment(dataSuratBA?.tanggal || this.state?.tanggal).format("DD-MM-YYYY")}</span>
+                                {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>
                                 }

+ 1 - 0
env.js

@@ -1,3 +1,4 @@
 // export const TOKEN=77aecfec-10ac-3b4f-ab59-3fbfbeed6324
 // export const API_URL = "http://localhost:5000";
 export const API_URL = "https://api.sidali.kemdikbud.go.id/v1";
+export const ENV = "production"

+ 1 - 1
pages/app/index.js

@@ -123,7 +123,7 @@ class App extends Component {
               </Col>
             </Row>
           </Jumbotron>
-          <span>Version 2.5 ~ 2.4</span>
+          <span>Version 2.6 ~ 2.5</span>
         </ContentWrapper>
       </div>
     );

+ 53 - 20
pages/app/sanksi/proses.js

@@ -22,6 +22,8 @@ import swal from "sweetalert2";
 import { getCsrf } from "../../../actions/security";
 import ComponentToPrint from "../../../components/Sanksi/SuratBA_A";
 import ReactToPrint, { PrintContextConsumer } from 'react-to-print';
+import { updatePddikti } from "../../../actions/sanksi";
+import { ENV } from "../../../env";
 
 
 
@@ -41,6 +43,7 @@ class ProsesSanksi extends Component {
 			pelaporan: {},
 			listSanksi: [],
 			loading: false,
+			localSuccess: false
 		};
 	}
 
@@ -68,15 +71,44 @@ class ProsesSanksi extends Component {
 		const { dataSuratBA, dataUpload } = this.state
 		await inputAutoSave({ data: { PenetapanSanksi: { dataSuratBA, dataUpload, dataPelanggaran: data, activeStep } }, token, id, laporan: true })
 	}
-	done = async (e) => {
-		const getToken = await getCsrf();
-		const _csrf = getToken.token;
-		const toastid = toast.loading("Please wait...");
+
+	done = async () => {
 		this.setState({
 			loading: true
 		})
+		const sanksi = await this.tambahSanksi()
+		if (sanksi && ENV === "production") {
+			await this.updatePddikti(sanksi.data._id)  //kirim sanksiID ke function updatePDDIKTI
+		}
+
+		await Router.push({
+			pathname: "/app/sanksi",
+		});
+	};
+
+	updatePddikti = async (sanksiId) => {
+		const getToken = await getCsrf();
+		const _csrf2 = getToken.token;
+		const toastPddikti = toast.loading("Updating pddikti...");
+		try {
+			const { query, token } = this.props;
+			const { id } = query;
+			await updatePddikti(token, sanksiId, _csrf2)
+
+			toast.update(toastPddikti, { render: "Success Updating PDDIKTI", type: "success", isLoading: false, autoClose: true, closeButton: true });
+
+		}
+
+		catch (error) {
+			toast.update(toastPddikti, { render: ("Error Updating PDDIKTI"), type: "error", isLoading: false, autoClose: true, closeButton: true });
+		}
+
+	}
+	tambahSanksi = async () => {
+		const getToken = await getCsrf();
+		const _csrf = getToken.token;
+		const toastid = toast.loading("Please wait...");
 		try {
-			e.preventDefault();
 			const { query, token } = this.props;
 			const { id } = query;
 			const formdata = new FormData();
@@ -97,21 +129,20 @@ class ProsesSanksi extends Component {
 					formdata.append("dokumen_terima_sanksi", e);
 				});
 			}
-			// if (this.state.dataUpload.filesBeritaAcara && this.state.dataUpload.filesBeritaAcara.length > 0) {
-			// 	this.state.dataUpload.filesBeritaAcara.forEach((e) => {
-			// 		formdata.append("berita_acara", e);
-			// 	});
-			// }
-			await createSanksi(token, id, formdata, _csrf);
-
-			toast.update(toastid, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
-			Router.push({
-				pathname: "/app/sanksi",
-			});
-		} catch (error) {
-			toast.update(toastid, { render: (error.request.message), type: "error", isLoading: false, autoClose: true, closeButton: true });
+
+			const sanksi = await createSanksi(token, id, formdata, _csrf)
+
+			toast.update(toastid, { render: "Success Updating Local", type: "success", isLoading: false, autoClose: true, closeButton: true });
+			return sanksi
 		}
-	};
+
+		catch (error) {
+			toast.update(toastid, { render: error.response.data.message || error.message, type: "error", isLoading: false, autoClose: true, closeButton: true });
+			return null
+		}
+
+	}
+
 
 
 	handleDelegasi = async (data) => {
@@ -417,7 +448,9 @@ class ProsesSanksi extends Component {
 												<Button color className="btn-login color-3e3a8e" onClick={this.toggleStep("5")}>
 													<span className="font-color-white">Previous</span>
 												</Button>
-												<Button className="ml-auto btn-login color-3e3a8e" color onClick={this.done} disabled={this.state.loading}>
+												<Button className="ml-auto btn-login color-3e3a8e" color onClick={this.done}
+													disabled={this.state.loading}
+												>
 													<span className="font-color-white">Done</span>
 												</Button>
 											</div>