"use client";
import ComponentAdminGlobal_TampilanRupiahDonasi from "@/app_modules/admin/component_global/tampilan_rupiah";
import ComponentDonasi_NotedBox from "@/app_modules/donasi/component/noted_box";
import { NotifBerhasil } from "@/app_modules/donasi/component/notifikasi/notif_berhasil";
import { NotifGagal } from "@/app_modules/donasi/component/notifikasi/notif_gagal";
import { NotifPeringatan } from "@/app_modules/donasi/component/notifikasi/notif_peringatan";
import {
AspectRatio,
Button,
Center,
FileButton,
Image,
Paper,
Stack,
Text,
TextInput,
Textarea,
Title,
} from "@mantine/core";
import { IconCamera } from "@tabler/icons-react";
import _, { toNumber } from "lodash";
import { AppRouterInstance } from "next/dist/shared/lib/app-router-context.shared-runtime";
import { useRouter } from "next/navigation";
import { useState } from "react";
import ComponentAdminDonasi_TombolKembali from "../../component/tombol_kembali";
import { AdminDonasi_funCreatePencairanDana } from "../../fun/create/fun_create_pencairan_dana";
import { AdminDonasi_AkumulasiPencairanById } from "../../fun/update/fun_update_akumulasi_pencairan";
import ComponentGlobal_ErrorInput from "@/app_modules/component_global/error_input";
import { ComponentAdminGlobal_NotifikasiPeringatan } from "@/app_modules/admin/component_global/admin_notifikasi/notifikasi_peringatan";
import { ComponentAdminGlobal_NotifikasiBerhasil } from "@/app_modules/admin/component_global/admin_notifikasi/notifikasi_berhasil";
import { ComponentAdminGlobal_NotifikasiGagal } from "@/app_modules/admin/component_global/admin_notifikasi/notifikasi_gagal";
import { AdminDonasi_getOneById } from "../../fun/get/get_one_by_id";
export default function AdminDonasi_PencairanDana({
donasiId,
danaTerkumpul,
totalPencairan,
}: {
donasiId: string;
danaTerkumpul: string;
totalPencairan: number;
}) {
const [terkumpul, setTerkumpul] = useState(danaTerkumpul);
const [total, setTotal] = useState(totalPencairan);
return (
<>
{
setTerkumpul(val.terkumpul);
setTotal(val.totalPencairan);
console.log(val)
}}
/>
>
);
}
function TotalDanaView({
danaTerkumpul,
totalPencairan,
}: {
danaTerkumpul: string;
totalPencairan: number;
}) {
const terkumpul = toNumber(danaTerkumpul);
const sisaDana = terkumpul - totalPencairan;
return (
<>
Dana Tersisa
{
}
>
);
}
function FormView({
donasiId,
danaTerkumpul,
totalPencairan,
onSuccess,
}: {
donasiId: string;
danaTerkumpul: string;
totalPencairan: number;
onSuccess: (val: any) => void;
}) {
const router = useRouter();
const [file, setFile] = useState(null);
const [images, setImages] = useState();
const [value, setValue] = useState({
title: "",
deskripsi: "",
nilai: "",
});
const [nilaiNominal, setNilaiNominal] = useState(0);
const [isOver, setIsOver] = useState(false);
const terkumpul = toNumber(danaTerkumpul);
const sisaDana = terkumpul - totalPencairan;
return (
<>
Form Pencairan Dana
Rp.}
withAsterisk
placeholder="0"
label="Nominal"
maxLength={sisaDana.toLocaleString().length}
error={
isOver ? (
) : (
""
)
}
value={value.nilai}
onChange={(val) => {
// const nilai = val.currentTarget.value;
// const nilaiTypeNumber = toNumber(val.currentTarget.value);
// if (nilaiTypeNumber > sisaDana) {
// console.log("lebih");
// } else {
// console.log("kurang");
// }
const match = val.currentTarget.value
.replace(/\./g, "")
.match(/^[0-9]+$/);
if (val.currentTarget.value === "")
return setValue({
...value,
nilai: "",
});
if (!match?.[0]) return null;
const nilai = val.currentTarget.value.replace(/\./g, "");
const target = Intl.NumberFormat("id-ID").format(+nilai);
if (+nilai > sisaDana) {
setIsOver(true);
} else {
setIsOver(false);
}
setNilaiNominal(+nilai);
setValue({
...value,
nilai: target,
});
}}
/>
{
setValue({
...value,
title: val.target.value,
});
}}
/>
>
);
}
async function onSave({
router,
value,
donasiId,
file,
nilaiNominal,
onSuccess1,
}: {
router: AppRouterInstance;
value: any;
donasiId: string;
file: FormData;
nilaiNominal: number;
onSuccess1: (val: any) => void;
}) {
const body = {
donasiId: donasiId,
nominalCair: nilaiNominal,
title: value.title,
deskripsi: value.deskripsi,
};
if (_.values(body).includes(""))
return ComponentAdminGlobal_NotifikasiPeringatan("Lengkapi Data");
if (!file)
return ComponentAdminGlobal_NotifikasiPeringatan(
"Lampirkan Bukti Transfer"
);
const gambar = new FormData();
gambar.append("file", file as any);
await AdminDonasi_funCreatePencairanDana(body as any, gambar).then(
async (res) => {
if (res.status === 200) {
await AdminDonasi_AkumulasiPencairanById(
body.donasiId as any,
body.nominalCair as any
).then(async (res) => {
if (res.status === 200) {
const loadData = await AdminDonasi_getOneById(donasiId);
onSuccess1(loadData);
ComponentAdminGlobal_NotifikasiBerhasil(res.message);
} else {
ComponentAdminGlobal_NotifikasiGagal(res.message);
}
});
} else {
NotifGagal(res.message);
}
}
);
}