Browse Source

tambah keterangan di perubahan status laporan

yazid138 3 years ago
parent
commit
1cdbaf2742
1 changed files with 68 additions and 22 deletions
  1. 68 22
      components/Extras/calendar.view.js

+ 68 - 22
components/Extras/calendar.view.js

@@ -38,6 +38,11 @@ const jadwalSchema = Yup.object().shape({
 	dari_tanggal: Yup.date().required("Required"),
 	dari_tanggal: Yup.date().required("Required"),
 	sampai_tanggal: Yup.date().required("Required"),
 	sampai_tanggal: Yup.date().required("Required"),
 });
 });
+
+const laporanSchema = Yup.object().shape({
+	keterangan: Yup.string().required("Harus diisi"),
+});
+
 class Calendar extends Component {
 class Calendar extends Component {
 	calendarPlugins = [interactionPlugin, dayGridPlugin, timeGridPlugin, listPlugin, bootstrapPlugin];
 	calendarPlugins = [interactionPlugin, dayGridPlugin, timeGridPlugin, listPlugin, bootstrapPlugin];
 
 
@@ -74,7 +79,7 @@ class Calendar extends Component {
 		this.defaultStatus();
 		this.defaultStatus();
 		this.setState({ laporan });
 		this.setState({ laporan });
 
 
-		let color = "#" + Math.floor(Math.random() * 16777215).toString(16);
+		let color = "#" + Math.random().toString(16).slice(2, 8);
 		if (laporan.data.jadwal) {
 		if (laporan.data.jadwal) {
 			color = laporan.data.jadwal.warna;
 			color = laporan.data.jadwal.warna;
 		}
 		}
@@ -145,24 +150,26 @@ class Calendar extends Component {
 
 
 	handleChangeSelect = (selectedOption) => this.setState({ selectedOption });
 	handleChangeSelect = (selectedOption) => this.setState({ selectedOption });
 
 
-	handleSimpan = async (e) => {
-		const { selectedOption } = this.state;
+	handleSimpan = async (value) => {
 		const { token, query } = this.props;
 		const { token, query } = this.props;
 		const { id } = query;
 		const { id } = query;
 		let update = null;
 		let update = null;
-		this.setState({ selectedOption });
-		const toastid = toast.loading("Please wait...");
-		if (selectedOption.value === this.getStatus()[1].value) {
-			update = await updateLaporan(token, id, { change_role: "true" });
-		} else if (selectedOption.value === this.getStatus()[2].value) {
-			update = await updateLaporan(token, id, { aktif: "false" });
-		}
-
-		if (!update) {
-			toast.update(toastid, { render: "All is not good", type: "error", isLoading: false, autoClose: true, closeButton: true });
-		} else {
-			toast.update(toastid, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
-			Router.push("/app/penjadwalan");
+		if (value.status.value === this.getStatus()[1].value || value.status.value === this.getStatus()[2].value) {
+			const toastid = toast.loading("Please wait...");
+			const data = { keterangan: value.keterangan };
+			if (value.status.value === this.getStatus()[1].value) {
+				data.change_role = "true";
+				update = await updateLaporan(token, id, data);
+			} else if (value.status.value === this.getStatus()[2].value) {
+				data.aktif = "false";
+				update = await updateLaporan(token, id, data);
+			}
+			if (!update) {
+				toast.update(toastid, { render: "All is not good", type: "error", isLoading: false, autoClose: true, closeButton: true });
+			} else {
+				toast.update(toastid, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
+				Router.push("/app/penjadwalan");
+			}
 		}
 		}
 	};
 	};
 
 
@@ -205,12 +212,51 @@ class Calendar extends Component {
 											<h2 class="card-title-1">Status Pelaporan</h2>
 											<h2 class="card-title-1">Status Pelaporan</h2>
 										</div>
 										</div>
 										<CardBody>
 										<CardBody>
-											<Select value={selectedOption} onChange={this.handleChangeSelect} options={this.getStatus()} required />
-											<div className="btn-simpanjadwal">
-												<Button onClick={this.handleSimpan} className="text-btn-penjadwalan-1 btn-colorpenjadwalan" color="primary" block disabled={laporan.data?.evaluasi.length}>
-													<h4 className="text-btn-penjadwalan-1">Simpan</h4>
-												</Button>
-											</div>
+											<Formik
+												enableReinitialize={true}
+												initialValues={{
+													status: this.getStatus()[0],
+													keterangan: "",
+												}}
+												validationSchema={selectedOption?.value === this.getStatus()[2].value || selectedOption?.value === this.getStatus()[1].value ? laporanSchema : null}
+												onSubmit={this.handleSimpan}
+											>
+												{() => (
+													<Form>
+														<FormGroup>
+															<label className="col-form-label">Status Laporan</label>
+															<Field name="status">
+																{({ field, form }) => (
+																	<Select
+																		value={field.value}
+																		onChange={(e) => {
+																			form.setFieldValue(field.name, e);
+																			this.handleChangeSelect(e);
+																		}}
+																		options={this.getStatus()}
+																		required
+																	/>
+																)}
+															</Field>
+															<ErrorMessage name="status" component="div" className="form-text text-danger" />
+														</FormGroup>
+														{selectedOption?.value === this.getStatus()[0].value ? (
+															""
+														) : (
+															<FormGroup>
+																<label className="col-form-label">Keterangan</label>
+																<Field name="keterangan">{({ field, form }) => <Input type="text" placeholder="Keterangan" {...field} />}</Field>
+																<ErrorMessage name="keterangan" component="div" className="form-text text-danger" />
+															</FormGroup>
+														)}
+														<div className="btn-simpanjadwal">
+															<Button className="text-btn-penjadwalan-1 btn-colorpenjadwalan" color="primary" block disabled={laporan.data?.evaluasi.length}>
+																<h4 className="text-btn-penjadwalan-1">Simpan</h4>
+															</Button>
+														</div>
+													</Form>
+												)}
+											</Formik>
 										</CardBody>
 										</CardBody>
 									</Card>
 									</Card>
 									{selectedOption?.value === this.getStatus()[2].value || selectedOption?.value === this.getStatus()[1].value ? (
 									{selectedOption?.value === this.getStatus()[2].value || selectedOption?.value === this.getStatus()[1].value ? (