andi před 2 roky
rodič
revize
f43097f3cd

+ 24 - 12
components/Bypass/TableBypass.js

@@ -9,18 +9,20 @@ import Router from "next/router";
 import { useState } from "react";
 import { Modal, ModalBody, ModalFooter } from "reactstrap";
 import { getCsrf } from "../../actions/security";
+import Swal from "sweetalert2";
 
 
-function TableBypass({ listData, to, linkName }) {
+function TableBypass({ listData, to, linkName, role }) {
 
     const token = useSelector((state) => state.token)
     const [modalIsOpen, setModalIsOpen] = useState(false)
     const [seledtedID, setSelectedID] = useState("")
     const setmodal = (id) => {
-        setModalIsOpen(true)
+        setModalIsOpen(!modalIsOpen)
         setSelectedID(id)
     }
-
+    const setmodals = () => {
+    }
 
     return (
         <div className="card b">
@@ -29,19 +31,29 @@ function TableBypass({ listData, to, linkName }) {
                 <ModalFooter>
 
                     <Button color className="btn-login" onClick={async () => {
-                        	const getToken = await getCsrf();
+                        if (role === 2024) {
+                            Swal.fire({
+                                icon: 'error',
+                                title: 'Oops...',
+                                html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+                                confirmButtonColor: "#3e3a8e",
+                                confirmButtonText: 'Oke'
+                            })
+                        } else {
+                            const getToken = await getCsrf();
                             const _csrf = getToken.token;
-                        await toast.promise(bypassCabutSanksi(token, seledtedID, _csrf), {
-                            pending: "Loading",
-                            success: "Success",
-                            error: "Error",
-                        });
-                        Router.push(`/app/pencabutan-sanksi/detail?id=${seledtedID}`);
-                        setModalIsOpen(false)
+                            await toast.promise(bypassCabutSanksi(token, seledtedID, _csrf), {
+                                pending: "Loading",
+                                success: "Success",
+                                error: "Error",
+                            });
+                            Router.push(`/app/pencabutan-sanksi/detail?id=${seledtedID}`);
+                            setModalIsOpen(false)
+                        }
                     }}>
                         <span className="font-color-white">Ya</span>
                     </Button>
-                    <Button color className="btn-v2" onClick={setModalIsOpen}>
+                    <Button color className="btn-v2" onClick={ setmodal }>
                         Tidak
                     </Button>
                 </ModalFooter>

+ 22 - 6
components/NaikSanksi/DetailSanksi.js

@@ -4,8 +4,18 @@ import 'moment/min/locales';
 moment.locale('id');
 import { CardBody, Col, FormGroup, Table, Card } from "reactstrap";
 import { API_URL } from "@/env";
+import Swal from "sweetalert2";
 
-function DetailSanksi({ data, noTitle = false }) {
+function DetailSanksi({ data, noTitle = false, role }) {
+	const handleOpenAlert = () => {
+		Swal.fire({
+			icon: 'error',
+			title: 'Oops...',
+			html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+			confirmButtonColor: "#3e3a8e",
+			confirmButtonText: 'Oke'
+		})
+	};
 	return (
 		<Card className="card-default">
 			<CardBody>
@@ -97,7 +107,7 @@ function DetailSanksi({ data, noTitle = false }) {
 					<FormGroup row>
 						<Col md="4">Sanksi:</Col>
 						<Col md="8">
-							{data?.pelanggaran&& data.pelanggaran.map((e)=><li><strong>{e.sanksi}</strong> - {e.keterangan_sanksi}</li>)}
+							{data?.pelanggaran && data.pelanggaran.map((e) => <li><strong>{e.sanksi}</strong> - {e.keterangan_sanksi}</li>)}
 							{/* <strong>{data.pelanggaran.map((e) => e.sanksi)}</strong> */}
 						</Col>
 					</FormGroup>
@@ -109,13 +119,19 @@ function DetailSanksi({ data, noTitle = false }) {
 									<tbody>
 										{data.dokumen.map((e) => (
 											<tr>
-												<td  style={{ width: "30px" }}>
+												<td style={{ width: "30px" }}>
 													<em className="fa-lg far fa-file-code"></em>
 												</td>
 												<td>
-													<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-														{e.judul}
-													</a>
+													{role === 2024 ?
+														<a className="text-muted" onClick={handleOpenAlert}>
+															{e.judul}
+														</a>
+														:
+														<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+															{e.judul}
+														</a>
+													}
 												</td>
 											</tr>
 										))}

+ 31 - 21
components/NaikSanksi/InputTanggal.js

@@ -16,6 +16,7 @@ import Router from "next/router";
 import { getPelanggaranSanksi } from "@/actions/pelanggaran";
 import Select from "react-select";
 import { getCsrf } from "../../actions/security";
+import Swal from "sweetalert2";
 
 
 const selectInstanceId = 1;
@@ -155,29 +156,38 @@ class InputTanggal extends Component {
 
 
     handelSimpan = async (data) => {
-        const getToken = await getCsrf();
-        const _csrf = getToken.token;
-        const { token, query } = this.props;
-        const { id } = query;
-        const formdata = new FormData();
-        formdata.append("no_sanksi", data.no_sanksi);
-        formdata.append("keterangan", data.keterangan);
-        formdata.append("from_date", data.from_date);
-        formdata.append("to_date", data.to_date);
-        // formdata.append("sanksi", JSON.stringify(data.sanksi.map((e) => ({ label: e.value }))));
-        formdata.append("sanksi", JSON.stringify(data.sanksi.map((e) => ({ label: e.value.split(";")[0], description: e.value.split(";")[1], level: e.value.split(";")[2] }))));
-
-        this.state.files.forEach((e) => {
-            formdata.append("dokumen", e);
-        });
-        const toastid = toast.loading("Please wait...");
-        const added = await update(token, id, formdata, _csrf);
-        if (!added) {
-            toast.update(toastid, { render: "Error", type: "error", isLoading: false, autoClose: true, closeButton: true });
+        if (this.props.user.role.id === 2024) {
+            Swal.fire({
+                icon: 'error',
+                title: 'Oops...',
+                html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+                confirmButtonColor: "#3e3a8e",
+                confirmButtonText: 'Oke'
+            })
         } else {
-            toast.update(toastid, { render: "Success", type: "success", isLoading: false, autoClose: true, closeButton: true });
-            Router.push("/app/naik-sanksi");
+            const getToken = await getCsrf();
+            const _csrf = getToken.token;
+            const { token, query } = this.props;
+            const { id } = query;
+            const formdata = new FormData();
+            formdata.append("no_sanksi", data.no_sanksi);
+            formdata.append("keterangan", data.keterangan);
+            formdata.append("from_date", data.from_date);
+            formdata.append("to_date", data.to_date);
+            // formdata.append("sanksi", JSON.stringify(data.sanksi.map((e) => ({ label: e.value }))));
+            formdata.append("sanksi", JSON.stringify(data.sanksi.map((e) => ({ label: e.value.split(";")[0], description: e.value.split(";")[1], level: e.value.split(";")[2] }))));
 
+            this.state.files.forEach((e) => {
+                formdata.append("dokumen", e);
+            });
+            const toastid = toast.loading("Please wait...");
+            const added = await update(token, id, formdata, _csrf);
+            if (!added) {
+                toast.update(toastid, { render: "Error", type: "error", isLoading: false, autoClose: true, closeButton: true });
+            } else {
+                toast.update(toastid, { render: "Success", type: "success", isLoading: false, autoClose: true, closeButton: true });
+                Router.push("/app/naik-sanksi");
+            }
         }
 
     };

+ 20 - 4
components/NaikSanksi/TableRiwayat.js

@@ -1,9 +1,19 @@
 import Datatable from "@/components/Tables/Datatable";
 import moment from "moment";
 import 'moment/min/locales';
+import Swal from "sweetalert2";
 moment.locale('id');
 
-function TableRiwayat({ data, perbaikan }) {
+function TableRiwayat({ data, perbaikan, role }) {
+	const handleOpenAlert = () => {
+		Swal.fire({
+			icon: 'error',
+			title: 'Oops...',
+			html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+			confirmButtonColor: "#3e3a8e",
+			confirmButtonText: 'Oke'
+		})
+	};
 	return (
 		// <Datatable options={{ responsive: true }}>
 		<div className="card-over">
@@ -40,9 +50,15 @@ function TableRiwayat({ data, perbaikan }) {
 										{value.dokumen.map((e) => (
 											<>
 												<em className="fa-lg far fa-file-code"></em>
-												<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-													{e.judul}
-												</a>
+												{role === 2024 ?
+													<a className="text-muted" onClick={handleOpenAlert}>
+														{e.judul}
+													</a>
+													:
+													<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+														{e.judul}
+													</a>
+												}
 											</>
 										))}
 									</td>

+ 20 - 8
components/PelaporanTuntas/DetailLaporan.js

@@ -2,8 +2,18 @@ import Scrollable from "@/components/Common/Scrollable";
 import moment from "moment";
 import { Col, FormGroup } from "reactstrap";
 import { useSelector } from "react-redux";
+import Swal from "sweetalert2";
 
-function DetailLaporan({ data, noTitle = false, noStatus = false }) {
+function DetailLaporan({ data, noTitle = false, noStatus = false, role }) {
+	const handleOpenAlert = () => {
+		Swal.fire({
+			icon: 'error',
+			title: 'Oops...',
+			html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+			confirmButtonColor: "#3e3a8e",
+			confirmButtonText: 'Oke'
+		})
+	};
 	const user = useSelector((state) => state.user);
 	return (
 		<>
@@ -127,10 +137,6 @@ function DetailLaporan({ data, noTitle = false, noStatus = false }) {
 				) : (
 					""
 				)}
-				{/* <FormGroup row>
-					<Col md="4">Prioritas:</Col>
-					<Col md="8">{data.level == 3 ? <div className="badge badge-success">Tinggi</div> : data.level == 2 ? <div className="badge badge-info">Sedang</div> : <div className="badge badge-warning">Rendah</div>}</Col>
-				</FormGroup> */}
 				<FormGroup row>
 					<Col md="4">Dokumen Pendukung:</Col>
 					<Col md="8">
@@ -143,9 +149,15 @@ function DetailLaporan({ data, noTitle = false, noStatus = false }) {
 												<em className="fa-lg far fa-file-code"></em>
 											</td>
 											<td>
-												<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-													{e.judul}
-												</a>
+												{role === 2024 ?
+													<a className="text-muted" onClick={handleOpenAlert}>
+														{e.judul}
+													</a>
+													:
+													<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+														{e.judul}
+													</a>
+												}
 											</td>
 										</tr>
 									))}

+ 20 - 4
components/PelaporanTuntas/DetailSanksi.js

@@ -2,8 +2,18 @@ import Scrollable from "@/components/Common/Scrollable";
 import moment from "moment";
 import { Col, FormGroup, Table } from "reactstrap";
 import { API_URL } from "@/env";
+import Swal from "sweetalert2";
 
-function DetailSanksi({ data, noTitle = false }) {
+function DetailSanksi({ data, noTitle = false, role }) {
+	const handleOpenAlert = () => {
+		Swal.fire({
+			icon: 'error',
+			title: 'Oops...',
+			html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+			confirmButtonColor: "#3e3a8e",
+			confirmButtonText: 'Oke'
+		})
+	};
 	return (
 		<>
 			{noTitle ? "" : <p className="lead bb">Detail Sanksi</p>}
@@ -65,9 +75,15 @@ function DetailSanksi({ data, noTitle = false }) {
 												<em className="fa-lg far fa-file-code"></em>
 											</td>
 											<td>
-												<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-													{e.judul}
-												</a>
+												{role === 2024 ?
+													<a className="text-muted" onClick={handleOpenAlert}>
+														{e.judul}
+													</a>
+													:
+													<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+														{e.judul}
+													</a>
+												}
 											</td>
 										</tr>
 									))}

+ 18 - 12
components/Pemeriksaan/DetailLaporan.js

@@ -2,8 +2,18 @@ import Scrollable from "@/components/Common/Scrollable";
 import moment from "moment";
 import { Col, FormGroup } from "reactstrap";
 import { useSelector } from "react-redux";
+import Swal from "sweetalert2";
 
 function DetailLaporan({ data, noTitle = false, noStatus = false, role }) {
+	const handleOpenAlert = () => {
+		Swal.fire({
+			icon: 'error',
+			title: 'Oops...',
+			html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+			confirmButtonColor: "#3e3a8e",
+			confirmButtonText: 'Oke'
+		})
+	};
 	const user = useSelector((state) => state.user);
 	return (
 		<>
@@ -148,18 +158,14 @@ function DetailLaporan({ data, noTitle = false, noStatus = false, role }) {
 												<em className="fa-lg far fa-file-code"></em>
 											</td>
 											<td>
-												{role ===2024?
-												<a className="text-muted">
-													{e.judul}
-												</a>
-												:	<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-													{e.judul}
-												</a>
-											
-											}
-												<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-													{e.judul}
-												</a>
+												{role === 2024 ?
+													<a className="text-muted" onClick={handleOpenAlert}>
+														{e.judul}
+													</a>
+													: <a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+														{e.judul}
+													</a>
+												}
 											</td>
 										</tr>
 									))}

+ 0 - 1
components/Pemeriksaan/InputEvaluasi.js

@@ -146,7 +146,6 @@ class InputEvaluasi extends Component {
 				html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
 				confirmButtonColor: "#3e3a8e",
 				confirmButtonText: 'Oke'
-				// footer: '<a href="">Why do I have this issue?</a>'
 			})
 		} else {
 			const getToken = await getCsrf();

+ 21 - 5
components/PerpanjanganSanksi/DetailSanksi.js

@@ -4,8 +4,18 @@ import 'moment/min/locales';
 moment.locale('id');
 import { CardBody, Col, FormGroup, Table, Card } from "reactstrap";
 import { API_URL } from "@/env";
+import Swal from "sweetalert2";
 
-function DetailSanksi({ data, noTitle = false }) {
+function DetailSanksi({ data, noTitle = false, role }) {
+	const handleOpenAlert = () => {
+		Swal.fire({
+			icon: 'error',
+			title: 'Oops...',
+			html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+			confirmButtonColor: "#3e3a8e",
+			confirmButtonText: 'Oke'
+		})
+	};
 	return (
 		<Card className="card-default">
 			<CardBody>
@@ -126,13 +136,19 @@ function DetailSanksi({ data, noTitle = false }) {
 									<tbody>
 										{data.dokumen.map((e) => (
 											<tr>
-												<td  style={{ width: "30px" }}>
+												<td style={{ width: "30px" }}>
 													<em className="fa-lg far fa-file-code"></em>
 												</td>
 												<td>
-													<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-														{e.judul}
-													</a>
+													{role === 2024 ?
+														<a className="text-muted" onClick={handleOpenAlert}>
+															{e.judul}
+														</a>
+														:
+														<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+															{e.judul}
+														</a>
+													}
 												</td>
 											</tr>
 										))}

+ 27 - 17
components/PerpanjanganSanksi/InputTanggal.js

@@ -14,6 +14,7 @@ import 'moment/min/locales';
 moment.locale('id');
 import Router from "next/router";
 import { getCsrf } from "../../actions/security";
+import Swal from "sweetalert2";
 
 
 const selectInstanceId = 1;
@@ -140,24 +141,33 @@ class InputTanggal extends Component {
 
 
     handelSimpan = async (data) => {
-        const getToken = await getCsrf();
-        const _csrf = getToken.token;
-        const { token, query } = this.props;
-        const { id } = query;
-        const formdata = new FormData();
-        formdata.append("from_date", this.state.from_date);
-        formdata.append("to_date", this.state.to_date);
-        this.state.files.forEach((e) => {
-            formdata.append("dokumen", e);
-        });
-        const toastid = toast.loading("Please wait...");
-        const added = await editTmt(token, id, formdata, _csrf);
-        if (!added) {
-            toast.update(toastid, { render: "Error", type: "error", isLoading: false, autoClose: true, closeButton: true });
+        if (this.props.user.role.id === 2024) {
+            Swal.fire({
+                icon: 'error',
+                title: 'Oops...',
+                html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+                confirmButtonColor: "#3e3a8e",
+                confirmButtonText: 'Oke'
+            })
         } else {
-            toast.update(toastid, { render: "Success", type: "success", isLoading: false, autoClose: true, closeButton: true });
-            Router.push("/app/perpanjangan-sanksi");
-
+            const getToken = await getCsrf();
+            const _csrf = getToken.token;
+            const { token, query } = this.props;
+            const { id } = query;
+            const formdata = new FormData();
+            formdata.append("from_date", this.state.from_date);
+            formdata.append("to_date", this.state.to_date);
+            this.state.files.forEach((e) => {
+                formdata.append("dokumen", e);
+            });
+            const toastid = toast.loading("Please wait...");
+            const added = await editTmt(token, id, formdata, _csrf);
+            if (!added) {
+                toast.update(toastid, { render: "Error", type: "error", isLoading: false, autoClose: true, closeButton: true });
+            } else {
+                toast.update(toastid, { render: "Success", type: "success", isLoading: false, autoClose: true, closeButton: true });
+                Router.push("/app/perpanjangan-sanksi");
+            }
         }
 
     };

+ 0 - 1
components/RekomendasiDelegasi/TableRiwayat.js

@@ -35,7 +35,6 @@ function TableRiwayat({ data, perbaikan, role }) {
 						<td>
 							{data.dokumen.map((e, index) => (
 								<>
-									<em key="index" className="fa-lg far fa-file-code"></em>
 									<em className="fa-lg far fa-file-code"></em>
 									{role === 2024 ?
 										<a className="text-muted" onClick={handleOpenAlert}>

+ 22 - 6
components/TurunSanksi/DetailSanksi.js

@@ -4,8 +4,18 @@ import 'moment/min/locales';
 moment.locale('id');
 import { CardBody, Col, FormGroup, Table, Card } from "reactstrap";
 import { API_URL } from "@/env";
+import Swal from "sweetalert2";
 
-function DetailSanksi({ data, noTitle = false }) {
+function DetailSanksi({ data, noTitle = false, role }) {
+	const handleOpenAlert = () => {
+		Swal.fire({
+			icon: 'error',
+			title: 'Oops...',
+			html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+			confirmButtonColor: "#3e3a8e",
+			confirmButtonText: 'Oke'
+		})
+	};
 	return (
 		<Card className="card-default">
 			<CardBody>
@@ -97,7 +107,7 @@ function DetailSanksi({ data, noTitle = false }) {
 					<FormGroup row>
 						<Col md="4">Sanksi:</Col>
 						<Col md="8">
-						{data?.pelanggaran&& data.pelanggaran.map((e)=><li><strong>{e.sanksi}</strong> - {e.keterangan_sanksi}</li>)}
+							{data?.pelanggaran && data.pelanggaran.map((e) => <li><strong>{e.sanksi}</strong> - {e.keterangan_sanksi}</li>)}
 						</Col>
 					</FormGroup>
 					<FormGroup row>
@@ -108,13 +118,19 @@ function DetailSanksi({ data, noTitle = false }) {
 									<tbody>
 										{data.dokumen.map((e) => (
 											<tr>
-												<td  style={{ width: "30px" }}>
+												<td style={{ width: "30px" }}>
 													<em className="fa-lg far fa-file-code"></em>
 												</td>
 												<td>
-													<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-														{e.judul}
-													</a>
+													{role === 2024 ?
+														<a className="text-muted" onClick={handleOpenAlert}>
+															{e.judul}
+														</a>
+														:
+														<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+															{e.judul}
+														</a>
+													}
 												</td>
 											</tr>
 										))}

+ 30 - 20
components/TurunSanksi/InputTanggal.js

@@ -16,6 +16,7 @@ import Router from "next/router";
 import { getPelanggaranSanksi } from "@/actions/pelanggaran";
 import Select from "react-select";
 import { getCsrf } from "../../actions/security";
+import Swal from "sweetalert2";
 
 const selectInstanceId = 1;
 const checkIfFilesAreTooBig = (files) => {
@@ -158,27 +159,36 @@ class InputTanggal extends Component {
 
 
     handelSimpan = async (data) => {
-        const getToken = await getCsrf();
-        const _csrf = getToken.token;
-        const { token, query } = this.props;
-        const { id } = query;
-        const formdata = new FormData();
-        formdata.append("no_sanksi", data.no_sanksi);
-        formdata.append("keterangan", data.keterangan);
-        formdata.append("from_date", data.from_date);
-        formdata.append("to_date", data.to_date);
-        formdata.append("sanksi", JSON.stringify(data.sanksi.map((e) => ({ label: e.value.split(";")[0], description: e.value.split(";")[1], level: e.value.split(";")[2] }))));
-        this.state.files.forEach((e) => {
-            formdata.append("dokumen", e);
-        });
-        const toastid = toast.loading("Please wait...");
-        const added = await update(token, id, formdata, _csrf);
-        if (!added) {
-            toast.update(toastid, { render: "All is not good", type: "error", isLoading: false, autoClose: true, closeButton: true });
+        if (this.props.user.role.id === 2024) {
+            Swal.fire({
+                icon: 'error',
+                title: 'Oops...',
+                html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+                confirmButtonColor: "#3e3a8e",
+                confirmButtonText: 'Oke'
+            })
         } else {
-            toast.update(toastid, { render: "All is good", type: "success", isLoading: false, autoClose: true, closeButton: true });
-            Router.push("/app/turun-sanksi");
-
+            const getToken = await getCsrf();
+            const _csrf = getToken.token;
+            const { token, query } = this.props;
+            const { id } = query;
+            const formdata = new FormData();
+            formdata.append("no_sanksi", data.no_sanksi);
+            formdata.append("keterangan", data.keterangan);
+            formdata.append("from_date", data.from_date);
+            formdata.append("to_date", data.to_date);
+            formdata.append("sanksi", JSON.stringify(data.sanksi.map((e) => ({ label: e.value.split(";")[0], description: e.value.split(";")[1], level: e.value.split(";")[2] }))));
+            this.state.files.forEach((e) => {
+                formdata.append("dokumen", e);
+            });
+            const toastid = toast.loading("Please wait...");
+            const added = await update(token, id, formdata, _csrf);
+            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("/app/turun-sanksi");
+            }
         }
 
     };

+ 20 - 4
components/TurunSanksi/TableRiwayat.js

@@ -1,9 +1,19 @@
 import Datatable from "@/components/Tables/Datatable";
 import moment from "moment";
 import 'moment/min/locales';
+import Swal from "sweetalert2";
 moment.locale('id');
 
-function TableRiwayat({ data, perbaikan }) {
+function TableRiwayat({ data, perbaikan , role}) {
+	const handleOpenAlert = () => {
+		Swal.fire({
+			icon: 'error',
+			title: 'Oops...',
+			html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+			confirmButtonColor: "#3e3a8e",
+			confirmButtonText: 'Oke'
+		})
+	};
 	return (
 		// <Datatable options={{ responsive: true }}>
 		<div className="card-over">
@@ -40,9 +50,15 @@ function TableRiwayat({ data, perbaikan }) {
 										{value.dokumen.map((e) => (
 											<>
 												<em className="fa-lg far fa-file-code"></em>
-												<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
-													{e.judul}
-												</a>
+												{role === 2024 ?
+														<a className="text-muted" onClick={handleOpenAlert}>
+															{e.judul}
+														</a>
+														:
+														<a className="text-muted" href={e.path} target="_blank" download={e.judul}>
+															{e.judul}
+														</a>
+													}
 											</>
 										))}
 									</td>

+ 1 - 1
pages/app/bypass/detail.js

@@ -57,7 +57,7 @@ class Detail extends Component {
 							<CardBody>
 								<Row>
 									<Col>
-										<DetailSanksi data={sanksi.data} />
+										<DetailSanksi data={sanksi.data} role={this.props.user.role.id} />
 									</Col>
 								</Row>
 							</CardBody>

+ 1 - 1
pages/app/bypass/index.js

@@ -28,7 +28,7 @@ class Bypass extends Component {
                         Bypass
                     </span></div>
                 <Row>
-                    <Col lg={12}>{sanksi.data?.length ? <TableBypass listData={sanksi.data} linkName="Detail" to="/app/bypass/detail" /> : sanksi.data ? "Tidak ada Sanksi" : <Loader />}</Col>
+                    <Col lg={12}>{sanksi.data?.length ? <TableBypass listData={sanksi.data} role={this.props.user.role.id} linkName="Detail" to="/app/bypass/detail" /> : sanksi.data ? "Tidak ada Sanksi" : <Loader />}</Col>
                 </Row>
             </ContentWrapper>
         );

+ 2 - 2
pages/app/naik-sanksi/detail.js

@@ -65,14 +65,14 @@ class Detail extends Component {
 						<Row>
 
 							<Col xl="9">
-								<DetailSanksi data={sanksi.data} />
+								<DetailSanksi data={sanksi.data} role={this.props.user.role.id} />
 								<InputTanggal query={query} token={token} data={sanksi.data} listSanksi={this.state.listSanksi} />
 								<Card className="card-default">
 									<CardHeader>
 										<CardTitle>Riwayat</CardTitle>
 									</CardHeader>
 									<CardBody>
-										<TableRiwayat data={sanksi.data.riwayat_sanksi} perbaikan={sanksi.data.perbaikan} />
+										<TableRiwayat data={sanksi.data.riwayat_sanksi} perbaikan={sanksi.data.perbaikan} role={this.props.user.role.id}  />
 									</CardBody>
 								</Card>
 							</Col>

+ 1 - 1
pages/app/perpanjangan-sanksi/detail.js

@@ -60,7 +60,7 @@ class Detail extends Component {
 						<Row>
 
 							<Col xl="9">
-								<DetailSanksi data={sanksi.data} />
+								<DetailSanksi data={sanksi.data} role={this.props.user.role.id} />
 								<InputTanggal query={query} token={token} data={sanksi.data} />
 							</Col>
 							<Col lg="3">{pt ? <DetailPT data={pt} /> : <Loader />}</Col>

+ 2 - 2
pages/app/tuntas/detail.js

@@ -67,7 +67,7 @@ class DetailPelaporan extends Component {
 									<CardBody>
 										<Row>
 											<Col lg={12}>
-												{sanksi?.data && query?.data === "sanksi" ? <DetailSanksi data={sanksi.data} /> : <Loader />}
+												{sanksi?.data && query?.data === "sanksi" ? <DetailSanksi data={sanksi.data} role={this.props.user.role.id} /> : <Loader />}
 											</Col>
 										</Row>
 									</CardBody>
@@ -78,7 +78,7 @@ class DetailPelaporan extends Component {
 									<CardBody>
 										<Row>
 											<Col lg={12}>
-												{pelaporan?.data && query.data === "laporan" ? <DetailLaporan data={pelaporan.data} /> : <Loader />}</Col>
+												{pelaporan?.data && query.data === "laporan" ? <DetailLaporan data={pelaporan.data} role={this.props.user.role.id} /> : <Loader />}</Col>
 										</Row>
 									</CardBody>
 								</Card>

+ 20 - 2
pages/app/tuntas/index.js

@@ -70,6 +70,15 @@ class PelaporanTuntas extends Component {
         Router.push(url);
     };
     excelMenu = () => {
+        if (this.props.user.role.id === 2024) {
+            swal.fire({
+                icon: 'error',
+                title: 'Oops...',
+                html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+                confirmButtonColor: "#3e3a8e",
+                confirmButtonText: 'Oke'
+            })
+        } else {
         const url = getExcel(this.props.token, "Laporan", {
             tahun: this.state.tahun,
             pelaporan: true,
@@ -82,9 +91,18 @@ class PelaporanTuntas extends Component {
                 icon: "error",
                 confirmButtonColor: "#3e3a8e",
             });
-        }
+        }}
     };
     excelSemua = () => {
+        if (this.props.user.role.id === 2024) {
+            swal.fire({
+                icon: 'error',
+                title: 'Oops...',
+                html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+                confirmButtonColor: "#3e3a8e",
+                confirmButtonText: 'Oke'
+            })
+        } else {
         const url = getExcel(this.props.token, "Laporan", {
             tahun: this.state.tahun,
             pelaporan: true,
@@ -101,7 +119,7 @@ class PelaporanTuntas extends Component {
                 icon: "error",
                 confirmButtonColor: "#3e3a8e",
             });
-        }
+        }}
     };
 
     render() {

+ 2 - 2
pages/app/turun-sanksi/detail.js

@@ -65,14 +65,14 @@ class Detail extends Component {
 						<Row>
 
 							<Col xl="9">
-								<DetailSanksi data={sanksi.data} />
+								<DetailSanksi data={sanksi.data} role={this.props.user.role.id}/>
 								<InputTanggal query={query} token={token} data={sanksi.data} listSanksi={this.state.listSanksi} />
 								<Card className="card-default">
 									<CardHeader>
 										<CardTitle>Riwayat</CardTitle>
 									</CardHeader>
 									<CardBody>
-										<TableRiwayat data={sanksi.data.riwayat_sanksi} perbaikan={sanksi.data.perbaikan} />
+										<TableRiwayat data={sanksi.data.riwayat_sanksi} perbaikan={sanksi.data.perbaikan}role={this.props.user.role.id} />
 									</CardBody>
 								</Card>
 							</Col>

+ 31 - 21
pages/app/verifikasi/index.js

@@ -8,6 +8,7 @@ import { loginToPt } from "../../../actions/auth";
 import { connect } from "react-redux";
 import { ToastContainer, toast } from "react-toastify";
 import { getCsrf } from "../../../actions/security";
+import Swal from "sweetalert2";
 
 
 
@@ -70,28 +71,37 @@ class Verifikasi extends React.Component {
         this.setState({ pt_id: selected_PT.value });
     };
     onSubmit = async () => {
-        const getToken = await getCsrf();
-        const _csrf = getToken.token;
-        this.setState({ loading: true });
-        const { password } = this.state.formLogin;
-        const { pt_id } = this.state
-        const auth = await toast.promise(loginToPt(pt_id, password, _csrf), {
-            pending: "Loading",
-            success: "Success",
-            error: "Akun tidak ada",
-        });
-        // const auth = await loginToPt(pt_id, password);
-        this.props.setToken(auth.data.token);
-        this.props.setUser(auth.data.user);
-        if (auth.data.user.role.id === 2022) {
-            location.href = "/pt/pemantauan"
-            return;
-        } else if ([2020, 2021, 2023].includes(auth.data.user.role.id)) {
-            location.href = "/pt/pemantauan"
-            return;
+        if (this.props.user.role.id === 2024) {
+            Swal.fire({
+                icon: 'error',
+                title: 'Oops...',
+                html: 'Maaf anda tidak memiliki akses untuk menyelesaikan<p> proses ini.</p>',
+                confirmButtonColor: "#3e3a8e",
+                confirmButtonText: 'Oke'
+            })
+        } else {
+            const getToken = await getCsrf();
+            const _csrf = getToken.token;
+            this.setState({ loading: true });
+            const { password } = this.state.formLogin;
+            const { pt_id } = this.state
+            const auth = await toast.promise(loginToPt(pt_id, password, _csrf), {
+                pending: "Loading",
+                success: "Success",
+                error: "Akun tidak ada",
+            });
+            // const auth = await loginToPt(pt_id, password);
+            this.props.setToken(auth.data.token);
+            this.props.setUser(auth.data.user);
+            if (auth.data.user.role.id === 2022) {
+                location.href = "/pt/pemantauan"
+                return;
+            } else if ([2020, 2021, 2023].includes(auth.data.user.role.id)) {
+                location.href = "/pt/pemantauan"
+                return;
+            }
+            this.setState({ loading: false });
         }
-        this.setState({ loading: false });
-
     }