Browse Source

perpanjangan sanks

andi 1 year ago
parent
commit
b6ccfae206

+ 3 - 2
components/PencabutanSanksi/Riwayat.js

@@ -14,7 +14,6 @@ function Riwayat({ data, role }) {
 			confirmButtonText: 'Oke'
 		})
 	};
-	// console.log(data.map((e)=> e.dokumen))
 	return (
 		<Card className="card-default">
 			<CardHeader>
@@ -22,7 +21,7 @@ function Riwayat({ data, role }) {
 			</CardHeader>
 			<CardBody>
 				<Datatable options={{ responsive: true }}>
-					<table className="table table-striped my-4 w-100">
+					<table className="table table-striped my-4 w-100" data-order='[ [0, "asc"]]'>
 						<thead>
 							<tr>
 								<th>Tanggal</th>
@@ -35,7 +34,9 @@ function Riwayat({ data, role }) {
 						</thead>
 						<tbody>
 							{data?.length
+							
 								? data.map((data, i) => (
+									
 								<tr>
 									<td>{moment(data.createdAt).format("DD MMMM YYYY")}</td>
 									<td>{data.status}</td>

+ 1 - 1
components/PencabutanSanksi/RiwayatPerbaikan.js

@@ -21,7 +21,7 @@ function RiwayatPerbaikan({ data, role }) {
 			</CardHeader>
 			<CardBody>
 				<Datatable options={{ responsive: true }}>
-					<table className="table table-striped my-4 w-100">
+					<table className="table table-striped my-4 w-100" data-order='[ [0, "asc"]]'>
 						<thead>
 							<tr>
 								<th>Tanggal</th>

+ 4 - 2
components/PerpanjanganSanksi/DetailSanksi.js

@@ -123,9 +123,11 @@ function DetailSanksi({ data, noTitle = false, role }) {
 						</Col>
 					</FormGroup>
 					<FormGroup row>
-						<Col md="4">Nomor Surat:</Col>
+						<Col md="4">Sanksi:</Col>
 						<Col md="8">
-							<strong>{data.pelanggaran.map((e) => e.sanksi)}</strong>
+							{/* <strong>{data.pelanggaran.map((e) => e.sanksi)}</strong> */}
+							{data?.pelanggaran && data.pelanggaran.map((e) => <li><strong>{e.sanksi}</strong> - {e.keterangan_sanksi}</li>)}
+
 						</Col>
 					</FormGroup>
 					<FormGroup row>

+ 5 - 1
components/PerpanjanganSanksi/InputTanggal.js

@@ -205,6 +205,10 @@ class InputTanggal extends Component {
                     >
                         {({ isSubmitting }) => (
                             <Form className="form-horizontal">
+                                        <FormGroup row className="mt-3">
+                                    <label className="col-md-2 col-form-label">Sudah melakukan perpanjangan sanksi : </label>
+                                    <div className="col-md-10">{this.props.data?.riwayat_sanksi?.length}</div>
+                                    </FormGroup>
                                 <FormGroup row className="mt-3">
                                     <label className="col-md-2 col-form-label">Tanggal Perpanjangan Sanksi :</label>
                                     <div className="col-md-6">
@@ -223,7 +227,7 @@ class InputTanggal extends Component {
                                                             }}
                                                             closeOnSelect={true}
                                                             isValidDate={(e) => {
-                                                                return e.isBefore(new Date())
+                                                                return e.isBefore(new Date(this.props.data.masa_berlaku.to_date).getTime() + 86400000)
                                                             }}
 
                                                         />

+ 72 - 0
components/PerpanjanganSanksi/Riwayat.js

@@ -0,0 +1,72 @@
+import Datatable from "@/components/Tables/Datatable";
+import moment from "moment";
+import { Card, CardHeader, CardBody, CardTitle } from "reactstrap";
+import { API_URL } from "@/env";
+import Swal from "sweetalert2";
+
+function Riwayat({ data, 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">
+			<CardHeader>
+				<CardTitle>Riwayat Perpanjangan Sanksi</CardTitle>
+			</CardHeader>
+			<CardBody>
+				<Datatable options={{ responsive: true }}>
+					<table className="table table-striped my-4 w-100"  data-order='[ [2, "asc"]]'>
+						<thead>
+							<tr>
+								<th>Tanggal perpanjangan</th>
+								<th>Dokumen</th>
+								<th>Perpanjangan Ke</th>
+
+							</tr>
+						</thead>
+						<tbody>
+							{data?.length
+							
+								? data.map((data, i) => (
+									
+								<tr>
+									<td>{moment(data.masa_berlaku.from_date).format("DD MMMM YYYY")}-{moment(data.masa_berlaku.to_date).format("DD MMMM YYYY")}</td>
+									<td>
+										{data.dokumen?.map((e) => (
+											<>
+												<em className="fa-lg far fa-file-code"></em>
+												{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>
+									<td>{i+1}</td>
+								</tr>
+							)) : (
+								""
+							)}
+						</tbody>
+					</table>
+				</Datatable>
+			</CardBody>
+		</Card>
+	);
+}
+
+export default Riwayat;

+ 0 - 1
components/Sanksi/TableLaporan.js

@@ -23,7 +23,6 @@ function TableLaporan({ listData }) {
 							</thead>
 							<tbody>
 								{listData.map((data) => {
-									console.log(data)
 									return (
 										<tr key={data._id}>
 											{/* <td>{data.no_laporan}</td> */}

+ 24 - 25
components/Sanksi/UploadSurat.js

@@ -177,7 +177,6 @@ export class UploadSurat extends Component {
 	}
 	render() {
 		const { files, terimaSuratSanksi, tglAkhirKeberatan, filesTandaTerimaSS, tidakPerluTMTCheck } = this.state;
-
 		const thumbs = files.map((file, index) => (
 			<p>
 				<em className="far fa-file" />&nbsp;&nbsp;{file.path}
@@ -254,7 +253,7 @@ export class UploadSurat extends Component {
 										}}
 										closeOnSelect={true}
 										isValidDate={(e) => {
-											return !this.state.listSanksi?.find(z => z.value === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.value === "Sanksi Administratif Berat - Pembubaran PTN atau pencabutan izin PTS") ? e.isBefore(addMonths(new Date(this.state.awalTMT), 6).getTime() + 86400000) && e.isAfter(new Date(this.state.awalTMT) ) : false
+											return !this.state.listSanksi?.find(z => z.value === "Sanksi Administratif Berat - Pencabutan izin Program Studi" || z.value === "Sanksi Administratif Berat - Pembubaran PTN atau pencabutan izin PTS") ? e.isBefore(addMonths(new Date(this.state.awalTMT), 6).getTime() + 86400000) && e.isAfter(new Date(this.state.awalTMT)) : false
 										}}
 									// isValidDate={(e) => {
 									// 	return e.isAfter(moment(new Date) && e.isBefore(moment(new Date)))
@@ -287,7 +286,7 @@ export class UploadSurat extends Component {
 					<div className="col-md-8">
 						<Select
 							value={this.state.listSanksi}
-							options={this.props.listSanksi.map(e => ({ value: `Sanksi Administratif ${e.split(";")[0]} - ${e.split(";")[1]}` }))}
+							options={this.props.listSanksi.map(e => ({ value: `Sanksi Administratif ${e.split(";")[0]} - ${e.split(";")[1]}`, level: (e.split(";")[2])  }))}
 							isMulti
 							formatOptionLabel={formatOptionLabel}
 							onChange={(e) => {
@@ -337,30 +336,30 @@ export class UploadSurat extends Component {
 						<p className="mrgn-top-5 font-color-black">Ukuran setiap dokumen maksimal 15mb</p>
 					</div>
 				</FormGroup>
-				{!this.state.tidakPerluTMTCheck&&(
-<FormGroup row className="mt-3">
-					<label className="col-md-4 col-form-label">Tanggal Terima Surat Sanksi<span className="text-danger">*</span></label>
-					<span className="col-sm-8 float-left">
-						<Datetime
-							timeFormat={false}
-							inputProps={{ className: "form-control" }}
-							value={this.state.terimaSuratSanksi ? new Date(this.state.terimaSuratSanksi) : this.state.terimaSuratSanksi}
-							onChange={(terimaSuratSanksi) => {
-								this.setState({ terimaSuratSanksi }, this.setUploadSuratSanksi)
-							}}
-							closeOnSelect={true}
-							isValidDate={(e) => {
-								return e.isAfter(new Date(this.state.awalTMT))
-							}}
-						// isValidDate={(e) => {
-						// 	return e.isAfter(moment(new Date) && e.isBefore(moment(new Date)))
-						// }}
-						/>
-					</span>
-				</FormGroup>
+				{!this.state.tidakPerluTMTCheck && (
+					<FormGroup row className="mt-3">
+						<label className="col-md-4 col-form-label">Tanggal Terima Surat Sanksi<span className="text-danger">*</span></label>
+						<span className="col-sm-8 float-left">
+							<Datetime
+								timeFormat={false}
+								inputProps={{ className: "form-control" }}
+								value={this.state.terimaSuratSanksi ? new Date(this.state.terimaSuratSanksi) : this.state.terimaSuratSanksi}
+								onChange={(terimaSuratSanksi) => {
+									this.setState({ terimaSuratSanksi }, this.setUploadSuratSanksi)
+								}}
+								closeOnSelect={true}
+								isValidDate={(e) => {
+									return e.isAfter(new Date(this.state.awalTMT))
+								}}
+							// isValidDate={(e) => {
+							// 	return e.isAfter(moment(new Date) && e.isBefore(moment(new Date)))
+							// }}
+							/>
+						</span>
+					</FormGroup>
 
 				)}
-				
+
 				<FormGroup row>
 					<label className="col-md-4 col-form-label">
 						Dokumen Tanda Terima Surat Sanksi<span className="text-danger">*</span>

+ 2 - 2
env.js

@@ -1,6 +1,6 @@
 // export const TOKEN=77aecfec-10ac-3b4f-ab59-3fbfbeed6324
 export const API_URL = "http://localhost:5000/v1";
 export const ENV = "development"
-//export const API_URL = "https://dev.api.sidali.kemdikbud.go.id/v1";
-//sexport const API_URL = "https://api.sidali.kemdikbud.go.id/v1";
+// export const API_URL = "https://dev.api.sidali.kemdikbud.go.id/v1";
+//export const API_URL = "https://api.sidali.kemdikbud.go.id/v1";
 

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

@@ -8,6 +8,8 @@ import { getOneSanksi, addRekomendasiDelegasi } from "@/actions/sanksi";
 import Loader from "@/components/Common/Loader";
 import { connect } from "react-redux";
 import InputTanggal from "../../../components/PerpanjanganSanksi/InputTanggal";
+import Riwayat from "@/components/PerpanjanganSanksi/Riwayat";
+
 
 
 class Detail extends Component {
@@ -61,11 +63,24 @@ class Detail extends Component {
 
 							<Col xl="9">
 								<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>
 						</Row>
 					)}
+							{sanksi.data && (
+						<Row>
+							<Col>
+							<InputTanggal query={query} token={token} data={sanksi.data} />
+							</Col>
+						</Row>
+						)}
+					{sanksi.data && (
+						<Row>
+							<Col>
+								<Riwayat data={sanksi.data?.riwayat_sanksi} role={this.props.user.role.id} />
+							</Col>
+						</Row>
+						)}
 				</div>
 			</ContentWrapper>
 		);

+ 1 - 2
pages/app/sanksi/proses.js

@@ -172,8 +172,7 @@ class ProsesSanksi extends Component {
 				formdata.append("to_date", this.state.dataUpload.akhirTMT);
 				formdata.append("tanggal_terima_sanksi", this.state.dataUpload.terimaSuratSanksi);
 				formdata.append("tanggal_akhir_keberatan", this.state.dataUpload.tglAkhirKeberatan);
-				formdata.append("sanksi", JSON.stringify(this.state.dataUpload.listSanksi.map((e) => ({ label: e.value.split(";")[0], description: e.value.split(";")[1], level: e.value.split(";")[2] }))));
-
+				formdata.append("sanksi", JSON.stringify(this.state.dataUpload.listSanksi.map((e) => ({ label: e.value.split(";")[0], level: e.level }))));
 				formdata.append("pelanggaran_id", this.state.dataPelanggaran.data.map((e) => e._id).join());
 				if (this.state.dataUpload.files && this.state.dataUpload.files.length > 0) {
 					this.state.dataUpload.files.forEach((e) => {