andi 2 年之前
父节点
当前提交
e23ad8119a
共有 2 个文件被更改,包括 93 次插入56 次删除
  1. 90 55
      components/NaikSanksi/InputTanggal.js
  2. 3 1
      pages/app/sanksi/proses.js

+ 90 - 55
components/NaikSanksi/InputTanggal.js

@@ -47,7 +47,7 @@ const checkIfFilesAreCorrectType = (files) => {
 const rekomendasiSchema = Yup.object().shape({
     no_sanksi: Yup.string().required("Wajib isi Nomor Sanksi"),
     keterangan: Yup.string().min(3, "Minimal 3 Huruf").max(200).required("Wajib isi keterangan"),
-    from_date: Yup.date().required("Wajib diisi"),
+    from_date: Yup.date().notRequired("Wajib diisi"),
     to_date: Yup.date().notRequired("Wajib diisi"),
     sanksi: Yup.array().required("Wajib isi pelanggaran"),
     dokumen: Yup.array().required("Wajib diisi").test("filesize", "Maksimal ukuran dokumen 15mb", checkIfFilesAreTooBig),
@@ -84,7 +84,7 @@ class InputTanggal extends Component {
             sanksi: {},
             keteranganLaporan: "",
             tmtCheck: false,
-            listSanksi: "",
+            listSanksi: null,
             selectedFile: {}
         };
     }
@@ -109,7 +109,9 @@ class InputTanggal extends Component {
             dropdownOpen: !this.state.dropdownOpen,
         });
     };
