member and kyc

This commit is contained in:
unknown
2025-03-13 16:28:58 +07:00
parent 966d3c7780
commit 5a0a2a6d71
5 changed files with 154 additions and 34 deletions

View File

@ -1,4 +1,5 @@
import React, { useState, useEffect } from "react";
import axios from 'axios';
import {
Dialog,
DialogActions,
@ -14,21 +15,114 @@ import {
} from "@mui/material";
import Divider from '@mui/material/Divider';
import { initialMember } from "./Columns";
import { apiConfig } from '@/config/api.config';
const BASE_URL_MASTER_DATA = apiConfig.service_master_data;
const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStats, handleReject }: any) => {
const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStats, handleReject, page }: any) => {
const [formData, setFormData] = useState(initialData || initialMember);
const [viewOnly, setViewOnly] = useState(viewStats || false);
const [municipios, setMunicipios] = useState([]);
const [aldeias, setAldeias] = useState([]);
const [postoAdm, setPostoAdm] = useState([]);
const [sucos, setSucos] = useState([]);
useEffect(() => {
setFormData(initialData || {}); // Sync formData when initialData changes
fetchMasterData()
}, [initialData]);
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);
}
}
const handleChange = (e: any) => {
const handleChange = async (e: any) => {
const { name, value } = e.target;
if (name === 'municipio' || name === 'posto_adms' || name === 'suco') await getMasterAfter(name, value);
setFormData({ ...formData, [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 onSubmit = () => {
handleSubmit(formData);
handleClose();
@ -102,32 +196,44 @@ const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStat
<FormControl fullWidth margin="dense">
<InputLabel>Municipio</InputLabel>
<Select disabled={viewOnly} name="municipio" value={formData.municipio} onChange={handleChange}>
<MenuItem value="municipio1">Municipio 1</MenuItem>
<MenuItem value="municipio2">Municipio 2</MenuItem>
{
municipios ? municipios.map((el: any) => (
<MenuItem key={el.id} value={el.id}>{el.name}</MenuItem>
)) : ""
}
</Select>
</FormControl>
<FormControl fullWidth margin="dense">
<InputLabel>Posto</InputLabel>
<Select disabled={viewOnly} name="posto_adms" value={formData.posto_adms} onChange={handleChange}>
<MenuItem value="posto1">Posto 1</MenuItem>
<MenuItem value="posto2">Posto 2</MenuItem>
<Select disabled={viewOnly || !formData.municipio} name="posto_adms" value={formData.posto_adms} onChange={handleChange}>
{
postoAdm ? postoAdm.map((el: any) => (
<MenuItem key={el.posto_adms_id || el.id} value={el.posto_adms_id || el.id}>{el.posto_adms_name || el.name}</MenuItem>
)) : ""
}
</Select>
</FormControl>
<FormControl fullWidth margin="dense">
<InputLabel>Suco</InputLabel>
<Select disabled={viewOnly} name="suco" value={formData.suco} onChange={handleChange}>
<MenuItem value="posto1">suco 1</MenuItem>
<MenuItem value="posto2">suco 2</MenuItem>
<Select disabled={viewOnly || !formData.posto_adms} name="suco" value={formData.suco} onChange={handleChange}>
{
sucos ? sucos.map((el: any) => (
<MenuItem key={el.sucos_id || el.id} value={el.sucos_id || el.id}>{el.sucos_name || el.name}</MenuItem>
)) : ""
}
</Select>
</FormControl>
<FormControl fullWidth margin="dense">
<InputLabel>Aldeia</InputLabel>
<Select disabled={viewOnly} name="aldeia" value={formData.aldeia} onChange={handleChange}>
<MenuItem value="posto1">aldeia 1</MenuItem>
<MenuItem value="posto2">aldeia 2</MenuItem>
<Select disabled={viewOnly || !formData.suco} name="aldeia" value={formData.aldeia} onChange={handleChange}>
{
aldeias ? aldeias.map((el: any) => (
<MenuItem key={el.id} value={el.id}>{el.name}</MenuItem>
)) : ""
}
</Select>
</FormControl>
@ -141,12 +247,12 @@ const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStat
<Button onClick={() => viewOnly ? setViewOnly(false) : setViewOnly(true)} color="secondary">{ viewOnly ? (`Open Edit`) : (`Close Edit`) }</Button>
<Button onClick={handleClose} color="secondary">Cancel</Button>
{
formData.isneedapproval == 1 ? (
formData.isneedapproval == 1 && page === 'kyc' ? (
<Button onClick={onReject} color="warning" variant="contained">Reject</Button>
) : ('')
}
<Button onClick={onSubmit} color="primary" variant="contained">
{ formData.isneedapproval == 1 ? (`Edit & Approve`) : (`Edit`) }
{ formData.id ? (formData.isneedapproval == 1 && page === 'kyc' ? (`Edit & Approve`) : (`Edit`)) : ("Create") }
</Button>
</DialogActions>
</Dialog>