- {transactionData.map((item, index) => (
-
-
{item.label}
-
-
-
+ {transactionData.length > 0 ? (
+
+ {transactionData.map((item, index) => (
+
+
{item.label}
+
+
{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(item.value)}{item.unit}
-
{item.value}{item.unit}
-
- ))}
-
+ ))}
+
+ ) : (
+
+ No Data Available
+
+ )}
);
};
diff --git a/src/pages/disbursement/history-transaction/hooks/TransactionContext.tsx b/src/pages/disbursement/history-transaction/hooks/TransactionContext.tsx
index 8c4862b..c4418cd 100644
--- a/src/pages/disbursement/history-transaction/hooks/TransactionContext.tsx
+++ b/src/pages/disbursement/history-transaction/hooks/TransactionContext.tsx
@@ -248,7 +248,7 @@ const TransactionProvider = ({ children }: { children: React.ReactNode }) => {
limit,
page: page + 1,
with_deleted: false,
- order_field: "id",
+ order_field: "execution_date",
order_direction: 'DESC',
filter: JSON.stringify(formattedFilter)
});
@@ -286,7 +286,7 @@ const TransactionProvider = ({ children }: { children: React.ReactNode }) => {
pagination={{ size: 10 }}
toolbar={
}
layout={{ card: true }}
- sorting={[{ id: 'id', desc: false }]}
+ sorting={[{ id: 'execution_date', desc: false }]}
serverSide={true}
onFetchData={({ pageIndex, pageSize, sorting, columnFilters }) =>
getTransactionLists(pageIndex, pageSize, sorting, columnFilters)
diff --git a/src/pages/master/conversion/hooks/ManageConversionContext.tsx b/src/pages/master/conversion/hooks/ManageConversionContext.tsx
index 730bae1..eceb4fa 100644
--- a/src/pages/master/conversion/hooks/ManageConversionContext.tsx
+++ b/src/pages/master/conversion/hooks/ManageConversionContext.tsx
@@ -137,16 +137,16 @@ const ManageConversionContextProvider = ({ children }: { children: React.ReactNo
>
-
+ */}
>
);
},
- meta: { headerClassName: 'w-[100px]', cellClassName: 'text-center' }
+ meta: { headerClassName: 'w-[100px] text-center', cellClassName: 'text-center' }
}
],
[handleEditDialog, handleDeleteDialog]
diff --git a/src/pages/master/currency/hooks/ManageCurrencyContext.tsx b/src/pages/master/currency/hooks/ManageCurrencyContext.tsx
index f025f87..2795014 100644
--- a/src/pages/master/currency/hooks/ManageCurrencyContext.tsx
+++ b/src/pages/master/currency/hooks/ManageCurrencyContext.tsx
@@ -124,16 +124,16 @@ const ManageCurrencyContextProvider = ({ children }: { children: React.ReactNode
>
-
+ */}
>
);
},
- meta: { headerClassName: 'w-[100px]', cellClassName: 'text-center' }
+ meta: { headerClassName: 'w-[100px] text-center', cellClassName: 'text-center' }
}
],
[handleEditDialog, handleDeleteDialog]
diff --git a/src/pages/master/walletRule/hooks/ManageWalletRuleContext.tsx b/src/pages/master/walletRule/hooks/ManageWalletRuleContext.tsx
index 14e66c3..eb25709 100644
--- a/src/pages/master/walletRule/hooks/ManageWalletRuleContext.tsx
+++ b/src/pages/master/walletRule/hooks/ManageWalletRuleContext.tsx
@@ -192,17 +192,17 @@ const ManageWalletRuleContextProvider = ({ children }: { children: React.ReactNo
>
-
+ */}
>
);
},
meta: {
- headerClassName: 'w-[100px]',
+ headerClassName: 'w-[100px] text-center',
cellClassName: 'text-center'
}
}
diff --git a/src/pages/members/kyc-delete-member/hooks/ManageKycDeletionContext.tsx b/src/pages/members/kyc-delete-member/hooks/ManageKycDeletionContext.tsx
index 48e4608..e36ab10 100644
--- a/src/pages/members/kyc-delete-member/hooks/ManageKycDeletionContext.tsx
+++ b/src/pages/members/kyc-delete-member/hooks/ManageKycDeletionContext.tsx
@@ -209,6 +209,15 @@ const ManageKycDeletionContextProvider = ({ children }: { children: React.ReactN
headerClassName: 'w-[350px]'
}
},
+ {
+ accessorFn: (row) => row.msisdn,
+ id: 'msdisdn',
+ header: ({ column }) =>
,
+ enableSorting: true,
+ meta: {
+ headerClassName: 'w-[350px]'
+ }
+ },
{
accessorFn: (row) => row.registered_email,
id: 'email',
diff --git a/src/pages/members/kyc/Columns.tsx b/src/pages/members/kyc/Columns.tsx
index 55d3d28..5002030 100644
--- a/src/pages/members/kyc/Columns.tsx
+++ b/src/pages/members/kyc/Columns.tsx
@@ -70,6 +70,20 @@ export const getColumns = (handleUpdate: (data: any) => void): ColumnDef
{
+ return (
+
+ );
+ }
+ },
{
accessorKey: 'group_name',
header: ({ column }) => {
diff --git a/src/pages/transaction/approval-transaction/blocks/ApprovalDialog.tsx b/src/pages/transaction/approval-transaction/blocks/ApprovalDialog.tsx
index 03f8069..016fd45 100644
--- a/src/pages/transaction/approval-transaction/blocks/ApprovalDialog.tsx
+++ b/src/pages/transaction/approval-transaction/blocks/ApprovalDialog.tsx
@@ -8,6 +8,7 @@ import {
DialogContent,
DialogHeader,
DialogTitle,
+ DialogDescription,
} from '@/components/ui/dialog';
import { Button } from '@/components/ui/button';
import {
@@ -26,7 +27,7 @@ const API_URL = apiConfig.transaction;
const ApprovalDialog = () => {
const { GetData, PostData } = useCallApi();
- const { reload } = useDataGrid();
+ const { reload } = useDataGrid();
const {
showApprovalDialog,
@@ -40,6 +41,7 @@ const ApprovalDialog = () => {
transaction_code: '',
status: '',
notes: '',
+ pin: ''
});
const [alert, setAlert] = useState({
@@ -63,8 +65,9 @@ const ApprovalDialog = () => {
const response = await PostData(`${API_URL}/transaction/set-approval`, {
id_transaction: transactionDetails.id,
- status: formField.status,
notes: formField.notes,
+ status: formField.status,
+ pin: formField.pin,
});
if (response?.status === false) {
@@ -97,8 +100,9 @@ const ApprovalDialog = () => {
if (showApprovalDialog) {
setFormField({
transaction_code: '',
- status: '',
notes: '',
+ status: '',
+ pin:''
});
setTransactionDetails(null);
setAlert({ show: false, message: '' });
@@ -142,6 +146,7 @@ const ApprovalDialog = () => {
Approval Transaction
+
{formField.status === 'N' && (
+ )}
>
diff --git a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx
index 199a8bc..39f5b07 100644
--- a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx
+++ b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx
@@ -45,6 +45,8 @@ const DetailTransaction = () => {
id: selectedTransactionId
});
setTransactionDetails(response?.data);
+ console.log(response?.data);
+ console.log(selectedTransactionId);
} catch (error) {
console.error('Error fetching transaction', error);
}
@@ -72,6 +74,7 @@ const DetailTransaction = () => {
{/* Tabs Navigation */}
@@ -207,7 +210,7 @@ const DetailTransaction = () => {
Description
-
{transactionDetails?.description}
+
{transactionDetails?.description || '-'}
Name
diff --git a/src/pages/transaction/topup/TransactionTopup.tsx b/src/pages/transaction/topup/TransactionTopup.tsx
index a05fb95..1b339a0 100644
--- a/src/pages/transaction/topup/TransactionTopup.tsx
+++ b/src/pages/transaction/topup/TransactionTopup.tsx
@@ -1,31 +1,46 @@
-import { Container, DataGridInner } from '@/components';
+import { Alert, Container, DataGridInner } from '@/components';
import { TransactionTopupProvider } from './hooks/TransactionTopupContext';
import { Breadcrumbs, Link } from '@mui/material';
import { Helmet } from 'react-helmet';
import { Input } from '@/components/ui/input';
import { Button } from '@/components/ui/button';
-import { useState, useEffect } from 'react';
+import React, { useState, useEffect } from 'react';
import { useCallApi } from '@/hooks';
import { apiConfig } from '@/config/api.config';
import { toast } from 'sonner';
import { getAuth } from '@/auth';
+import { RefreshCw } from 'lucide-react';
const TransactionTopup = () => {
- const [form, setForm] = useState({
+ const initialState: {
+ topupAmount: string;
+ pin: string;
+ } = {
topupAmount: '',
pin: ''
+ };
+
+ const [form, setForm] = useState(initialState);
+ const [alert, setAlert] = useState({
+ show: false,
+ message: ''
});
const [wallets, setWallets] = useState([]);
const { GetData, PostData } = useCallApi();
+ const [isSubmitting, setIsSubmitting] = useState(false);
+ const [showConfirmation, setShowConfirmation] = useState(false);
const parsedUser = getAuth()?.user;
const API_URL = apiConfig.transaction;
- const API_URL_WALLET = apiConfig.service_wallet
+ const API_URL_WALLET = apiConfig.service_wallet;
useEffect(() => {
const fetchWallets = async () => {
try {
- const response = await GetData(`${API_URL_WALLET}/dashboard/balance/account/${parsedUser.customer.id}`, {});
+ const response = await GetData(
+ `${API_URL_WALLET}/dashboard/balance/account/${parsedUser.customer.id}`,
+ {}
+ );
if (response?.status === true) {
setWallets(response.data || []);
} else {
@@ -39,30 +54,49 @@ const TransactionTopup = () => {
fetchWallets();
}, []);
- const handleSubmit = async (e: any) => {
- e.preventDefault();
- console.log('Submitted Data:', form);
+ const doPostData = async (form: typeof initialState) => {
+ setIsSubmitting(true);
- if (form.pin == '' || form.topupAmount == '') {
- toast.warning('Please fill in all required fields.')
- return
- }
try {
- let requestTopup = await PostData(`${API_URL}/transaction/request-topup`, {
+ let response = await PostData(`${API_URL}/transaction/request-topup`, {
amount: form.topupAmount,
pin: form.pin
- })
- if (requestTopup?.status == true) {
- toast.success('Success Request Topup')
+ });
+ console.log(response);
+ if (response?.status == true) {
+ toast.success('Success Request Topup');
} else {
- toast.warning(`${requestTopup?.message}`)
+ toast.warning(`${response?.message}`);
}
- } catch (error) {
- toast.warning('Failed')
+ } catch (error: any) {
+ const errorMessage =
+ error?.response?.data?.message || error?.message || 'Something went wrong';
+ toast.error(errorMessage);
+ } finally {
+ setIsSubmitting(false);
+ setShowConfirmation(false);
}
+ };
+
+ const handleSubmit = async (e: React.FormEvent) => {
+ e.preventDefault();
+ // console.log('Submitted Data:', form);
+
+ if (form.pin == '' || form.topupAmount == '') {
+ setAlert({ show: true, message: 'Please fill in all required fields.' });
+ return;
+ }
+
+ setAlert({ show: false, message: '' });
+ setShowConfirmation(true);
+
// TODO: Kirim ke backend atau proses lainnya
};
+ const handleCancelSubmit = () => {
+ setShowConfirmation(false);
+ };
+
return (
<>
@@ -70,7 +104,9 @@ const TransactionTopup = () => {
- MANAGE TRANSACTION TOPUP REQUEST
+
+ MANAGE TRANSACTION TOPUP REQUEST
+
Dashboard
@@ -82,6 +118,7 @@ const TransactionTopup = () => {
Topup
+
{/* Wallet Section */}
Your Wallets
@@ -90,7 +127,9 @@ const TransactionTopup = () => {
{wallet.wallet}
- {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(wallet.amount)}
+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(
+ wallet.amount
+ )}
))}
@@ -99,10 +138,16 @@ const TransactionTopup = () => {
+ {alert.show && (
+
+ {alert.message}
+
+ )}
{/* form */}
-
+ {showConfirmation && (
+
+
+
Confirm Transaction
+
+ Are you sure you want to request a topup of{' '}
+
+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(
+ Number(form.topupAmount)
+ )}{' '}
+ {' '}
+ ?
+
+
+
+
+
+
+
+ )}
>