skip search member
This commit is contained in:
@ -56,38 +56,48 @@ const DetailMember = () => {
|
|||||||
msg: 'Active',
|
msg: 'Active',
|
||||||
btn: 'Block PIN',
|
btn: 'Block PIN',
|
||||||
canBlock: true,
|
canBlock: true,
|
||||||
variant: 'destructive' as const
|
canUnblock: false,
|
||||||
|
variant: 'destructive' as const,
|
||||||
|
showField: false
|
||||||
};
|
};
|
||||||
if (status === 'N')
|
if (status === 'N')
|
||||||
return {
|
return {
|
||||||
msg: 'Not Active',
|
msg: 'Not Active',
|
||||||
btn: 'PIN Not Active',
|
btn: 'PIN Not Active',
|
||||||
canBlock: false,
|
canBlock: false,
|
||||||
variant: 'secondary' as const
|
canUnblock: false,
|
||||||
|
variant: 'secondary' as const,
|
||||||
|
showField: true
|
||||||
};
|
};
|
||||||
if (status === 'P')
|
if (status === 'P')
|
||||||
return {
|
return {
|
||||||
msg: 'Suspend PIN',
|
msg: 'Suspend PIN',
|
||||||
btn: 'PIN Blocked',
|
btn: 'Unblock PIN',
|
||||||
canBlock: false,
|
canBlock: false,
|
||||||
variant: 'secondary' as const
|
canUnblock: true,
|
||||||
|
variant: 'default' as const,
|
||||||
|
showField: true
|
||||||
};
|
};
|
||||||
if (status === 'O')
|
if (status === 'O')
|
||||||
return {
|
return {
|
||||||
msg: 'Suspend OTP',
|
msg: 'Suspend OTP',
|
||||||
btn: 'OTP Blocked',
|
btn: 'Unblock OTP',
|
||||||
canBlock: false,
|
canBlock: false,
|
||||||
variant: 'secondary' as const
|
canUnblock: true,
|
||||||
|
variant: 'default' as const,
|
||||||
|
showField: true
|
||||||
};
|
};
|
||||||
return {
|
return {
|
||||||
msg: 'Unknown Status',
|
msg: 'Unknown Status',
|
||||||
btn: 'Unknown',
|
btn: 'Unknown',
|
||||||
canBlock: false,
|
canBlock: false,
|
||||||
variant: 'secondary' as const
|
canUnblock: false,
|
||||||
|
variant: 'secondary' as const,
|
||||||
|
showField: true
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleBlockPin = async () => {
|
const handleUnblockPin = async () => {
|
||||||
if (!selectedCustomerData?.id) {
|
if (!selectedCustomerData?.id) {
|
||||||
toast.error('Customer data not available');
|
toast.error('Customer data not available');
|
||||||
return;
|
return;
|
||||||
@ -97,10 +107,10 @@ const DetailMember = () => {
|
|||||||
setIsUpdating(true);
|
setIsUpdating(true);
|
||||||
await axios.put(`${BASE_URL_CUSTOMER}/customer/statuspin`, {
|
await axios.put(`${BASE_URL_CUSTOMER}/customer/statuspin`, {
|
||||||
customerid: selectedCustomerData.id,
|
customerid: selectedCustomerData.id,
|
||||||
status: 'Block'
|
status: 'UnBlock'
|
||||||
});
|
});
|
||||||
|
|
||||||
toast.success('PIN successfully blocked');
|
toast.success('PIN successfully unblocked');
|
||||||
|
|
||||||
handleEditDialog(false, null);
|
handleEditDialog(false, null);
|
||||||
|
|
||||||
@ -109,7 +119,7 @@ const DetailMember = () => {
|
|||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
toast.error(error.message || 'Failed to block PIN');
|
toast.error(error.message || 'Failed to unblock PIN');
|
||||||
} finally {
|
} finally {
|
||||||
setIsUpdating(false);
|
setIsUpdating(false);
|
||||||
setConfirmDialog(false);
|
setConfirmDialog(false);
|
||||||
@ -203,6 +213,10 @@ const DetailMember = () => {
|
|||||||
const generatePinStatusField = (label: string, status: string) => {
|
const generatePinStatusField = (label: string, status: string) => {
|
||||||
const pinStatus = getPinStatus(status);
|
const pinStatus = getPinStatus(status);
|
||||||
|
|
||||||
|
if (!pinStatus.showField) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="w-full">
|
<div className="w-full">
|
||||||
<div className="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
<div className="flex items-baseline flex-wrap lg:flex-nowrap gap-2.5">
|
||||||
@ -211,17 +225,17 @@ const DetailMember = () => {
|
|||||||
</label>
|
</label>
|
||||||
<div className="flex-1 flex items-center gap-3 p-3 border border-gray-300 rounded-md bg-gray-50">
|
<div className="flex-1 flex items-center gap-3 p-3 border border-gray-300 rounded-md bg-gray-50">
|
||||||
<span className="text-gray-900 flex-1">{pinStatus.msg}</span>
|
<span className="text-gray-900 flex-1">{pinStatus.msg}</span>
|
||||||
{pinStatus.canBlock && (
|
{pinStatus.canUnblock && (
|
||||||
<Button
|
<Button
|
||||||
variant={pinStatus.variant}
|
variant={pinStatus.variant}
|
||||||
size="sm"
|
size="sm"
|
||||||
onClick={() => setConfirmDialog(true)}
|
onClick={() => setConfirmDialog(true)}
|
||||||
disabled={isUpdating}
|
disabled={isUpdating}
|
||||||
>
|
>
|
||||||
{isUpdating ? 'Blocking...' : pinStatus.btn}
|
{isUpdating ? 'Unblocking...' : pinStatus.btn}
|
||||||
</Button>
|
</Button>
|
||||||
)}
|
)}
|
||||||
{!pinStatus.canBlock && (
|
{!pinStatus.canUnblock && !pinStatus.canBlock && (
|
||||||
<Button
|
<Button
|
||||||
variant={pinStatus.variant}
|
variant={pinStatus.variant}
|
||||||
size="sm"
|
size="sm"
|
||||||
@ -324,7 +338,6 @@ const DetailMember = () => {
|
|||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-5">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-5">
|
||||||
{generatePinStatusField('PIN Status', selectedCustomerData.status || '')}
|
{generatePinStatusField('PIN Status', selectedCustomerData.status || '')}
|
||||||
{generateInput('Created Date', 'created_at', formatDate(selectedCustomerData.created_at))}
|
{generateInput('Created Date', 'created_at', formatDate(selectedCustomerData.created_at))}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -343,8 +356,8 @@ const DetailMember = () => {
|
|||||||
<ConfirmDialog
|
<ConfirmDialog
|
||||||
open={confirmDialog}
|
open={confirmDialog}
|
||||||
onOpenChange={setConfirmDialog}
|
onOpenChange={setConfirmDialog}
|
||||||
content="Are you sure you want to block this customer's PIN? This action cannot be undone from this interface."
|
content="Are you sure you want to unblock this customer's PIN?"
|
||||||
onYes={handleBlockPin}
|
onYes={handleUnblockPin}
|
||||||
onNo={() => setConfirmDialog(false)}
|
onNo={() => setConfirmDialog(false)}
|
||||||
/>
|
/>
|
||||||
</>
|
</>
|
||||||
|
|||||||
Reference in New Issue
Block a user