skip search member

This commit is contained in:
bagusajisaputroo
2025-05-30 22:47:41 +07:00
parent 5bad667b32
commit ba0c5ce80d

View File

@ -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)}
/> />
</> </>