Fix: admin donasi

Deskripsi:
- Fix image dari server wibu
## No Isuue
This commit is contained in:
2024-11-04 18:00:08 +08:00
parent 9b4a6fdc1c
commit d624d61a33
25 changed files with 509 additions and 482 deletions

View File

@@ -1,20 +1,33 @@
"use client";
import { RouterAdminGlobal } from "@/app/lib";
import { RouterAdminDonasi } from "@/app/lib/router_admin/router_admin_donasi";
import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import { ComponentGlobal_TampilanRupiah } from "@/app_modules/_global/component";
import { Admin_ComponentLoadImageLandscape } from "@/app_modules/admin/_admin_global";
import { ComponentAdminGlobal_NotifikasiBerhasil } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_berhasil";
import { ComponentAdminGlobal_NotifikasiGagal } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_gagal";
import AdminGlobal_ComponentBackButton from "@/app_modules/admin/_admin_global/back_button";
import adminNotifikasi_funCreateToUser from "@/app_modules/admin/notifikasi/fun/create/fun_create_notif_user";
import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
import {
MODEL_DONASI,
MODEL_DONASI_INVOICE,
MODEL_DONASI_PENCAIRAN_DANA,
} from "@/app_modules/donasi/model/interface";
import { MODEL_NEW_DEFAULT_MASTER } from "@/app_modules/model_global/interface";
import mqtt_client from "@/util/mqtt_client";
import {
ActionIcon,
AspectRatio,
Badge,
Box,
Button,
Center,
Divider,
Grid,
Group,
Image,
Modal,
Pagination,
Paper,
Progress,
ScrollArea,
Select,
SimpleGrid,
@@ -25,38 +38,15 @@ import {
TextInput,
Title,
} from "@mantine/core";
import ComponentAdminDonasi_TombolKembali from "../../component/tombol_kembali";
import { RouterDonasi } from "@/app/lib/router_hipmi/router_donasi";
import {
IconClover,
IconMessageChatbot,
IconMoneybag,
IconReload,
} from "@tabler/icons-react";
import router from "next/router";
import moment from "moment";
import {
MODEL_DONASI,
MODEL_DONASI_INVOICE,
MODEL_DONASI_PENCAIRAN_DANA,
} from "@/app_modules/donasi/model/interface";
import { useState } from "react";
import { RouterAdminDonasi_OLD } from "@/app/lib/router_hipmi/router_admin";
import TampilanRupiahDonasi from "@/app_modules/donasi/component/tampilan_rupiah";
import { useDisclosure } from "@mantine/hooks";
import { IconReload } from "@tabler/icons-react";
import _, { toNumber } from "lodash";
import moment from "moment";
import { useRouter } from "next/navigation";
import { useDisclosure, useInterval, useShallowEffect } from "@mantine/hooks";
import { Donasi_getOneById } from "@/app_modules/donasi/fun/get/get_one_donasi_by_id";
import { AdminDonasi_getOneById } from "../../fun/get/get_one_by_id";
import AdminGlobal_ComponentBackButton from "@/app_modules/admin/_admin_global/back_button";
import { MODEL_NEW_DEFAULT_MASTER } from "@/app_modules/model_global/interface";
import { useState } from "react";
import { adminDonasi_getListDonatur } from "../../fun/get/get_list_donatur_by_id";
import { RouterAdminDonasi } from "@/app/lib/router_admin/router_admin_donasi";
import { AdminDonasi_getOneById } from "../../fun/get/get_one_by_id";
import adminDonasi_funUpdateStatusDanTotal from "../../fun/update/fun_update_status_dan_total";
import { ComponentAdminGlobal_NotifikasiBerhasil } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_berhasil";
import { ComponentAdminGlobal_NotifikasiGagal } from "@/app_modules/admin/_admin_global/admin_notifikasi/notifikasi_gagal";
import mqtt_client from "@/util/mqtt_client";
import adminNotifikasi_funCreateToUser from "@/app_modules/admin/notifikasi/fun/create/fun_create_notif_user";
export default function AdminDonasi_DetailPublish({
dataPublish,
@@ -82,13 +72,13 @@ export default function AdminDonasi_DetailPublish({
"DonasiMaster_Status",
]);
// fungsi manggil serveraction
return (
<>
{/* <pre>{JSON.stringify(pencairan, null, 2)}</pre> */}
<Stack>
<AdminGlobal_ComponentBackButton path={RouterAdminDonasi.table_publish} />
<AdminGlobal_ComponentBackButton
path={RouterAdminDonasi.table_publish}
/>
<TampilanDetailDonasi donasi={dataDonasi} countDonatur={countDonatur} />
<TampilanListDonatur
donatur={listDonatur}
@@ -113,6 +103,8 @@ function TampilanDetailDonasi({
}) {
const [opened, { open, close }] = useDisclosure(false);
const router = useRouter();
const [isLoadingPencairanDana, setIsLoadingPencairanDana] = useState(false);
return (
<>
<Paper radius={"md"} p={"md"}>
@@ -126,67 +118,119 @@ function TampilanDetailDonasi({
{ maxWidth: "36rem", cols: 1, spacing: "sm" },
]}
>
<Paper withBorder>
<AspectRatio ratio={1 / 1}>
<Image
// mah={500}
// mx={"auto"}
alt="Foto"
src={RouterDonasi.api_gambar + `${donasi?.imagesId}`}
/>
</AspectRatio>
<Paper withBorder p={"xs"}>
<Stack>
<Title align="center" order={4}>
Gambar Donasi
</Title>
<Admin_ComponentLoadImageLandscape fileId={donasi.imageId} />
</Stack>
</Paper>
<Paper withBorder p={"sm"}>
<Stack spacing={5}>
<Title order={4}>{donasi?.title}</Title>
<Group>
<Text fz={"xs"}>Penggalang Dana</Text>
<Title order={5} c="blue">
{donasi?.Author.username}
</Title>
</Group>
<Group>
<Text fz={12}>Durasi</Text>
<Title order={5} c="blue">
{donasi?.DonasiMaster_Durasi.name} hari
</Title>
</Group>
<Title order={4}>Detail Donasi</Title>
<Grid>
<Grid.Col span={4}>
<Text fz={"xs"}>Judul</Text>
</Grid.Col>
<Grid.Col span={"content"}>:</Grid.Col>
<Grid.Col span={"auto"}>
<Title order={5} c="blue">
{donasi?.title}
</Title>
</Grid.Col>
</Grid>
<Group>
<Text fz={12}>Dana dibutuhkan</Text>
<Title order={5} c="blue">
<TampilanRupiahDonasi nominal={+donasi?.target} />
</Title>
</Group>
<Group>
<Text fz={12}>Kategori</Text>
<Title order={5} c="blue">
{donasi?.DonasiMaster_Ketegori?.name}
</Title>
</Group>
<Group>
<Text fz={12}>Total donatur</Text>
<Title order={5} c="blue">
{countDonatur}
</Title>
</Group>
<Group>
<Text fz={12}>Progres</Text>
<Title order={5} c="blue">
{toNumber(donasi.progres).toFixed(2)} %
</Title>
</Group>
<Group>
<Text fz={12}>Dana terkumpul</Text>
<Title order={5} c="blue">
<TampilanRupiahDonasi nominal={+donasi?.terkumpul} />
</Title>
</Group>
{/* <Button w={200} bg={"green.5"} color="green">Pencairan Dana</Button> */}
<Grid>
<Grid.Col span={4}>
<Text fz={"xs"}>Penggalang Dana</Text>
</Grid.Col>
<Grid.Col span={"content"}>:</Grid.Col>
<Grid.Col span={"auto"}>
<Title order={5} c="blue">
{donasi?.Author.username}
</Title>
</Grid.Col>
</Grid>
<Grid>
<Grid.Col span={4}>
<Text fz={"xs"}>Durasi</Text>
</Grid.Col>
<Grid.Col span={"content"}>:</Grid.Col>
<Grid.Col span={"auto"}>
<Title order={5} c="blue">
{donasi?.DonasiMaster_Durasi.name} hari
</Title>
</Grid.Col>
</Grid>
<Grid>
<Grid.Col span={4}>
<Text fz={"xs"}>Dana dibutuhkan</Text>
</Grid.Col>
<Grid.Col span={"content"}>:</Grid.Col>
<Grid.Col span={"auto"}>
<ComponentGlobal_TampilanRupiah
nominal={+donasi?.target}
color="darkblue"
/>
</Grid.Col>
</Grid>
<Grid>
<Grid.Col span={4}>
<Text fz={"xs"}>Kategori</Text>
</Grid.Col>
<Grid.Col span={"content"}>:</Grid.Col>
<Grid.Col span={"auto"}>
<Title order={5} c="blue">
{donasi?.DonasiMaster_Ketegori?.name}
</Title>
</Grid.Col>
</Grid>
<Grid>
<Grid.Col span={4}>
<Text fz={"xs"}>Total donatur</Text>
</Grid.Col>
<Grid.Col span={"content"}>:</Grid.Col>
<Grid.Col span={"auto"}>
<Title order={5} c="blue">
{countDonatur}
</Title>
</Grid.Col>
</Grid>
<Grid>
<Grid.Col span={4}>
<Text fz={12}>Progres</Text>
</Grid.Col>
<Grid.Col span={"content"}>:</Grid.Col>
<Grid.Col span={"auto"}>
<Title order={5} c="blue">
{toNumber(donasi.progres).toFixed(2)} %
</Title>
</Grid.Col>
</Grid>
<Grid>
<Grid.Col span={4}>
<Text fz={12}>Dana terkumpul</Text>
</Grid.Col>
<Grid.Col span={"content"}>:</Grid.Col>
<Grid.Col span={"auto"}>
<ComponentGlobal_TampilanRupiah
nominal={+donasi?.terkumpul}
color="darkblue"
/>
</Grid.Col>
</Grid>
</Stack>
</Paper>
{/* Pencairan Dana */}
<Paper withBorder p={"sm"}>
<Stack spacing={"xl"}>
<Center>
@@ -196,12 +240,10 @@ function TampilanDetailDonasi({
<Grid.Col span={"auto"}>
<Stack spacing={0}>
<Text fz={"xs"}>Total Dana Dicairkan</Text>
<Title>
<TampilanRupiahDonasi
nominal={donasi?.totalPencairan}
fontSize={14}
/>
</Title>
<ComponentGlobal_TampilanRupiah
nominal={donasi?.totalPencairan}
color="darkblue"
/>
</Stack>
</Grid.Col>
<Grid.Col span={"auto"}>
@@ -227,12 +269,15 @@ function TampilanDetailDonasi({
</Grid>
<Button
loaderPosition="center"
loading={isLoadingPencairanDana}
radius={"xl"}
onClick={() =>
onClick={() => {
setIsLoadingPencairanDana(true);
router.push(
RouterAdminDonasi_OLD.pencairan_dana + `${donasi?.id}`
)
}
);
}}
>
Cairkan Dana
</Button>
@@ -271,7 +316,7 @@ function TampilanListDonatur({
onSuccessDonasi: (val: any) => void;
}) {
const router = useRouter();
const [isLoading, setLoading] = useState(false);
const [isLoadingCek, setLoadingCek] = useState(false);
const [idData, setIdData] = useState("");
const [lisDonatur, setListDonatur] = useState<MODEL_DONASI_INVOICE[]>(
donatur.data
@@ -323,7 +368,7 @@ function TampilanListDonatur({
</td>
<td>
<Center>
<TampilanRupiahDonasi nominal={+e?.nominal} />
<ComponentGlobal_TampilanRupiah color="black" nominal={+e?.nominal} />
</Center>
</td>
<td>
@@ -345,12 +390,13 @@ function TampilanListDonatur({
{e?.donasiMaster_StatusInvoiceId === "1" ||
e?.donasiMaster_StatusInvoiceId === "2" ? (
<Button
loaderPosition="center"
loading={isLoadingCek && idData === e?.id}
radius={"xl"}
onClick={() =>
router.push(
RouterAdminDonasi.transfer_invoice + `${e?.imagesId}`
)
}
onClick={() => {
setLoadingCek(true), setIdData(e?.id);
router.push(RouterAdminGlobal.preview_image({ id: e.imageId }));
}}
>
Cek
</Button>
@@ -496,6 +542,7 @@ function ButtonAccept({
onSuccessDonatur: (val: any) => void;
}) {
const [opened, { open, close }] = useDisclosure(false);
const [isLoading, setIsLoading] = useState(false);
async function onAccept() {
let nominalDonasi = nominal;
@@ -510,6 +557,7 @@ function ButtonAccept({
target: target,
});
if (updateStatus.status == 200) {
setIsLoading(true);
const dataNotif = {
appId: updateStatus.data?.id,
userId: updateStatus.data?.authorId,
@@ -569,10 +617,11 @@ function ButtonAccept({
});
onSuccessDonatur(updatelistDonatur);
ComponentAdminGlobal_NotifikasiBerhasil(updateStatus.message);
setIsLoading(false);
} else {
ComponentAdminGlobal_NotifikasiGagal(updateStatus.message);
setIsLoading(false);
}
close();
}
@@ -592,13 +641,17 @@ function ButtonAccept({
<Paper>
<Stack align="center">
<Title
align="center"
order={6}
>{`${"Anda yakin sudah melihat bukti transfer ?"}`}</Title>
>{`${"Anda sudah melihat bukti transfer dan yakin menerima donasi ini ?"}`}</Title>
<Group position="center">
<Button radius={"xl"} onClick={() => close()}>
Batal
</Button>
<Button
color="green"
loading={isLoading}
loaderPosition="center"
radius={"xl"}
onClick={() => {
onAccept();