|
|
@@ -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>
|