yazid138 3 年之前
父節點
當前提交
daa553f1df
共有 3 個文件被更改,包括 65 次插入72 次删除
  1. 30 35
      actions/pelaporan.js
  2. 32 36
      components/Extras/calendar.view.js
  3. 3 1
      components/Main/Timeline.js

+ 30 - 35
actions/pelaporan.js

@@ -53,42 +53,37 @@ export const createPelaporan = async (token, data) => {
 	return res.data;
 };
 
-export const addStatus = async ({ number, ptId }, data) => {
-	try {
-		const res = await post(`/pelaporan/status/add?number=${number}&ptId=${ptId}`, data);
-		return res.data;
-	} catch (error) {
-		console.log("error", error);
-		return false;
-	}
-};
+// export const addStatus = async ({ number, ptId }, data) => {
+// 	try {
+// 		const res = await post(`/pelaporan/status/add?number=${number}&ptId=${ptId}`, data);
+// 		return res.data;
+// 	} catch (error) {
+// 		console.log("error", error);
+// 		return false;
+// 	}
+// };
 
-export const removeLaporan = async ({ number, ptId }) => {
-	try {
-		const res = await del(`/pelaporan/remove?number=${number}&ptId=${ptId}`);
-		return res.data;
-	} catch (error) {
-		console.log("error", error);
-		return false;
-	}
+export const updateLaporan = async (token, id, data) => {
+	const res = await axiosAPI.put(`/laporan/update/${id}`, data, { headers: { Authorization: token } });
+	return res.data;
 };
 
-export const activeLaporan = async ({ number, ptId }) => {
-	try {
-		const res = await put(`/pelaporan/active?number=${number}&ptId=${ptId}`);
-		return res.data;
-	} catch (error) {
-		console.log("error", error);
-		return false;
-	}
-};
+// export const activeLaporan = async ({ number, ptId }) => {
+// 	try {
+// 		const res = await put(`/pelaporan/active?number=${number}&ptId=${ptId}`);
+// 		return res.data;
+// 	} catch (error) {
+// 		console.log("error", error);
+// 		return false;
+// 	}
+// };
 
-export const changeRoleData = async ({ number, ptId }, data) => {
-	try {
-		const res = await post(`/pelaporan/change-role-data?number=${number}&ptId=${ptId}`, data);
-		return res.data;
-	} catch (error) {
-		console.log("error", error);
-		return false;
-	}
-};
+// export const changeRoleData = async ({ number, ptId }, data) => {
+// 	try {
+// 		const res = await post(`/pelaporan/change-role-data?number=${number}&ptId=${ptId}`, data);
+// 		return res.data;
+// 	} catch (error) {
+// 		console.log("error", error);
+// 		return false;
+// 	}
+// };

+ 32 - 36
components/Extras/calendar.view.js

@@ -1,7 +1,7 @@
 import React, { Component } from "react";
 import ContentWrapper from "@/components/Layout/ContentWrapper";
 import { Card, CardBody, CardHeader, CardTitle, Button, Row, Col, FormGroup, Input } from "reactstrap";
-import { getPelaporan, getOneLaporan, addStatus, removeLaporan, activeLaporan, changeRoleData } from "@/actions/pelaporan";
+import { getPelaporan, getOneLaporan, updateLaporan } from "@/actions/pelaporan";
 import { updateJadwal } from "@/actions/penjadwalan";
 import DetailLaporan from "@/components/Main/DetailLaporan";
 import Link from "next/link";
@@ -67,10 +67,8 @@ class Calendar extends Component {
 	async componentDidMount() {
 		const { token, query } = this.props;
 
-		const dataLaporan = await getPelaporan(token, { jadwal: true });
-
 		const laporan = await getOneLaporan(token, query.id);
-
+		const dataLaporan = await getPelaporan(token, { jadwal: true });
 		this.setState({ dataLaporan });
 		this.getDataEvent();
 		this.defaultStatus();
@@ -82,6 +80,10 @@ class Calendar extends Component {
 		this.setState({ externalEvents: [{ id: query.id, color, name: `Jadwal Pemeriksaan - No.Laporan : ${laporan.data.no_laporan} - ${laporan.data.pt.nama}`, allDay: true }] });
 	}
 
+	componentShouldUpdate(nextProps, nextState) {
+		return nextState.dataLaporan !== this.state.dataLaporan;
+	}
+
 	getStatus = () => (this.props.user.role.id === 2021 ? statusLLDIKTI : status);
 
 	getDataEvent = () => {
@@ -113,7 +115,7 @@ class Calendar extends Component {
 	};
 
 	handleEventCalendar = async (data) => {
-		const { token, query } = this.props;
+		const { query, token } = this.props;
 		const { id } = query;
 		const { laporan } = this.state;
 		const warna = "#" + Math.floor(Math.random() * 16777215).toString(16);
@@ -131,13 +133,9 @@ class Calendar extends Component {
 			success: "Success",
 			error: "Error",
 		});
-		// this.state.dataEvent.push({
-		// 	title: data.judul,
-		// 	start: new Date(data.dari_tanggal),
-		// 	end: new Date(data.sampai_tanggal),
-		// 	backgroundColor: warna,
-		// 	borderColor: warna,
-		// });
+		const dataLaporan = await getPelaporan(token, { jadwal: true });
+		this.setState({ dataLaporan });
+		this.getDataEvent();
 	};
 
 	defaultStatus = async () => {
@@ -148,26 +146,24 @@ class Calendar extends Component {
 	handleChangeSelect = (selectedOption) => this.setState({ selectedOption });
 
 	handleSimpan = async (e) => {
-		const { selectedOption } = this.state;
-		const { ptId, number } = this.props.query;
-		this.setState({ selectedOption });
-		const id = toast.loading("Please wait...");
-		if (selectedOption.value === this.getStatus()[1].value) {
-			const roleId = this.props.user.peran[0].peran.id;
-			await changeRoleData({ number, ptId }, { role_data: roleId === 2021 ? "dikti" : "lldikti" });
-			const statusData = roleId === 2021 ? status : statusLLDIKTI;
-			await addStatus({ number, ptId }, { status: statusData[0].value });
-			toast.update(id, { render: "All is good", type: "success", isLoading: false });
-			Router.push("/app/penjadwalan");
-			return;
-		}
-		if (selectedOption.value === this.getStatus()[2].value) {
-			await removeLaporan({ number, ptId });
-		} else if (!this.state.laporan.data[0].active) {
-			await activeLaporan({ number, ptId });
+		const toastid = toast.loading("Please wait...");
+		try {
+			const { selectedOption } = this.state;
+			const { user, token, query } = this.props;
+			const { id } = query;
+			this.setState({ selectedOption });
+			if (selectedOption.value === this.getStatus()[1].value) {
+				await updateLaporan(token, id, { role_data: user.role.id === 2020 ? "lldikti" : "dikti" });
+				Router.push("/app/penjadwalan");
+			}
+			if (selectedOption.value === this.getStatus()[2].value) {
+				await updateLaporan(token, id, { aktif: "false" });
+				Router.push("/app/penjadwalan");
+			}
+			toast.update(toastid, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
+		} catch (error) {
+			toast.update(toastid, { render: "All is not good", type: "error", isLoading: false, autoClose: true, closeButton: true });
 		}
-		await addStatus({ number, ptId }, { status: selectedOption.value });
-		toast.update(id, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
 	};
 
 	render() {
@@ -228,14 +224,14 @@ class Calendar extends Component {
 													<Formik
 														enableReinitialize={true}
 														initialValues={{
-															judul: laporan.data?.jadwal.judul || "",
-															dari_tanggal: moment(laporan.data?.jadwal.dari_tanggal) || new Date(),
-															sampai_tanggal: moment(laporan.data?.jadwal.sampai_tanggal) || new Date(),
+															judul: laporan.data?.jadwal?.judul || "",
+															dari_tanggal: moment(laporan.data?.jadwal?.dari_tanggal) || "",
+															sampai_tanggal: moment(laporan.data?.jadwal?.sampai_tanggal) || "",
 														}}
 														validationSchema={jadwalSchema}
 														onSubmit={this.handleEventCalendar}
 													>
-														{({ isSubmitting }) => (
+														{() => (
 															<Form>
 																<FormGroup>
 																	<label className="col-form-label">Judul</label>
@@ -276,7 +272,7 @@ class Calendar extends Component {
 																</FormGroup>
 																<FormGroup row>
 																	<div className="col-xl-12">
-																		<Button color="primary" block type="submit" disabled={isSubmitting}>
+																		<Button color="primary" block type="submit">
 																			Simpan Jadwal
 																		</Button>
 																	</div>

+ 3 - 1
components/Main/Timeline.js

@@ -28,7 +28,9 @@ function Timeline({ data, noFile = false }) {
 														alt="Avatar"
 													/>
 													<p className="m-0">
-														<strong>{data.user.nama}</strong>
+														<strong>
+															{data.user.nama} - {data.user.role.nama}
+														</strong>
 														<br />
 														{data.keterangan}
 														<br />