-
+    handleChangeListSanksi = (listSanksi) => {
+        this.setState({ listSanksi }, this.setUploadSuratSanksi);
+    };
     onDrop = (selectedFile) => {
         this.setState({
             selectedFile: selectedFile.map((file) =>
@@ -153,8 +155,10 @@ class InputTanggal extends Component {
     handleTmtCheck = () => {
         this.setState({ tmtCheck: !this.state.tmtCheck });
     };
-
-
+    handleChangeListSanksi = (listSanksi) => {
+        this.setState({ listSanksi });
+    };
+ 
     handelSimpan = async (data) => {
         if (this.props?.user?.role.id === 2024) {
             Swal.fire({
@@ -165,7 +169,32 @@ class InputTanggal extends Component {
                 confirmButtonText: 'Oke'
             })
         } else {
-            const getToken = await getCsrf();
+            if (this.state.tmtCheck === true ||this.state.listSanksi?.find(z => z.label === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.label === "Sanksi Administratif Berat - Pembubaran PTN atau pencabutan izin PTS")) {
+                const getToken = await getCsrf();
+                const _csrf = getToken.token;
+                const { token, query } = this.props;
+                const { id } = query;
+                const formdata = new FormData();
+                formdata.append("no_sanksi", data.no_sanksi);
+                formdata.append("keterangan", data.keterangan);
+                // formdata.append("from_date", data.from_date);
+                // formdata.append("to_date", data.to_date);
+                // formdata.append("sanksi", JSON.stringify(data.sanksi.map((e) => ({ label: e.value }))));
+                formdata.append("sanksi", JSON.stringify(data.sanksi.map((e) => ({ label: e.value.split(";")[0], description: e.value.split(";")[1], level: e.value.split(";")[2] }))));
+    
+                this.state.files.forEach((e) => {
+                    formdata.append("dokumen", e);
+                });
+                const toastid = toast.loading("Please wait...");
+                const added = await update(token, id, formdata, _csrf);
+                if (!added) {
+                    toast.update(toastid, { render: "Error", type: "error", isLoading: false, autoClose: true, closeButton: true });
+                } else {
+                    toast.update(toastid, { render: "Success", type: "success", isLoading: false, autoClose: true, closeButton: true });
+                    Router.push("/app/naik-sanksi");
+                }
+            }else{
+                const getToken = await getCsrf();
             const _csrf = getToken.token;
             const { token, query } = this.props;
             const { id } = query;
@@ -189,6 +218,8 @@ class InputTanggal extends Component {
                 Router.push("/app/naik-sanksi");
             }
         }
+            }
+            
 
     };
     render() {
@@ -206,7 +237,6 @@ class InputTanggal extends Component {
                 <button className="bg-transparent button-transparent border-0 fas fa-trash text-danger float-right" onClick={removeFile(file)} />
             </p>
         ));
-
         return (
             <Card className="card-default">
                 <CardBody>
@@ -239,16 +269,18 @@ class InputTanggal extends Component {
                                         <ErrorMessage name="keterangan" component="div" className="form-text text-danger" />
                                     </div>
                                 </FormGroup>
-                                <FormGroup row>
-                                    <label className="col-md-2 col-form-label">Tidak Perlu TMT</label>
-                                    <div className="col-md-10 mt-2">
-                                        <div className="checkbox c-checkbox">
-                                            <label>
-                                                <Input type="checkbox" onChange={this.handleTmtCheck} defaultChecked={this.state.tmtCheck} />
-                                                <span className="fa fa-check"></span></label>
+                                {!this.state.listSanksi?.find(z => z.label === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.label === "Sanksi Administratif Berat - Pembubaran PTN atau pencabutan izin PTS") &&
+                                    <FormGroup row>
+                                        <label className="col-md-2 col-form-label">Tidak Perlu TMT</label>
+                                        <div className="col-md-10 mt-2">
+                                            <div className="checkbox c-checkbox">
+                                                <label>
+                                                    <Input type="checkbox" onChange={this.handleTmtCheck} defaultChecked={this.state.tmtCheck} />
+                                                    <span className="fa fa-check"></span></label>
+                                            </div>
                                         </div>
-                                    </div>
-                                </FormGroup>
+                                    </FormGroup>
+                                }
                                 {this.state.tmtCheck && (
                                     <FormGroup row className="mt-3">
                                         <label className="col-md-2 col-form-label">Tanggal Penetapan Sanksi</label>
@@ -256,25 +288,25 @@ class InputTanggal extends Component {
                                             <Field name="from_date">
                                                 {({ field, form }) => (
                                                     <Datetime
-                                                    timeFormat={false}
-                                                    inputProps={{ className: "form-control" }}
-                                                    value={field.value || "DD/MM/YYYY"}
-                                                    onChange={(from_date) => {
-                                                        form.setFieldValue(field.name, from_date);
-                                                        this.setState({ from_date })
-                                                    }}
-                                                    closeOnSelect={true}
-                                                    isValidDate={(e) => {
-                                                        return e.isBefore(new Date())
-                                                    }}
-                                                />
+                                                        timeFormat={false}
+                                                        inputProps={{ className: "form-control" }}
+                                                        value={field.value || "DD/MM/YYYY"}
+                                                        onChange={(from_date) => {
+                                                            form.setFieldValue(field.name, from_date);
+                                                            this.setState({ from_date })
+                                                        }}
+                                                        closeOnSelect={true}
+                                                        isValidDate={(e) => {
+                                                            return e.isBefore(new Date())
+                                                        }}
+                                                    />
                                                 )}
                                             </Field>
                                             <ErrorMessage name="from_date" component="div" className="form-text text-danger" />
                                         </span>
                                     </FormGroup>
                                 )}
-                                {!this.state.tmtCheck && (
+                                {!this.state.tmtCheck && !this.state.listSanksi?.find(z => z.label === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.label === "Sanksi Administratif Berat - Pembubaran PTN atau pencabutan izin PTS") && (
                                     <FormGroup row className="mt-3">
                                         <label className="col-md-2 col-form-label">Isi TMT :</label>
                                         <div className="col-md-6">
@@ -284,18 +316,18 @@ class InputTanggal extends Component {
                                                         <Field name="from_date">
                                                             {({ field, form }) => (
                                                                 <Datetime
-                                                                timeFormat={false}
-                                                                inputProps={{ className: "form-control" }}
-                                                                value={field.value || "DD/MM/YYYY"}
-                                                                onChange={(from_date) => {
-                                                                    form.setFieldValue(field.name, from_date);
-                                                                    this.setState({ from_date })
-                                                                }}
-                                                                closeOnSelect={true}
-                                                                isValidDate={(e) => {
-                                                                    return e.isBefore(new Date())
-                                                                }}
-                                                            />
+                                                                    timeFormat={false}
+                                                                    inputProps={{ className: "form-control" }}
+                                                                    value={field.value || "DD/MM/YYYY"}
+                                                                    onChange={(from_date) => {
+                                                                        form.setFieldValue(field.name, from_date);
+                                                                        this.setState({ from_date })
+                                                                    }}
+                                                                    closeOnSelect={true}
+                                                                    isValidDate={(e) => {
+                                                                        return e.isBefore(new Date())
+                                                                    }}
+                                                                />
                                                             )}
                                                         </Field>
                                                         <ErrorMessage name="from_date" component="div" className="form-text text-danger" />
@@ -306,18 +338,18 @@ class InputTanggal extends Component {
                                                         <Field name="to_date">
                                                             {({ field, form }) => (
                                                                 <Datetime
-                                                                timeFormat={false}
-                                                                inputProps={{ className: "form-control" }}
-                                                                value={field.value || "DD/MM/YYYY"}
-                                                                onChange={(to_date) => {
-                                                                    form.setFieldValue(field.name, to_date);
-                                                                    this.setState({ to_date })
-                                                                }}
-                                                                closeOnSelect={true}
-                                                                isValidDate={(e) => {
-                                                                    return e.isBefore(addMonths(new Date(this.state.from_date), 6)) && e.isAfter(new Date(this.state.from_date))
-                                                                }}
-                                                            />
+                                                                    timeFormat={false}
+                                                                    inputProps={{ className: "form-control" }}
+                                                                    value={field.value || "DD/MM/YYYY"}
+                                                                    onChange={(to_date) => {
+                                                                        form.setFieldValue(field.name, to_date);
+                                                                        this.setState({ to_date })
+                                                                    }}
+                                                                    closeOnSelect={true}
+                                                                    isValidDate={(e) => {
+                                                                        return e.isBefore(addMonths(new Date(this.state.from_date), 6)) && e.isAfter(new Date(this.state.from_date))
+                                                                    }}
+                                                                />
                                                             )}
                                                         </Field>
                                                         <ErrorMessage name="to_date" component="div" className="form-text text-danger" />
@@ -327,7 +359,7 @@ class InputTanggal extends Component {
                                         </div>
                                     </FormGroup>
                                 )}
-                                {!this.state.tmtCheck && (
+                                {!this.state.tmtCheck && !this.state.listSanksi?.find(z => z.label === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.label === "Sanksi Administratif Berat - Pembubaran PTN atau pencabutan izin PTS") && (
                                     <FormGroup row className="mt-1">
                                         <label className="col-md-2 col-form-label">TMT berlaku</label>
                                         <div className="col-md-10 mt-2">
@@ -335,7 +367,7 @@ class InputTanggal extends Component {
                                         </div>
                                     </FormGroup>
                                 )}
-                                {!this.state.tmtCheck && (
+                                {!this.state.tmtCheck && !this.state.listSanksi?.find(z => z.label === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.label === "Sanksi Administratif Berat - Pembubaran PTN atau pencabutan izin PTS") && (
                                     <FormGroup row className="mt-1">
                                         <label className="col-md-2 col-form-label">TMT</label>
                                         <div className="col-md-10 mt-2">
@@ -352,6 +384,9 @@ class InputTanggal extends Component {
                                             isMulti
                                             onChange={(e) => {
                                                 form.setFieldValue(field.name, e);
+                                                this.handleChangeListSanksi(e);
+
+
                                             }}
                                         />}</Field>
                                         <ErrorMessage name="sanksi" component="div" className="form-text text-danger" />

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

@@ -170,6 +170,8 @@ class ProsesSanksi extends Component {
 				formdata.append("to_date", this.state.dataUpload.akhirTMT);
 				formdata.append("tanggal_terima_sanksi", this.state.dataUpload.terimaSuratSanksi);
 				formdata.append("tanggal_akhir_keberatan", this.state.dataUpload.tglAkhirKeberatan);
+				formdata.append("sanksi", JSON.stringify(this.state.dataUpload.listSanksi.map((e) => ({ label: e.value.split(";")[0], description: e.value.split(";")[1], level: e.value.split(";")[2] }))));
+
 				formdata.append("pelanggaran_id", this.state.dataPelanggaran.data.map((e) => e._id).join());
 				if (this.state.dataUpload.files && this.state.dataUpload.files.length > 0) {
 					this.state.dataUpload.files.forEach((e) => {
@@ -281,7 +283,7 @@ class ProsesSanksi extends Component {
 		const dataUpload = this.state.dataUpload
 		const dataPelanggaran = this.state.dataPelanggaran
 		if (dataUpload?.tidakPerluTMTCheck === true || dataUpload?.awalTMT === undefined || dataUpload?.awalTMT === "" ||
-		dataUpload?.akhirTMT === undefined || dataUpload?.akhirTMT === "") {
+			dataUpload?.akhirTMT === undefined || dataUpload?.akhirTMT === "") {
 			if (
 				dataUpload?.nomorSanksi === undefined || dataUpload?.nomorSanksi === "" ||
 				dataUpload?.keterangan === undefined || dataUpload?.keterangan === "" ||