浏览代码

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 年之前
父节点
当前提交
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>