import { apiConfig } from '@/config/api.config'; import { Alert, useDataGrid } from '@/components'; import { useCallApi } from '@/hooks'; import { getAuth } from '@/auth'; import axios from 'axios'; import React, { useCallback, useEffect, useRef, useState } from 'react'; import { toast } from 'sonner'; import { Dialog, DialogBody, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Input } from '@/components/ui/input'; import { Button } from '@/components/ui/button'; const BASE_URL_MASTER_DATA = apiConfig.service_master_data; const URL_NATIONALITY = apiConfig.nationality; import { initialMember } from "../Columns"; import AdmAccess from './AdmAccess'; import CustomerWallet from './CustomerWallet'; const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialData, handleReject, page, fetchCustomers, handleClose, profession }: any) => { const [formData, setFormData] = useState(initialData || initialMember); const [viewOnly, setViewOnly] = useState(false); const [nationality, setNationality] = useState([]); const [municipios, setMunicipios] = useState([]); const [aldeias, setAldeias] = useState([]); const [postoAdm, setPostoAdm] = useState([]); const [sucos, setSucos] = useState([]); const [genders] = useState([ { name: 'Male',id: 'M' }, { name: 'Female',id: 'F' }]) const [status] = useState([ { name: 'Active',id: 'Y' }, { name: 'Inactive',id: 'N' }, { name: 'Suspend PIN',id: 'P' }, { name: 'Suspend OTP',id: 'O' } ]) const [banks] = useState([ { name: 'BNCTL',id: 'BNCTL' }, { name: 'BRI',id: 'BRI' }, { name: 'BNU',id: 'BNU' }, { name: 'Mandiri',id: 'Mandiri' } ]) const parentRef = useRef(null); const [alert, setAlert] = useState({ show: false, message: '' }); useEffect(() => { setFormData(initialData || {}); // fetchMasterData() }, [initialData]); const handleChange = async (e: any) => { const { name, value } = e.target; if (name === "file_selfie" || name === "photouser" || name === 'file_document_id' || name === "file_document_id_selfie" || name === "file_commercial_license") { // FOR FILE ONLY setFormData({ ...formData, [name]: e.target.files[0] }); } else if(name === "nationality") { let getNationality = await axios.get(`${URL_NATIONALITY}/${value}`); setNationality(getNationality.data.data) setFormData({ ...formData, [name]: value }); } else { setFormData({ ...formData, [name]: value }); if (name === 'municipio' || name === 'posto_adms' || name === 'suco') await getMasterAfter(name, value); } }; async function getMasterAfter(name: string, id: any) { if (name === 'municipio') { let getMunicipiosPosto = await axios.get(`${BASE_URL_MASTER_DATA}/municipios/postoadms/${id}`, { params: { limit: 50, page: 1, with_deleted: false, order_field: 'name', order_direction: 'ASC', } }); setPostoAdm(getMunicipiosPosto.data.data) } if (name === 'posto_adms') { let getPostoSuco = await axios.get(`${BASE_URL_MASTER_DATA}/postoadms/sucos/${id}`, { params: { limit: 50, page: 1, with_deleted: false, order_field: 'name', order_direction: 'ASC', } }); setSucos(getPostoSuco.data.data) } if (name === 'suco') { let getSucoAldeias = await axios.get(`${BASE_URL_MASTER_DATA}/sucos/aldeias/${id}`, { params: { limit: 50, page: 1, with_deleted: false, order_field: 'name', order_direction: 'ASC', } }); setAldeias(getSucoAldeias.data.data) } } const handleAddDialog = (show:boolean) => { if (show) { setShowAddDialog(show) } else { handleClose() setShowAddDialog(show) } } async function fetchMasterData() { try { let getMunicipios = await axios.get(`${BASE_URL_MASTER_DATA}/municipios/list`, { params: { limit: 50, page: 1, with_deleted: false, order_field: 'name', order_direction: 'ASC', } }); setMunicipios(getMunicipios.data.data.list) let getPostoAdms = await axios.get(`${BASE_URL_MASTER_DATA}/postoadms/list`, { params: { limit: 50, page: 1, with_deleted: false, order_field: 'name', order_direction: 'ASC', } }); setPostoAdm(getPostoAdms.data.data.list) let getSucos = await axios.get(`${BASE_URL_MASTER_DATA}/sucos/list`, { params: { limit: 50, page: 1, with_deleted: false, order_field: 'name', order_direction: 'ASC', } }); setSucos(getSucos.data.data.list) let getAldeias = await axios.get(`${BASE_URL_MASTER_DATA}/aldeias/list`, { params: { limit: 50, page: 1, with_deleted: false, order_field: 'name', order_direction: 'ASC', } }); setAldeias(getAldeias.data.data.list) } catch (error) { console.log(error); } } function buttonOnSubmit(e:any) { e.preventDefault(); 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 (page === 'kyc' && !formData.description) return toast.warning(`Description for approval needed!`) handleSubmit(formData); } function btnPrevDef(e:any) { e.preventDefault(); viewOnly ? setViewOnly(false) : setViewOnly(true) } const onReject = () => { handleReject(formData); handleClose(); } return ( handleAddDialog(open)}> Member - View/Edit
{alert.show && (

{alert.message}

)} {/*
*/} {/* onSubmit={(e) => buttonOnSubmit(e, formData)} */}
{formData.id ? generateInput(formData, handleChange, 'Group', 'group_name', 'text', true, true): ''} {formData.id ? generateInput(formData, handleChange, 'Username', 'username', 'text', true, true): ''} {formData.id ? generateInput(formData, handleChange, 'Full Name', 'fullname', 'text', true, viewOnly): ''} {formData.id ? generateImage(formData, handleChange, 'Photo', 'photouser'): ''} {formData.id ? generateList(formData, handleChange, genders, 'gender', 'Gender', null, true): ''} {formData.id ? generateInput(formData, handleChange, 'Date of Birth', 'date_birth', 'date', true, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Phone Number', 'msisdn', 'text', true, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Email', 'email', 'text', true, viewOnly): ''} {/* {generateList(formData, handleChange, status, 'status', 'Status', null, true)} */} {formData.id ? generateList(formData, handleChange, profession, 'profession', 'Profession', null, false): ''} {formData.id ? generateList(formData, handleChange, municipios, 'municipio', 'Municipio', null, false): ''} {formData.id ? generateList(formData, handleChange, postoAdm, 'posto_adms', 'Posto', 'posto_adms_id', false): ''} {formData.id ? generateList(formData, handleChange, sucos, 'suco', 'Suco', 'sucos_id', false): ''} {formData.id ? generateList(formData, handleChange, aldeias, 'aldeia', 'Aldeia', null, false): ''} {formData.id ? generateInput(formData, handleChange, 'Nationality', 'nationality', 'text', true, viewOnly): ''}
    {nationality.map((item: any, index) => (
  • handleChange({target:{name: 'nationality', value: item.name }})} className="bg-gray-100 px-4 py-2 rounded hover:bg-gray-200 cursor-default transition"> {item.name}
  • ))} {formData.nationality && nationality.length === 0 && (
  • No results found.
  • )}
{formData.id ? generateInput(formData, handleChange, 'Address', 'address', 'text', true, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Mother Fullname', 'mother_fullname', 'text', true, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Identity Number', 'identity_number', 'text', false, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'License Number', 'license_number', 'text', false, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Merchant Name', 'agent_name', 'text', false, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Merchant Address', 'merchantaddress', 'text', false, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Longitude Merchant', 'longitudemerchant', 'text', false, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Latitude Merchant', 'latitudemerchant', 'text', false, viewOnly): ''} {formData.id ? generateImage(formData, handleChange, 'File Selfie', 'file_selfie'): ''} {formData.id ? generateImage(formData, handleChange, 'File Document', 'file_document_id'): ''} {formData.id ? generateImage(formData, handleChange, 'File Document & Selfie', 'file_document_id_selfie'): ''} {formData.id ? generateImage(formData, handleChange, 'File Commercial License', 'file_commercial_license'): ''} {formData.id ? generateList(formData, handleChange, banks, 'bank_name', 'Bank Name', null, false): ''} {formData.id ? generateInput(formData, handleChange, 'Bank Account', 'bank_account', 'text', false, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'iBank Number', 'ibank_number', 'text', false, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Approval Premium Description', 'approval_description_premium', 'text', false, viewOnly): ''} {formData.id ? generateInput(formData, handleChange, 'Approval Agent Description', 'approval_description_agent', 'text', false, viewOnly): ''} {(formData.id && page!=='kyc') ? AdmAccess(page, formData, handleClose,fetchCustomers, viewOnly, setViewOnly): ""} {(formData.id && page!=='kyc') ? CustomerWallet(formData.id) : ""}
{/* */} { formData.isneedapproval == 1 && page === 'kyc' ? ( ) : ('') }
{/*
*/}
); }; export default DetailMember; {/* (agent) */} function generateInput(formData:any, handleChange:any, label:string, name:string, type: string, required: boolean, disabled: boolean) { function generateDate(isoString: string) { const date = new Date(isoString); return date.toISOString().slice(0, 10); // "2000-01-18" } return ( <>
) } // ON DEV (DI SELECT MASI HILANG) function generateList(formData:any, handleChange: any, list:any, name:string, label: string, difId: any, required: boolean) { return ( <>
) } // ON DEV (UPDATENYA) function generateImage(formData:any, handleChange:any, label:string, name:string) { const imagePreview = (file:any) => { if (file && file.type && file.type.startsWith('image/')) { const previewURL = URL.createObjectURL(file); return previewURL } return file }; return ( <>
{ formData[name] ? (
{name} {/* {name} */}
) : (No Data)}
) }