yazid138 před 3 roky
rodič
revize
9e5087c47b

+ 25 - 1
components/Pelaporan/InputData.js

@@ -25,12 +25,36 @@ class DropzoneWrapper extends Component {
 	}
 }
 
+const checkIfFilesAreTooBig = (files) => {
+	let valid = true;
+	if (files) {
+		files.map((file) => {
+			if (file.size > 15 * 1024 * 1024) {
+				valid = false;
+			}
+		});
+	}
+	return valid;
+};
+
+const checkIfFilesAreCorrectType = (files) => {
+	let valid = true;
+	if (files) {
+		files.map((file) => {
+			if (!["image/jpeg", "image/png"].includes(file.type)) {
+				valid = false;
+			}
+		});
+	}
+	return valid;
+};
+
 const selectInstanceId = 1;
 const laporanSchema = Yup.object().shape({
 	no_laporan: Yup.string().required("Harap Diisi"),
 	keterangan: Yup.string().min(3).max(200).required("Harap Diisi"),
 	pelanggaran: Yup.array().min(1).required("Harap Diisi"),
-	dokumen: Yup.array().notRequired(),
+	dokumen: Yup.array().notRequired().test("filesize", "Maksimal ukuran dokumen 15mb", checkIfFilesAreTooBig),
 });
 export class InputData extends Component {
 	constructor(props) {

+ 27 - 1
components/Pemeriksaan/InputEvaluasi.js

@@ -7,13 +7,37 @@ import { Row, Col, FormGroup, Input } from "reactstrap";
 import { ToastContainer, toast } from "react-toastify";
 import { Formik, Form, Field, ErrorMessage } from "formik";
 import * as Yup from "yup";
+import { getOneLaporan } from "@/actions/pelaporan";
 
 const selectInstanceId = 1;
+const checkIfFilesAreTooBig = (files) => {
+	let valid = true;
+	if (files) {
+		files.map((file) => {
+			if (file.size > 15 * 1024 * 1024) {
+				valid = false;
+			}
+		});
+	}
+	return valid;
+};
+
+const checkIfFilesAreCorrectType = (files) => {
+	let valid = true;
+	if (files) {
+		files.map((file) => {
+			if (!["image/jpeg", "image/png"].includes(file.type)) {
+				valid = false;
+			}
+		});
+	}
+	return valid;
+};
 
 const evaluasiSchema = Yup.object().shape({
 	tanggal: Yup.date().required("Required"),
 	judul: Yup.string().min(3).max(150).required("Required"),
-	dokumen: Yup.array().min(1).required("Required"),
+	dokumen: Yup.array().min(1).required("Required").test("filesize", "Maksimal ukuran dokumen 15mb", checkIfFilesAreTooBig),
 });
 
 let Dropzone = null;
@@ -110,6 +134,8 @@ export default class InputEvaluasi extends Component {
 		});
 		this.setState({ files: [] });
 		resetForm();
+		const pelaporan = await getOneLaporan(token, query.id);
+		this.props.changePelaporan(pelaporan);
 	};
 
 	render() {

+ 9 - 1
pages/app/pemeriksaan/new.js

@@ -28,6 +28,14 @@ class PemeriksaanNew extends Component {
 		this.setState({ pelaporan });
 	};
 
+	componentShouldUpdate(nextProps, nextState) {
+		return nextState.pelaporan !== this.state.pelaporan;
+	}
+
+	changePelaporan = (data) => {
+		this.setState({ pelaporan: data });
+	};
+
 	render() {
 		const { query, token } = this.props;
 		const { pelaporan } = this.state;
@@ -51,7 +59,7 @@ class PemeriksaanNew extends Component {
 										<Row>
 											<Col lg={12}>
 												<DetailLaporan data={pelaporan.data} />
-												<InputEvaluasi query={query} token={token} />
+												<InputEvaluasi query={query} token={token} changePelaporan={this.changePelaporan} />
 											</Col>
 										</Row>
 									</CardBody>

+ 2 - 2
pages/laporan/new/index.js

@@ -52,8 +52,8 @@ const laporanSchema = Yup.object().shape({
 	email: Yup.string().email().required("Harap Diisi"),
 	pelanggaran_id: Yup.array().min(1).required("Harap Diisi"),
 	pt_id: Yup.string().required("Harap Diisi"),
-	foto: Yup.array().min(1, "Minimal ada 1 data").required("Harus ada").test("filesize", "size foto terlalu besar", checkIfFilesAreTooBig).test("type", "harus jpeg/png", checkIfFilesAreCorrectType),
-	dokumen: Yup.array().nullable().notRequired().test("filesize", "Dokumen terlalu besar", checkIfFilesAreTooBig),
+	foto: Yup.array().min(1, "Minimal ada 1 data").required("Harus ada").test("filesize", "Maksimal ukuran foto 15mb", checkIfFilesAreTooBig).test("type", "harus jpeg/png", checkIfFilesAreCorrectType),
+	dokumen: Yup.array().nullable().notRequired().test("filesize", "Maksimal ukuran dokumen 15mb", checkIfFilesAreTooBig),
 	is_private: Yup.boolean().notRequired(),
 });