From 54f818fb85e3f3fca8a2dd0592b75d0906c96127 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jun 2025 17:36:23 +0700 Subject: [PATCH 1/6] token n legacy --- src/pages/members/agent-balance/AgentBalance.tsx | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/pages/members/agent-balance/AgentBalance.tsx b/src/pages/members/agent-balance/AgentBalance.tsx index 80db9c5..f5b79ec 100644 --- a/src/pages/members/agent-balance/AgentBalance.tsx +++ b/src/pages/members/agent-balance/AgentBalance.tsx @@ -50,6 +50,7 @@ const AgentBalance = () => { const [dialogOpen, setDialogOpen] = useState(false); const [isReloading, setIsReloading] = useState(false); const [barcode, setBarcode] = useState(''); + const [token_legacy, setToken_legacy] = useState(''); // const [selectedMember, setSelectedMember] = useState(initBalance); useEffect(() => { @@ -99,6 +100,9 @@ const AgentBalance = () => { setFormData(data); setDialogType('update'); setIsDialogOpen(true); + let getTokenLegacy = await axios.get(`${BASE_URL}/token/get-token-legacy`, { params: { id: data.id } }); + let temp = getTokenLegacy?.data?.data?.token_legacy || ''; + setToken_legacy(temp) }; const handleReload = async () => { @@ -112,13 +116,10 @@ const AgentBalance = () => { try { setBarcode(``); let getToken = await axios.get(`${BASE_URL}/token/get`, { params: { id: customerId } }); - console.log(getToken.data.data); setBarcode(getToken.data.data.qrCode); } catch (error: any) { toast.warning(error.message); console.log(error); - } finally { - // setBarcode(`https://miro.medium.com/v2/resize:fit:250/1*DcceOyLkzU--EzP4PYKd_g.png`) } } @@ -187,6 +188,8 @@ const AgentBalance = () => {
@@ -199,8 +202,7 @@ const AgentBalance = () => { }; // ==================== -const PaymentCard = ({ barcode, agent_name, customerId }: any) => { - const [token_legacy, setToken_legacy] = useState(''); +const PaymentCard = ({ barcode, agent_name, customerId, token_legacy, setToken_legacy }: any) => { const cardRef: any = useRef(null); const waitForImageLoad = (img: HTMLImageElement): Promise => { @@ -247,7 +249,8 @@ const PaymentCard = ({ barcode, agent_name, customerId }: any) => { }); toast.success(`Success Update Token Legacy`); } catch (error: any) { - toast.error(error.message); + let err_msg = error?.response?.data?.error || error.message + toast.error(err_msg); } }; From 7a89e2a1738f3eb89adec1399c74d79d12c7d023 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 2 Jun 2025 17:48:42 +0700 Subject: [PATCH 2/6] token n legacy --- src/pages/members/agent-balance/AgentBalance.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/pages/members/agent-balance/AgentBalance.tsx b/src/pages/members/agent-balance/AgentBalance.tsx index f5b79ec..2bdc376 100644 --- a/src/pages/members/agent-balance/AgentBalance.tsx +++ b/src/pages/members/agent-balance/AgentBalance.tsx @@ -108,6 +108,7 @@ const AgentBalance = () => { const handleReload = async () => { setIsReloading(true); await fetchAgentBalance(currentPage, pageSize, '',''); + closeDialog() setIsReloading(false); // fetchAgentBalance(); }; @@ -192,6 +193,7 @@ const AgentBalance = () => { setToken_legacy={setToken_legacy} customerId={formData.id} agent_name={formData.agent_name} + handleReload={handleReload} />
@@ -202,7 +204,7 @@ const AgentBalance = () => { }; // ==================== -const PaymentCard = ({ barcode, agent_name, customerId, token_legacy, setToken_legacy }: any) => { +const PaymentCard = ({ barcode, agent_name, customerId, token_legacy, setToken_legacy, handleReload }: any) => { const cardRef: any = useRef(null); const waitForImageLoad = (img: HTMLImageElement): Promise => { @@ -248,6 +250,7 @@ const PaymentCard = ({ barcode, agent_name, customerId, token_legacy, setToken_l token_legacy }); toast.success(`Success Update Token Legacy`); + await handleReload(); } catch (error: any) { let err_msg = error?.response?.data?.error || error.message toast.error(err_msg); From c5f2da8ee05b574ca4467e4658eaa6ae5652418e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Jun 2025 11:03:43 +0700 Subject: [PATCH 3/6] mother fullname optional --- src/pages/members/agent-balance/AgentBalance.tsx | 2 +- src/pages/members/manage-members/blocks/DetailMember.tsx | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/pages/members/agent-balance/AgentBalance.tsx b/src/pages/members/agent-balance/AgentBalance.tsx index 2bdc376..4a1282b 100644 --- a/src/pages/members/agent-balance/AgentBalance.tsx +++ b/src/pages/members/agent-balance/AgentBalance.tsx @@ -244,7 +244,7 @@ const PaymentCard = ({ barcode, agent_name, customerId, token_legacy, setToken_l const updateTokenLegacy = async () => { try { - if (!token_legacy) toast.warning(`Token Legacy can not be empty`); + if (!token_legacy) return toast.warning(`Token Legacy can not be empty`); await axios.post(`${BASE_URL}/token/insert-token-legacy`, { customerid: customerId, token_legacy diff --git a/src/pages/members/manage-members/blocks/DetailMember.tsx b/src/pages/members/manage-members/blocks/DetailMember.tsx index 04bd81d..41ebe5e 100644 --- a/src/pages/members/manage-members/blocks/DetailMember.tsx +++ b/src/pages/members/manage-members/blocks/DetailMember.tsx @@ -174,13 +174,13 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa if (dialogType === 'update') { // if (page === 'kyc' && formData.destinationGroup === "Premium" && !formData.approval_description_premium) return toast.warning(`Approval Premium Description needed!`) // if (page === 'kyc' && formData.destinationGroup === "Agent" && !formData.approval_description_premium) return toast.warning(`Approval Agent Description needed!`) - if (!formData.msisdn||!formData.email||!formData.fullname||!formData.username||!formData.mother_fullname||!formData.address||!formData.nationality||!formData.date_birth||!formData.gender) { - return toast.warning(`Required fields cannot be empty: msisdn, email, fullname, username, mother Full Name, Address, Nationality, Date Of Birth, Gender.!`) + if (!formData.msisdn||!formData.email||!formData.fullname||!formData.username||!formData.address||!formData.nationality||!formData.date_birth||!formData.gender) { + return toast.warning(`Required fields cannot be empty: msisdn, email, fullname, username, Address, Nationality, Date Of Birth, Gender.!`) } } if (dialogType === 'create') { - if (!formData.msisdn||!formData.email||!formData.fullname||!formData.username||!formData.mother_fullname||!formData.address||!formData.nationality||!formData.date_birth||!formData.gender) { - return toast.warning(`Required fields cannot be empty: msisdn, email, fullname, username, mother Full Name, Address, Nationality, Date Of Birth, Gender.!`) + if (!formData.msisdn||!formData.email||!formData.fullname||!formData.username||!formData.address||!formData.nationality||!formData.date_birth||!formData.gender) { + return toast.warning(`Required fields cannot be empty: msisdn, email, fullname, username, Address, Nationality, Date Of Birth, Gender.!`) } } // if (page === 'kyc' && !formData.description) return toast.warning(`Description for approval needed!`) From 0707f9045833545856adebd4546b140b65226f72 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Jun 2025 12:02:03 +0700 Subject: [PATCH 4/6] pagination and member --- src/pages/members/agent-balance/ListToolbar.tsx | 9 +++++---- src/pages/members/manage-members/blocks/DetailMember.tsx | 4 +--- src/pages/members/manage-members/blocks/ListToolBar.tsx | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/pages/members/agent-balance/ListToolbar.tsx b/src/pages/members/agent-balance/ListToolbar.tsx index 968bac9..d066840 100644 --- a/src/pages/members/agent-balance/ListToolbar.tsx +++ b/src/pages/members/agent-balance/ListToolbar.tsx @@ -35,10 +35,11 @@ const ListToolBar = ({ createGroup, onReload, isReloading }: ListToolBarProps) = const handleSearch = (e: React.ChangeEvent) => { e.preventDefault() - table.getColumn('username')?.setFilterValue(usernameFilter); - table.getColumn('msisdn')?.setFilterValue(msisdn); - table.getColumn('fullname')?.setFilterValue(fullname); - table.getColumn('agent_name')?.setFilterValue(merchantName); + table.resetPageIndex() + table.getColumn('username')?.setFilterValue(usernameFilter); + table.getColumn('msisdn')?.setFilterValue(msisdn); + table.getColumn('fullname')?.setFilterValue(fullname); + table.getColumn('agent_name')?.setFilterValue(merchantName); // if (!merchantName && !fullname && !msisdn && !usernameFilter) reload() }; diff --git a/src/pages/members/manage-members/blocks/DetailMember.tsx b/src/pages/members/manage-members/blocks/DetailMember.tsx index 41ebe5e..b60c1a3 100644 --- a/src/pages/members/manage-members/blocks/DetailMember.tsx +++ b/src/pages/members/manage-members/blocks/DetailMember.tsx @@ -209,9 +209,7 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa
{alert.show && ( - -

{alert.message}

-
+

{alert.message}

)} {/*
*/} diff --git a/src/pages/members/manage-members/blocks/ListToolBar.tsx b/src/pages/members/manage-members/blocks/ListToolBar.tsx index 9fe06c3..6cdaa26 100644 --- a/src/pages/members/manage-members/blocks/ListToolBar.tsx +++ b/src/pages/members/manage-members/blocks/ListToolBar.tsx @@ -43,7 +43,7 @@ const ListToolbar = ({ createMember, onReload, isReloading, groups }: ListToolba const handleSearch = (e: React.ChangeEvent) => { e.preventDefault() - // setSearchValue(e.target.value) + table.resetPageIndex() if (typeSearchValue === 'username') { table.getColumn('username')?.setFilterValue(searchValue); table.getColumn('msisdn')?.setFilterValue(''); From 4e2a12324da7b3d283e160b44b92d6aa738a238e Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 3 Jun 2025 18:09:28 +0700 Subject: [PATCH 5/6] member --- src/components/confirm.tsx | 4 +- .../manage-members/blocks/AdmAccess.tsx | 8 ++-- .../manage-members/blocks/DetailMember.tsx | 42 ++++++++++--------- 3 files changed, 29 insertions(+), 25 deletions(-) diff --git a/src/components/confirm.tsx b/src/components/confirm.tsx index 01591c5..3fb9cff 100644 --- a/src/components/confirm.tsx +++ b/src/components/confirm.tsx @@ -21,8 +21,8 @@ const ConfirmDialog = ({ open, onClose, title, content, onYes, onNo, onOpenChang - - + + diff --git a/src/pages/members/manage-members/blocks/AdmAccess.tsx b/src/pages/members/manage-members/blocks/AdmAccess.tsx index 15ace75..bc3da46 100644 --- a/src/pages/members/manage-members/blocks/AdmAccess.tsx +++ b/src/pages/members/manage-members/blocks/AdmAccess.tsx @@ -112,11 +112,11 @@ export default function AdmAccess({page,groups,formData,handleClose,fetchCustome

Pin Status: {getPinStatus(formData.status).msg}

- +

Reset PIN

- +
@@ -124,11 +124,11 @@ export default function AdmAccess({page,groups,formData,handleClose,fetchCustome

Change Group

- +

Edit Member

- +
diff --git a/src/pages/members/manage-members/blocks/DetailMember.tsx b/src/pages/members/manage-members/blocks/DetailMember.tsx index b60c1a3..9cbf956 100644 --- a/src/pages/members/manage-members/blocks/DetailMember.tsx +++ b/src/pages/members/manage-members/blocks/DetailMember.tsx @@ -171,19 +171,24 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa function buttonOnSubmit(e:any) { e.preventDefault(); - if (dialogType === 'update') { - // if (page === 'kyc' && formData.destinationGroup === "Premium" && !formData.approval_description_premium) return toast.warning(`Approval Premium Description needed!`) - // if (page === 'kyc' && formData.destinationGroup === "Agent" && !formData.approval_description_premium) return toast.warning(`Approval Agent Description needed!`) - if (!formData.msisdn||!formData.email||!formData.fullname||!formData.username||!formData.address||!formData.nationality||!formData.date_birth||!formData.gender) { - return toast.warning(`Required fields cannot be empty: msisdn, email, fullname, username, Address, Nationality, Date Of Birth, Gender.!`) - } + const requiredFields:any = { + msisdn: "msisdn", + email: "email", + fullname: "fullname", + username: "username", + address: "Address", + nationality: "Nationality", + date_birth: "Date Of Birth", + gender: "Gender" + }; + + const missingFields = Object.keys(requiredFields).filter((key) => !formData[key]); + + if (missingFields.length > 0) { + const missingNames = missingFields.map((key:any) => requiredFields[key]).join(", "); + return toast.warning(`Required fields cannot be empty: ${missingNames}!`); } - if (dialogType === 'create') { - if (!formData.msisdn||!formData.email||!formData.fullname||!formData.username||!formData.address||!formData.nationality||!formData.date_birth||!formData.gender) { - return toast.warning(`Required fields cannot be empty: msisdn, email, fullname, username, Address, Nationality, Date Of Birth, Gender.!`) - } - } - // if (page === 'kyc' && !formData.description) return toast.warning(`Description for approval needed!`) + // dialogType === 'update' handleSubmit(formData); } @@ -208,9 +213,8 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa
- {alert.show && ( -

{alert.message}

- )} +
+ {alert.show && (

{alert.message}

)} {/*
*/}
@@ -284,20 +288,20 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa ) : ""}
- + {/* */} { formData.isneedapproval == 1 && page === 'kyc' ? ( - + ) : ('') } -
- +
From d5fed442a96a44e58bbf8d6d51e2c7dab8d429de Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 4 Jun 2025 11:13:34 +0700 Subject: [PATCH 6/6] member update msisdn agent --- src/pages/members/manage-members/blocks/CustomerWallet.tsx | 3 ++- src/pages/members/manage-members/blocks/DetailMember.tsx | 6 ++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/pages/members/manage-members/blocks/CustomerWallet.tsx b/src/pages/members/manage-members/blocks/CustomerWallet.tsx index 3522cb7..f94e6e2 100644 --- a/src/pages/members/manage-members/blocks/CustomerWallet.tsx +++ b/src/pages/members/manage-members/blocks/CustomerWallet.tsx @@ -45,7 +45,8 @@ export default function CustomerWallet({customerid}: any) { {customerWallet.map((item:any, index) => ( {(formData.id || dialogType === "create") ? generateList(formData, handleChange, groups, 'group_id', 'Group', true, dialogType === "update"||false): ''} - {/* {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Group', 'group_name', 'text', true, true): ''} */} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Username', 'username', 'text', true, viewOnly): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Full Name', 'fullname', 'text', true, viewOnly): ''} {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'Photo', 'photouser', previewImg, setPreviewImg): ''} {(formData.id || dialogType === "create") ? generateList(formData, handleChange, genders, 'gender', 'Gender', true, false): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Date of Birth', 'date_birth', 'date', true, viewOnly): ''} - {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Phone Number', 'msisdn', 'text', true, dialogType === "create"?false:true): ''} + {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Phone Number', 'msisdn', 'text', true, (dialogType === "create"||formData.group_name === 'Agent')?false:true): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Email', 'email', 'text', true, viewOnly): ''} - {/* {generateList(formData, handleChange, status, 'status', 'Status', null, true)} */} - {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Mother Fullname', 'mother_fullname', 'text', true, viewOnly): ''} + {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Mother Fullname', 'mother_fullname', 'text', false, viewOnly): ''} {(formData.id || dialogType === "create") ? generateList(formData, handleChange, identity_type, 'identity_type', 'Identity Type', false, viewOnly): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Address', 'address', 'text', true, viewOnly): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Identity Number', 'identity_number', 'text', false, viewOnly): ''}