import { useState, useEffect } from 'react'; import axios from 'axios'; import { toast } from 'sonner'; import { Button } from '@/components/ui/button'; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Select, SelectTrigger, SelectContent, SelectItem, SelectValue } from '@/components/ui/select'; import { apiConfig } from '@/config/api.config'; import ConfirmDialog from '@/components/confirm'; const BASE_URL_CUSTOMER = apiConfig.service_customer; // ACCESS ADM export default function AdmAccess({page,groups,formData,handleClose,fetchCustomers,viewOnly,setViewOnly,isAdmin}: any) { const [dialogOpen, setDialogOpen] = useState(false); const [dialogType, setDialogType] = useState(''); const [changeGroup, setChangeGroup] = useState(''); const [changeGroupD, setChangeGroupD] = useState(false); useEffect(() => { }, []); const handleYes = async () => { try { if (dialogType === 'update status') { let statusNext = getPinStatus(formData.status).res; if (statusNext) await axios.put(`${BASE_URL_CUSTOMER}/customer/statuspin`, { customerid: formData.id, status: statusNext }); else toast.error('Handle Active/Suspend only'); await fetchCustomers(); toast.success('Success Update Status'); } if (dialogType === 'reset pin') { if (formData.id) await axios.post(`${BASE_URL_CUSTOMER}/customer/resetpin`, { customerid: formData.id }); else throw { message: 'data.id not found' }; await fetchCustomers(); toast.success('Pin will send to customer MSISDN'); } } catch (error: any) { toast.error(error.message); } finally { setDialogOpen(false); handleClose(); } }; function buttonStatus(e: any) { e.preventDefault(); setDialogType('update status'); setDialogOpen(true); } function buttonResetPin(e: any) { e.preventDefault(); setDialogType('reset pin'); setDialogOpen(true); } async function buttonChangeGroup() { try { let dataObj = { customerid: formData.id, destination_group: changeGroup }; if (formData.group_id === changeGroup) throw { message: `You update same group as the exist customer group` }; if (dataObj.customerid && dataObj.destination_group) { await axios.post(`${BASE_URL_CUSTOMER}/customer/change-group`, dataObj); } toast.success('Success Change group'); await fetchCustomers(); setChangeGroupD(false); handleClose(); } catch (error: any) { console.log(error); toast.error(error.message); } } function openChangeGroupDialog(e: any) { e.preventDefault(); setChangeGroup(formData.group_id); setChangeGroupD(true); } function btnConfirmDialog(status: boolean) { setDialogOpen(status); } if (!formData.id) return ''; if (page !== 'kyc') { return (

Access Administration

{/* Left Side */}

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

Reset PIN

{/* Right Side */}

Change Group

Edit Member

{/* Change Group Dialog */} Are you sure to change customer Group?

Destination Group

btnConfirmDialog(false)} onOpenChange={() => setDialogOpen(false)} title="Confirm Action" content={`Are you sure you want to ${dialogType}?`} onYes={handleYes} onNo={() => btnConfirmDialog(false)} />
); } else { return ''; } } function getPinStatus(status: string) { if (status === 'Y') return { msg: 'Active', btn: 'Block PIN', res: 'Block' }; if (status === 'N') return { msg: 'Not Active', btn: 'Activate PIN', res: null }; if (status === 'P') return { msg: 'Suspend PIN', btn: 'Unblock PIN', res: 'UnBlock' }; if (status === 'O') return { msg: 'Suspend OTP', btn: 'Unblock OTP', res: null }; return { msg: 'None', btn: 'No status found', res: null }; }