yazid138 3 năm trước cách đây
mục cha
commit
152c7f91c1

+ 5 - 6
actions/keberatan.js

@@ -1,9 +1,9 @@
 import { post } from "../config/request";
+import axiosAPI from "../config/axios";
 
-export const addKeberatan = async ({ noSanksi, ptId }, data) => {
+export const addKeberatan = async (token, id, data) => {
 	try {
-		const res = await post(`/keberatan/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
-		console.log(res);
+		const res = await axiosAPI.post(`/sanksi/keberatan/create/${id}`, data, { headers: { Authorization: token } });
 		return res.data;
 	} catch (error) {
 		console.log("error", error);
@@ -11,10 +11,9 @@ export const addKeberatan = async ({ noSanksi, ptId }, data) => {
 	}
 };
 
-export const addJawabanKeberatan = async ({ noSanksi, ptId }, data) => {
+export const addJawabanKeberatan = async (token, id, data) => {
 	try {
-		const res = await post(`/keberatan/jawaban/add?noSanksi=${noSanksi}&ptId=${ptId}`, data);
-		console.log(res);
+		const res = await axiosAPI.post(`/sanksi/keberatan/jawaban/create/${id}`, data, { headers: { Authorization: token } });
 		return res.data;
 	} catch (error) {
 		console.log("error", error);

+ 4 - 4
components/Keberatan/Riwayat.js

@@ -25,13 +25,13 @@ function Riwayat({ data }) {
 								<tr>
 									<td>{moment(data.createAt).format("DD MMMM YYYY")}</td>
 									<td>{data.status}</td>
-									<td>{data.description}</td>
+									<td>{data.keterangan}</td>
 									<td>
-										{data.files.map((e) => (
+										{data.dokumen.map((e) => (
 											<>
 												<em className="fa-lg far fa-file-code"></em>
-												<a className="text-muted" href={API_URL + e.path} target="_blank" download={e.name}>
-													{e.name}
+												<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+													{e.judul}
 												</a>
 											</>
 										))}

+ 6 - 6
components/Keberatan/TableSanksi.js

@@ -23,25 +23,25 @@ function TableSanksi({ listData, to, linkName }) {
 								? listData.map((data) => {
 										return (
 											<tr key={data._id}>
-												<td>{data.sanksi.no_sanksi}</td>
+												<td>{data.no_sanksi}</td>
 												<td>
 													<div className="media align-items-center">
 														<div className="media-body d-flex">
 															<div>
-																<h4 className="m-0">{data.pt.nama}</h4>
-																<p>{data.description.length > 25 ? data.description.substring(0, 25) + "..." : data.description}</p>
+																<h4 className="m-0">{data.laporan.pt.nama}</h4>
+																<p>{data.keterangan.length > 25 ? data.keterangan.substring(0, 25) + "..." : data.keterangan}</p>
 															</div>
 														</div>
 													</div>
 												</td>
-												<td>{moment(data.sanksi.createdAt).fromNow()}</td>
-												<td>{data.sanksi.keberatan.jawaban ? <div className="badge badge-info">Sudah Dijawab</div> : <div className="badge badge-danger">Belum Dijawab</div>}</td>
+												<td>{moment(data.createdAt).fromNow()}</td>
+												<td>{data.jawaban?.keberatan ? <div className="badge badge-info">Sudah Dijawab</div> : <div className="badge badge-danger">Belum Dijawab</div>}</td>
 												<td>
 													<div className="ml-auto">
 														<Link
 															href={{
 																pathname: to,
-																query: { noSanksi: data.sanksi.no_sanksi, ptId: data.pt_id },
+																query: { id: data._id },
 															}}
 														>
 															<Button color="primary" size="sm">

+ 3 - 4
components/Main/PermohonanPT.js

@@ -1,6 +1,5 @@
 import Scrollable from "@/components/Common/Scrollable";
 import { Col, FormGroup } from "reactstrap";
-import { API_URL } from "@/env";
 
 function PermohonanPT({ data, title = null }) {
 	return (
@@ -13,14 +12,14 @@ function PermohonanPT({ data, title = null }) {
 						<Scrollable height="120px" className="list-group">
 							<table className="table table-bordered bg-transparent">
 								<tbody>
-									{data.files.map((e) => (
+									{data.dokumen.map((e) => (
 										<tr>
 											<td>
 												<em className="fa-lg far fa-file-code"></em>
 											</td>
 											<td>
-												<a className="text-muted" href={API_URL + e.path} target="_blank" download={e.name}>
-													{e.name}
+												<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+													{e.judul}
 												</a>
 											</td>
 										</tr>

+ 7 - 7
components/Main/TableSanksi.js

@@ -14,7 +14,7 @@ function TableSanksi({ listData, to, linkName }) {
 								<tr>
 									<th>Nomor Sanksi</th>
 									<th>Keterangan Sanksi</th>
-									{listData?.sanksi?.user_id.nama && <th>Dibuat Oleh</th>}
+									{listData?.user.nama && <th>Dibuat Oleh</th>}
 									<th>Created</th>
 									<th></th>
 								</tr>
@@ -24,25 +24,25 @@ function TableSanksi({ listData, to, linkName }) {
 									? listData.map((data) => {
 											return (
 												<tr key={data._id}>
-													<td>{data.sanksi.no_sanksi}</td>
+													<td>{data.no_sanksi}</td>
 													<td>
 														<div className="media align-items-center">
 															<div className="media-body d-flex">
 																<div>
-																	<h4 className="m-0">{data.pt.nama}</h4>
-																	<p>{data.description.length > 25 ? data.description.substring(0, 25) + "..." : data.description}</p>
+																	<h4 className="m-0">{data.laporan.pt.nama}</h4>
+																	<p>{data.keterangan.length > 25 ? data.keterangan.substring(0, 25) + "..." : data.keterangan}</p>
 																</div>
 															</div>
 														</div>
 													</td>
-													{data.sanksi.user_id?.nama && <td>{data.sanksi.user_id.nama}</td>}
-													<td>{moment(data.sanksi.createdAt).fromNow()}</td>
+													{data.user?.nama && <td>{data.user.nama}</td>}
+													<td>{moment(data.createdAt).fromNow()}</td>
 													<td>
 														<div className="ml-auto">
 															<Link
 																href={{
 																	pathname: to,
-																	query: { noSanksi: data.sanksi.no_sanksi, ptId: data.pt_id },
+																	query: { id: data._id },
 																}}
 															>
 																<Button color="primary" size="sm">

+ 1 - 1
components/Main/Timeline.js

@@ -24,7 +24,7 @@ function Timeline({ data, noFile = false, noJadwal = false }) {
 												<div className="d-flex align-items-center mb-3">
 													<img
 														className="mr-3 rounded-circle thumb48"
-														src={`/static/img${data.user.role.id === "2022" ? "/univ-avatar.png" : data.user.role.id === "2023" ? "/user/user.png" : "/logo-single.png"}`}
+														src={`/static/img${data.user.role.id === 2022 ? "/univ-avatar.png" : data.user.role.id === 2023 ? "/user/user.png" : "/logo-single.png"}`}
 														alt="Avatar"
 													/>
 													<p className="m-0">

+ 1 - 1
components/PT/JawabanKeberatan/TableSanksiJawaban.js

@@ -32,7 +32,7 @@ function TableSanksi({ listData, to, linkName }) {
 											</div>
 										</div>
 									</td>
-									<td>{moment(data.sanksi.createdAt).format("DD MMMM YYYY")}</td>
+									<td>{moment(data.createdAt).format("DD MMMM YYYY")}</td>
 									<td>
 										{data.jawaban?.keberatan ? (
 											<Link href={{ pathname: to, query: { id: data._id } }}>

+ 22 - 25
components/PT/Keberatan/ModalPermohonan.js

@@ -4,7 +4,7 @@ import { Row, Col, FormGroup, Button, Modal, ModalHeader, ModalBody, ModalFooter
 import { addKeberatan } from "@/actions/keberatan";
 import { connect } from "react-redux";
 import { notifKeberatan } from "@/actions/notifikasi";
-import {  toast } from "react-toastify";
+import { toast } from "react-toastify";
 
 let Dropzone = null;
 class DropzoneWrapper extends Component {
@@ -26,6 +26,7 @@ export class ModalPermohonan extends Component {
 		this.state = {
 			modal1: false,
 			files: [],
+			error: null,
 		};
 	}
 
@@ -60,6 +61,7 @@ export class ModalPermohonan extends Component {
 	};
 
 	toggleModal1 = () => {
+		this.setState({ error: null });
 		this.props.toggleModal(false);
 		this.setState({
 			modal1: !this.state.modal1,
@@ -68,43 +70,38 @@ export class ModalPermohonan extends Component {
 
 	onSubmit = async (e) => {
 		e.preventDefault();
-		const { user, query, data } = this.props;
-		const { noSanksi } = query;
+		const { user, query, token } = this.props;
+		const { id } = query;
 		const formdata = new FormData();
 		if (this.state.files.length > 0) {
-			this.state.files.forEach((e) => {
-				formdata.append("files", e);
+			this.setState({
+				modal1: !this.state.modal1,
 			});
 
-			const id = toast.loading("Please wait...");
-			const added = await addKeberatan({ noSanksi, ptId: user.peran[0].organisasi.id }, formdata);
-			// formdata.append("keberatan", added.add.sanksi.keberatan._id);
-			// formdata.append("data", added.add.sanksi.keberatan._id);
-			// formdata.append("model", "Keberatan");
-			// await addDocPerbaikan({ noSanksi, ptId: "0BCE4DB7-B207-445D-8D03-0C54B7688252" }, formdata);
-			// console.log(added);
-			if (added) {
-				// console.log({ lembaga: data.sanksi.user.lembaga, pt_name: user.peran[0].organisasi.nama, no_laporan: data.sanksi.no_sanksi });
-				toast.update(id, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
-				await notifKeberatan({ lembaga: data.sanksi.user.lembaga, pt_name: user.peran[0].organisasi.nama, no_sanksi: data.sanksi.no_sanksi });
-				// console.log(notif);
+			this.state.files.forEach((e) => {
+				formdata.append("dokumen", e);
+			});
+			const tostid = toast.loading("Please wait...");
+			const success = await addKeberatan(token, id, formdata);
+			if (!success) {
+				toast.update(tostid, { render: "All is not good", type: "error", isLoading: false, autoClose: true, closeButton: true });
+			} else {
+				toast.update(tostid, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
 				Router.push({
-					pathname: "/app/pt/keberatan",
+					pathname: "/pt/keberatan",
 				});
 			}
+		} else {
+			this.setState({ error: "Dokumen harus ada" });
 		}
 	};
 
 	handleKirim = (e) => {
-		this.setState({
-			modal1: !this.state.modal1,
-		});
 		this.onSubmit(e);
 	};
 
 	render() {
-		const { files } = this.state;
-		// console.log(this.props.data.sanksi);
+		const { files, error } = this.state;
 
 		const thumbs = files.map((file, index) => (
 			<Col md={3} key={index}>
@@ -148,7 +145,7 @@ export class ModalPermohonan extends Component {
 											);
 										}}
 									</DropzoneWrapper>
-									<span className="form-text">Multiple files upload</span>
+									<span className={`form-text ${error ? "text-danger" : ""}`}>{error ? error : "Multiple files upload"}</span>
 								</div>
 							</FormGroup>
 						</form>
@@ -164,5 +161,5 @@ export class ModalPermohonan extends Component {
 	}
 }
 
-const mapStateToProps = (state) => ({ user: state.user });
+const mapStateToProps = (state) => ({ user: state.user, token: state.token });
 export default connect(mapStateToProps)(ModalPermohonan);

+ 5 - 6
components/PT/Keberatan/Riwayat.js

@@ -4,7 +4,6 @@ import { Card, CardHeader, CardBody, CardTitle } from "reactstrap";
 import { API_URL } from "@/env";
 
 function Riwayat({ data }) {
-	const keberatan = data.sanksi.keberatan;
 	return (
 		<Card className="card-default">
 			<CardHeader>
@@ -20,15 +19,15 @@ function Riwayat({ data }) {
 							</tr>
 						</thead>
 						<tbody>
-							{keberatan ? (
+							{data ? (
 								<tr>
-									<td>{moment(keberatan.createAt).format("DD MMMM YYYY")}</td>
+									<td>{moment(data.createAt).format("DD MMMM YYYY")}</td>
 									<td>
-										{keberatan.files.map((e) => (
+										{data.dokumen.map((e) => (
 											<>
 												<em className="fa-lg far fa-file-code"></em>
-												<a className="text-muted" href={API_URL + e.path} target="_blank" download={e.name}>
-													{e.name}
+												<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+													{e.judul}
 												</a>
 											</>
 										))}

+ 139 - 86
pages/app/keberatan/detail.js

@@ -7,13 +7,16 @@ import Header from "@/components/Main/Header";
 import DetailPT from "@/components/Main/DetailPT";
 import PermohonanPT from "@/components/Main/PermohonanPT";
 import Riwayat from "@/components/Keberatan/Riwayat";
-import { getSanksi } from "@/actions/sanksi";
+import { getOneSanksi } from "@/actions/sanksi";
 import { addJawabanKeberatan } from "@/actions/keberatan";
 import ContentWrapper from "@/components/Layout/ContentWrapper";
 import { Row, Col, Card, CardBody, FormGroup, Input, Button, Modal, ModalHeader, ModalBody, ModalFooter } from "reactstrap";
 import { getPT } from "@/actions/PT";
 import Loader from "@/components/Common/Loader";
 import { toast } from "react-toastify";
+import { connect } from "react-redux";
+import { Formik, Form, Field, ErrorMessage } from "formik";
+import * as Yup from "yup";
 
 let Dropzone = null;
 class DropzoneWrapper extends Component {
@@ -30,7 +33,11 @@ class DropzoneWrapper extends Component {
 }
 
 const selectInstanceId = 1;
-
+const jawabanKeberatanSchema = Yup.object().shape({
+	status: Yup.string().required("Harap Diisi"),
+	keterangan: Yup.string().min(3).max(200).required("Harap Diisi"),
+	dokumen: Yup.array().notRequired(),
+});
 class DetailKeberatan extends Component {
 	constructor(props) {
 		super(props);
@@ -40,7 +47,8 @@ class DetailKeberatan extends Component {
 			files: [],
 			keterangan: "",
 			sanksi: {},
-			pt: {},
+			pt: null,
+			data: {},
 		};
 	}
 
@@ -49,10 +57,10 @@ class DetailKeberatan extends Component {
 	};
 
 	componentDidMount = async () => {
-		const { query } = this.props;
-		const sanksi = await getSanksi(query);
-		const pt = await getPT({ id: query.ptId });
-		this.setState({ pt, sanksi });
+		const { query, token } = this.props;
+		const sanksi = await getOneSanksi(token, query.id);
+		const pt = sanksi.data.laporan.pt;
+		this.setState({ sanksi, pt });
 	};
 
 	toggleModal = () => {
@@ -95,25 +103,26 @@ class DetailKeberatan extends Component {
 		});
 	};
 
-	handelSimpan = async (e) => {
-		e.preventDefault();
-		const { keterangan, selectedOption } = this.state;
-		const { noSanksi, ptId } = this.props.query;
+	handelSimpan = async () => {
+		this.toggleModal();
+		const { data } = this.state;
+		const { query, token } = this.props;
+		const { id } = query;
 		const formdata = new FormData();
-		formdata.append("description", keterangan);
-		formdata.append("status", selectedOption.value);
-		if (this.state.files.length > 0) {
-			this.state.files.forEach((e) => {
-				formdata.append("files", e);
+		formdata.append("keterangan", data.keterangan);
+		formdata.append("status", data.status);
+		data.dokumen.forEach((e) => {
+			formdata.append("dokumen", e);
+		});
+		const toastid = toast.loading("Please wait...");
+		const added = await addJawabanKeberatan(token, id, formdata);
+		if (!added) {
+			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({
+				pathname: "/app/keberatan",
 			});
-			const id = toast.loading("Please wait...");
-			const added = await addJawabanKeberatan({ noSanksi, ptId }, formdata);
-			if (added) {
-				toast.update(id, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
-				Router.push({
-					pathname: "/app/keberatan",
-				});
-			}
 		}
 	};
 
@@ -139,80 +148,123 @@ class DetailKeberatan extends Component {
 						</div>
 					</div>
 					<Row>
-						{sanksi.data && sanksi.data.length ? (
+						{sanksi.data ? (
 							<Col xl="9">
 								<Card className="card-default">
 									<CardBody>
 										<Row>
 											<Col lg={12}>
-												<DetailSanksi data={sanksi.data[0]} />
+												<DetailSanksi data={sanksi.data} />
 											</Col>
 										</Row>
 										<Row>
 											<Col lg={12}>
-												<PermohonanPT data={sanksi.data[0].sanksi.keberatan} title="Permohonan Keberatan" />
+												<PermohonanPT data={sanksi.data.pengajuan.keberatan} title="Permohonan Keberatan" />
 											</Col>
 										</Row>
 										<Row>
 											<Col lg={12}>
 												<p className="lead bb">Jawaban</p>
-												<form className="form-horizontal" method="get" action="/" onSubmit={this.onSubmit}>
-													<FormGroup>
-														<label className="row-form-label">Status:</label>
-														<div className="row-md-10">
-															<Select
-																instanceId={selectInstanceId + 1}
-																value={this.state.selectedOption}
-																onChange={this.handleChangeSelect}
-																options={[
-																	{ value: "Menolak", label: "Menolak", className: "State-ACT" },
-																	{ value: "Mengubah Keputusan", label: "Mengubah Keputusan", className: "State-ACT" },
-																	{ value: "Membatalkan Keputusan", label: "Membatalkan Keputusan", className: "State-ACT" },
-																]}
-																required
-															/>
-															{/* <span className="form-text">Pilih Jenis Pelanggaran</span> */}
-														</div>
-													</FormGroup>
-													<FormGroup>
-														<label className="row-form-label">Keterangan Jawaban:</label>
-														<div className="row-md-10">
-															<Input type="textarea" value={this.state.keterangan} onChange={(e) => this.setState({ keterangan: e.target.value })} required />
-															{/* <span className="form-text">Deskripsi pelaporan minimum karakter 50 maksimum 200 karakter</span> */}
-														</div>
-													</FormGroup>
-													<FormGroup>
-														<label className="row-form-label">Dokumen Jawaban:</label>
-														<div className="row-md-10">
-															<DropzoneWrapper className="" onDrop={this.onDrop}>
-																{({ getRootProps, getInputProps, isDragActive }) => {
-																	return (
-																		<div {...getRootProps()} className={"dropzone card p-3 " + (isDragActive ? "dropzone-drag-active" : "")}>
-																			<input {...getInputProps()} />
-																			<div className="dropzone-previews flex">
-																				{this.state.files.length > 0 ? <Row>{thumbs}</Row> : <div className="text-center dz-default dz-message">Drop files here to upload</div>}
-																			</div>
-																			<div className="d-flex align-items-center">
-																				<small className="ml-auto">
-																					<button type="button" className="btn btn-link" onClick={this.clearFiles}>
-																						Clear files
-																					</button>
-																				</small>
-																			</div>
-																		</div>
-																	);
-																}}
-															</DropzoneWrapper>
-														</div>
-													</FormGroup>
-													{/* <FormGroup>
+												<Formik
+													initialValues={{
+														status: "",
+														keterangan: "",
+														dokumen: [],
+													}}
+													validationSchema={jawabanKeberatanSchema}
+													onSubmit={async (data) => {
+														const { sanksi } = this.state;
+														this.setState({ data });
+														if (sanksi.data.jawaban?.keberatan) this.toggleModal();
+														else await this.handelSimpan();
+													}}
+												>
+													{() => (
+														<Form className="form-horizontal">
+															<FormGroup>
+																<label className="row-form-label">Status:</label>
+																<div className="row-md-10">
+																	<Field name="status">
+																		{({ field, form, meta }) => (
+																			<Select
+																				instanceId={selectInstanceId + 1}
+																				value={this.state.selectedOption}
+																				onChange={(e) => {
+																					this.handleChangeSelect(e);
+																					form.setFieldValue(field.name, e.value);
+																				}}
+																				options={[
+																					{ value: "Menolak", label: "Menolak", className: "State-ACT" },
+																					{ value: "Mengubah Keputusan", label: "Mengubah Keputusan", className: "State-ACT" },
+																					{ value: "Membatalkan Keputusan", label: "Membatalkan Keputusan", className: "State-ACT" },
+																				]}
+																				required
+																			/>
+																		)}
+																	</Field>
+																	<ErrorMessage name="status" component="div" className="form-text text-danger" />
+																</div>
+															</FormGroup>
+															<FormGroup>
+																<label className="row-form-label">Keterangan Jawaban:</label>
+																<div className="row-md-10">
+																	<Field name="keterangan">{({ field }) => <Input type="textarea" {...field} required />}</Field>
+																	<ErrorMessage name="keterangan" component="div" className="form-text text-danger" />
+																	{/* <span className="form-text">Deskripsi pelaporan minimum karakter 50 maksimum 200 karakter</span> */}
+																</div>
+															</FormGroup>
+															<FormGroup>
+																<label className="row-form-label">Dokumen Jawaban:</label>
+																<div className="row-md-10">
+																	<Field name="dokumen">
+																		{({ field, form }) => (
+																			<DropzoneWrapper
+																				className=""
+																				onDrop={(e) => {
+																					this.onDrop(e);
+																					form.setFieldValue(field.name, e);
+																				}}
+																			>
+																				{({ getRootProps, getInputProps, isDragActive }) => {
+																					return (
+																						<div {...getRootProps()} className={"dropzone card p-3 " + (isDragActive ? "dropzone-drag-active" : "")}>
+																							<input {...getInputProps()} />
+																							<div className="dropzone-previews flex">
+																								{this.state.files.length > 0 ? <Row>{thumbs}</Row> : <div className="text-center dz-default dz-message">Drop files here to upload</div>}
+																							</div>
+																							<div className="d-flex align-items-center">
+																								<small className="ml-auto">
+																									<button type="button" className="btn btn-link" onClick={this.clearFiles}>
+																										Clear files
+																									</button>
+																								</small>
+																							</div>
+																						</div>
+																					);
+																				}}
+																			</DropzoneWrapper>
+																		)}
+																	</Field>
+																	<ErrorMessage name="dokumen" component="div" className="form-text text-danger" />
+																</div>
+															</FormGroup>
+															{/* <FormGroup>
 													<div className="row-xl-10"> */}
-													<Button color="primary" onClick={sanksi.data && sanksi.data.length && sanksi.data[0].sanksi.keberatan.jawaban ? this.toggleModal : this.handelSimpan}>
-														Simpan
-													</Button>
-													{/* </div>
+															<FormGroup row>
+																<div className="col-xl-10">
+																	<Button color="primary" type="submit">
+																		Simpan
+																	</Button>
+																</div>
+															</FormGroup>
+															{/* <Button color="primary" onClick={sanksi.data.jawaban?.keberatan ? this.toggleModal : this.handelSimpan}>
+															Simpan
+														</Button> */}
+															{/* </div>
 												</FormGroup> */}
-												</form>
+														</Form>
+													)}
+												</Formik>
 											</Col>
 										</Row>
 									</CardBody>
@@ -221,12 +273,12 @@ class DetailKeberatan extends Component {
 						) : (
 							<Loader />
 						)}
-						<Col xl="3">{pt?.data ? <DetailPT data={pt.data[0]} /> : <Loader />}</Col>
+						<Col xl="3">{pt ? <DetailPT data={pt} /> : <Loader />}</Col>
 					</Row>
-					{sanksi.data && sanksi.data.length && (
+					{sanksi.data && (
 						<Row>
 							<Col>
-								<Riwayat data={sanksi.data[0].sanksi.keberatan.jawaban} />
+								<Riwayat data={sanksi.data.jawaban?.keberatan ? sanksi.data.jawaban.keberatan : null} />
 							</Col>
 						</Row>
 					)}
@@ -247,4 +299,5 @@ class DetailKeberatan extends Component {
 	}
 }
 
-export default DetailKeberatan;
+const mapStateToProps = (state) => ({ user: state.user, token: state.token });
+export default connect(mapStateToProps)(DetailKeberatan);

+ 4 - 6
pages/app/keberatan/index.js

@@ -16,10 +16,8 @@ class Keberatan extends Component {
 	}
 
 	componentDidMount = async () => {
-		const { organisasi, peran } = this.props.user.peran[0];
-		const query = { role: peran.id === 2021 ? "lldikti" : "dikti", keberatan: true };
-		if (peran.id === 2021) query.orgId = organisasi.id;
-		const sanksi = await getSanksi(query);
+		const { token } = this.props;
+		const sanksi = await getSanksi(token, { keberatan: true });
 		this.setState({ sanksi });
 	};
 
@@ -32,12 +30,12 @@ class Keberatan extends Component {
 					<Col lg="4">
 						<CaseProgress />
 					</Col>
-					<Col lg="8">{sanksi?.data ? <TableSanksi listData={sanksi.data} to="/app/keberatan/detail" linkName="Detail" /> : <Loader />}</Col>
+					<Col lg="8">{sanksi.data ? <TableSanksi listData={sanksi.data} to="/app/keberatan/detail" linkName="Detail" /> : <Loader />}</Col>
 				</Row>
 			</ContentWrapper>
 		);
 	}
 }
 
-const mapStateToProps = (state) => ({ user: state.user });
+const mapStateToProps = (state) => ({ user: state.user, token: state.token });
 export default connect(mapStateToProps)(Keberatan);

+ 1 - 1
pages/pt/jawaban-keberatan/index.js

@@ -16,7 +16,7 @@ class JawabanKeberatan extends Component {
 
 	componentDidMount = async () => {
 		const { token } = this.props;
-		const sanksi = await getSanksi(token, { keberatan: true, jawaban: true });
+		const sanksi = await getSanksi(token, { keberatan: true });
 		this.setState({ sanksi });
 	};
 

+ 4 - 4
pages/pt/keberatan/detail.js

@@ -4,7 +4,7 @@ import { getOneSanksi } from "@/actions/sanksi";
 import Header from "@/components/Main/Header";
 import DetailPT from "@/components/Main/DetailPT";
 import DetailSanksi from "@/components/Main/DetailSanksi";
-import Riwayat from "@/components/PT/Riwayat";
+import Riwayat from "@/components/PT/Keberatan/Riwayat";
 import ModalPermohonan from "@/components/PT/Keberatan/ModalPermohonan";
 import Link from "next/link";
 import moment from "moment";
@@ -40,7 +40,7 @@ class Keberatan extends Component {
 		const { sanksi, pt } = this.state;
 		return (
 			<ContentWrapper unwrap>
-				{sanksi.data && <ModalPermohonan toggleModal={this.toggleModal} modal={this.state.modal} query={this.props.router.query} data={sanksi.data} />}
+				{sanksi.data && <ModalPermohonan toggleModal={this.toggleModal} modal={this.state.modal} query={this.props.query} data={sanksi.data} />}
 				{pt && <Header data={pt} />}
 				<div className="p-3">
 					<div className="content-heading">
@@ -85,7 +85,7 @@ class Keberatan extends Component {
 					{sanksi.data && (
 						<Row>
 							<Col>
-								<Riwayat data={sanksi.data?.pengajuan?.keberatan ? sanksi.data.pengajuan.keberatan : []} />
+								<Riwayat data={sanksi.data?.pengajuan?.keberatan ? sanksi.data.pengajuan.keberatan : {}} />
 							</Col>
 						</Row>
 					)}
@@ -96,4 +96,4 @@ class Keberatan extends Component {
 }
 
 const mapStateToProps = (state) => ({ user: state.user, token: state.token });
-export default connect(mapStateToProps)(withRouter(Keberatan));
+export default connect(mapStateToProps)(Keberatan);