yazid138 3 年 前
コミット
1adf9c23c7
3 ファイル変更85 行追加20 行削除
  1. 12 2
      actions/pelaporan.js
  2. 1 1
      actions/user.js
  3. 72 17
      pages/laporan/new/index.js

+ 12 - 2
actions/pelaporan.js

@@ -50,9 +50,19 @@ export const createPelaporan = async (token, data) => {
 	return res.data;
 };
 
-export const createLaporanPublic = async (data) => {
+// export const createLaporanPublic = async (data) => {
+// 	try {
+// 		const res = await axiosAPI.post("/public/laporan/create", data);
+// 		return res.data;
+// 	} catch (error) {
+// 		console.log("error", error.response.data);
+// 		return false;
+// 	}
+// };
+
+export const createLaporanPublic = async (token, data) => {
 	try {
-		const res = await axiosAPI.post("/public/laporan/create", data);
+		const res = await axiosAPI.post("/public/laporan/create", data, { headers: { Authorization: token } });
 		return res.data;
 	} catch (error) {
 		console.log("error", error.response.data);

+ 1 - 1
actions/user.js

@@ -11,7 +11,7 @@ export const getPublicUser = async () => {
 
 export const createPublicUser = async (data) => {
 	try {
-		const response = await axiosAPI.post("/user/create", data);
+		const response = await axiosAPI.post("/public/user/create", data);
 		return response.data;
 	} catch (error) {
 		if (error.response) return error.response.data;

+ 72 - 17
pages/laporan/new/index.js

@@ -14,6 +14,7 @@ import { createPublicUser } from "@/actions/user";
 import { ToastContainer, toast } from "react-toastify";
 import { Formik, Form, Field, ErrorMessage } from "formik";
 import * as Yup from "yup";
+import swal from "sweetalert";
 
 import "react-toastify/dist/ReactToastify.css";
 
@@ -117,12 +118,12 @@ class App extends Component {
 		const formdata = new FormData();
 		formdata.append("no_laporan", data.no_laporan);
 		formdata.append("pt_id", data.pt_id);
-		formdata.append("keterangan", data.keterangan);
-		formdata.append("is_private", data.is_private);
 		formdata.append("nama", data.nama);
-		formdata.append("alamat", data.alamat);
-		formdata.append("no_hp", data.no_hp);
 		formdata.append("email", data.email);
+		formdata.append("no_hp", data.no_hp);
+		formdata.append("alamat", data.alamat);
+		formdata.append("is_private", data.is_private);
+		formdata.append("keterangan", data.keterangan);
 		formdata.append("pelanggaran_id", data.pelanggaran_id.join(","));
 		formdata.append("foto", data.foto[0]);
 		if (data.dokumen.length > 0) {
@@ -141,6 +142,48 @@ class App extends Component {
 		}
 	};
 
+	createLaporan = async (data, token) => {
+		const formdata = new FormData();
+		formdata.append("pt_id", data.pt_id);
+		formdata.append("keterangan", data.keterangan);
+		formdata.append("no_verifikasi", data.noVerifikasi);
+		formdata.append("pelanggaran_id", data.pelanggaran_id.join(","));
+		if (data.dokumen.length > 0) {
+			Array.from(data.dokumen).forEach((e) => {
+				formdata.append("dokumen", e);
+			});
+		}
+
+		const success = await createLaporanPublic(token, formdata);
+		if (!success) {
+			swal({
+				text: "Kode Verifikasi tidak sesuai",
+				icon: "error",
+			});
+		} else {
+			swal({
+				icon: "success",
+				title: "Berhasil!",
+				text: "Laporan berhasil terkirim",
+			});
+
+			Router.push("/laporan/new");
+		}
+	};
+
+	createUser = async (data) => {
+		const formdata = new FormData();
+		formdata.append("no_laporan", data.no_laporan);
+		formdata.append("pt_id", data.pt_id);
+		formdata.append("nama", data.nama);
+		formdata.append("email", data.email);
+		formdata.append("no_hp", data.no_hp);
+		formdata.append("alamat", data.alamat);
+		formdata.append("is_private", data.is_private);
+		formdata.append("foto", data.foto[0]);
+		return await createPublicUser(formdata);
+	};
+
 	render() {
 		const { selectedJenis, pelanggaran } = this.state;
 		return (
@@ -148,7 +191,8 @@ class App extends Component {
 				<ToastContainer />
 				<Navbar className="navbar-color" expand="md" dark>
 					<NavbarBrand href="/">
-					<img className="img-fluid" src="/static/img/Logo-vputih.png" alt="App Logo" /><img className="img-text-vputih" src="/static/img/Logo-text-vputih.png" alt="App Logo" />
+						<img className="img-fluid" src="/static/img/Logo-vputih.png" alt="App Logo" />
+						<img className="img-text-vputih" src="/static/img/Logo-text-vputih.png" alt="App Logo" />
 					</NavbarBrand>
 					<NavbarToggler onClick={this.toggleCollapse} />
 					<Collapse isOpen={this.state.isOpen} navbar>
@@ -184,14 +228,24 @@ class App extends Component {
 											is_private: false,
 										}}
 										validationSchema={laporanSchema}
-										onSubmit={this.handleKirim}
+										onSubmit={async (data) => {
+											const user = await this.createUser(data);
+											data.noVerifikasi = await swal({
+												text: "Masukkan kode verifikasi",
+												content: "input",
+												button: {
+													text: "Kirim",
+													closeModal: false,
+												},
+											});
+											await this.createLaporan(data, user.data.token);
+										}}
 									>
 										<Form className="form-horizontal">
 											<div class="header-1">
-    												<h2 class="card-title-1">Identitas Pelapor</h2>
-												</div>
-											<FormGroup row>
-											</FormGroup>
+												<h2 class="card-title-1">Identitas Pelapor</h2>
+											</div>
+											<FormGroup row></FormGroup>
 											<FormGroup row>
 												<label className="col-md-2 col-form-label">Nama Lengkap</label>
 												<div className="col-md-10">
@@ -230,14 +284,15 @@ class App extends Component {
 													<div className="checkbox c-checkbox">
 														<label>
 															<Field name="is_private">{({ field }) => <Input type="checkbox" {...field} />}</Field>
-															<span className="fa fa-check"></span><text>*</text>Klik jika ingin merahasiakan identitas anda
+															<span className="fa fa-check"></span>
+															<text>*</text>Klik jika ingin merahasiakan identitas anda
 														</label>
 													</div>
 												</div>
 											</FormGroup>
 											<div class="header-1">
-    												<h2 class="card-title-1">Detail Laporan</h2>
-												</div>
+												<h2 class="card-title-1">Detail Laporan</h2>
+											</div>
 											{/* <p className="lead bb">Detail Laporan</p> */}
 											<FormGroup row>
 												<label className="col-md-2 col-form-label">Nomor Pelaporan</label>
@@ -309,19 +364,19 @@ class App extends Component {
 													<div className="checkbox c-checkbox">
 														<label>
 															<Field name="setuju">{({ field }) => <Input type="checkbox" {...field} />}</Field>
-															<span className="fa fa-check"></span><text>*</text>Klik jika data yang anda laporkan sudah benar
+															<span className="fa fa-check"></span>
+															<text>*</text>Klik jika data yang anda laporkan sudah benar
 															<ErrorMessage name="setuju" component="div" className="form-text text-danger" />
 														</label>
 													</div>
 												</div>
 											</FormGroup>
 											<FormGroup row>
-											<div className="posisi-btn-1">
+												<div className="posisi-btn-1">
 													<Button className="button-kirimlaporan" color="info" block type="submit">
 														<h3 className="text-kirimlaporan">Kirim Laporan</h3>
 													</Button>
-												
-											</div>
+												</div>
 											</FormGroup>
 										</Form>
 									</Formik>