upd: pengajuan surat

Deskripsi:
- send wa penolakan + lik update
- send wa diterima
- upload ke seafile
- blm selesai ngirim link surat ke wa

No Issues
This commit is contained in:
2026-01-05 17:24:53 +08:00
parent 2d336ea467
commit 75758bcbe6
6 changed files with 380 additions and 44 deletions

View File

@@ -62,6 +62,7 @@ export default function DetailPengajuanPage() {
<Stack gap={"xl"}>
<DetailDataPengajuan
data={data?.data?.pengajuan}
warga={data && data.data && data.data.warga ? data.data.warga : undefined}
syaratDokumen={data?.data?.syaratDokumen}
dataText={data?.data?.dataText}
onAction={() => {
@@ -81,11 +82,13 @@ export default function DetailPengajuanPage() {
function DetailDataPengajuan({
data,
warga,
syaratDokumen,
dataText,
onAction,
}: {
data: any;
warga?: { phone?: string | null } | null;
syaratDokumen: any;
dataText: any;
onAction: () => void;
@@ -99,6 +102,7 @@ function DetailDataPengajuan({
const [openedPreviewFile, setOpenedPreviewFile] = useState(false);
const [permissions, setPermissions] = useState<JsonValue[]>([]);
const [viewImg, setViewImg] = useState("");
const [uploading, setUploading] = useState(false)
useEffect(() => {
async function fetchHost() {
@@ -115,22 +119,78 @@ function DetailDataPengajuan({
fetchHost();
}, []);
async function sendWA({ status, linkSurat, linkUpdate }: { status: string, linkSurat: string, linkUpdate: string }) {
try {
const resWA = await apiFetch.api["send-wa"]["pengajuan-surat"].post({
noPengajuan: data?.noPengajuan ?? "",
jenisSurat: data?.category ?? "",
alasan: keterangan,
status,
linkSurat,
linkUpdate,
tlp: warga?.phone ?? "",
})
if (resWA?.status === 200) {
if (resWA.data?.success) {
notification({
title: "Success",
message: "Success send message to warga",
type: "success",
});
} else {
notification({
title: "Failed",
message: "Failed send message to warga",
type: "error",
});
}
} else {
notification({
title: "Failed",
message: "Failed send message to warga",
type: "error",
});
}
} catch (error) {
notification({
title: "Failed",
message: "Failed send message to warga",
type: "error",
});
}
}
const handleKonfirmasi = async (cat: "terima" | "tolak") => {
try {
const statusFix = cat == "tolak"
? "ditolak"
: data.status == "antrian"
? "diterima"
: "selesai"
const res = await apiFetch.api.pelayanan["update-status"].post({
id: data?.id,
status:
cat == "tolak"
? "ditolak"
: data.status == "antrian"
? "diterima"
: "selesai",
status: statusFix,
keterangan: keterangan,
idUser: host?.id ?? "",
noSurat: noSurat,
});
if (res?.status === 200) {
if (statusFix == "selesai") {
setTimeout(() => {
setOpenedPreview(true)
}, 1000)
} else {
sendWA({
status: statusFix,
linkSurat: "",
linkUpdate: statusFix == "ditolak" ? res.data?.linkUpdate ?? '' : '',
});
}
onAction();
close();
notification({
@@ -161,6 +221,17 @@ function DetailDataPengajuan({
}
}, [viewImg]);
useShallowEffect(() => {
if (uploading) {
sendWA({
status: "selesai",
linkSurat: "",
linkUpdate: "",
});
}
}, [uploading]);
return (
<>
<ModalFile
@@ -244,7 +315,10 @@ function DetailDataPengajuan({
{data?.status == "selesai" && (
<ModalSurat
open={openedPreview}
onClose={() => setOpenedPreview(false)}
onClose={() => {
setOpenedPreview(false)
setUploading(true)
}}
surat={data?.idSurat}
/>
)}
@@ -399,12 +473,12 @@ function DetailDataPengajuan({
</Group>
) : data?.status === "selesai" ? (
<Group justify="center" grow>
<Button
{/* <Button
variant="light"
onClick={() => setOpenedPreview(!openedPreview)}
>
Surat
</Button>
</Button> */}
</Group>
) : (
<></>