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