diff --git a/src/pages/members/kyc/Columns.tsx b/src/pages/members/kyc/Columns.tsx new file mode 100644 index 0000000..195f62a --- /dev/null +++ b/src/pages/members/kyc/Columns.tsx @@ -0,0 +1,195 @@ +import { Button } from '@/components/ui/button'; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuLabel, + DropdownMenuTrigger +} from '@/components/ui/dropdown-menu'; +import { ColumnDef } from '@tanstack/react-table'; +import { ArrowUpDown, MoreHorizontal } from 'lucide-react'; + +export type Members = { + // id: number; + username: number; + fullname: string; + group: string; + email: string; + created_at: Date; +}; + +export const columns: ColumnDef[] = [ + { + accessorKey: 'no', + header: ({ column }) => { + return ( + + ); + } + }, + { + accessorKey: 'username', + header: ({ column }) => { + return ( + + ); + } + }, + { + accessorKey: 'name', + header: ({ column }) => { + return ( + + ); + } + }, + { + accessorKey: 'group_name', + header: ({ column }) => { + return ( + + ); + } + }, + { + accessorKey: 'destinationGroup', + header: ({ column }) => { + return ( + + ); + } + }, + { + accessorKey: 'email', + header: ({ column }) => { + return ( + + ); + } + }, + { + accessorKey: 'created_at', + header: ({ column }) => { + return ( + + ); + }, + cell: ({ row }) => new Date(row.original.created_at).toLocaleDateString() + }, + { + accessorKey: 'statusApproval', + header: ({ column }) => { + return ( + + ); + } + }, + { + id: 'actions', + cell: ({ row }) => { + const dataMembers = row.original; + return ( + + + ); + } + } +]; + +export const initialMember = { + id: "", + fullname: "", + email: "", + username: "", + msisdn: "", + password: "", + pin: "", + try_pin: "", + mother_fullname: "", + agent_name: "", + bank_name: "", + bank_account: "", + ibank_number: "", + address: "", + longitude: "", + latitude: "", + nationality: "", + photouser: "", + photomerchant: "", + file_selfie: "", + file_document_id: "", + file_document_id_selfie: "", + file_commercial_license: "", + identity_type: "", + identity_number: "", + license_number: "", + date_birth: "", + gender: "", + status: "N", + isneedapproval: "", + isapproved: "", + approveddate: "", + approvedby: "", + created_by: "", + created_at: "", + updated_by: "", + updated_at: "", + deleted_by: "", + deleted_at: "", + group: "", + point_tier: "", + language: "", + municipio: "", + posto_adms: "", + suco: "", + aldeia: "", + profession: "", +} diff --git a/src/pages/members/kyc/Kyc.tsx b/src/pages/members/kyc/Kyc.tsx index fa1a7e2..b7a957c 100644 --- a/src/pages/members/kyc/Kyc.tsx +++ b/src/pages/members/kyc/Kyc.tsx @@ -3,7 +3,7 @@ import { DataTable } from '@/components/ui/DataTable'; import { Table } from '@tanstack/react-table'; import React, { createContext, useContext, useState, useEffect } from 'react'; import { ManageKycContextProvider } from './hooks'; -import { columns, initialMember } from '../manage-members/Columns'; +import { columns, initialMember } from './Columns'; import { useAuthContext } from '@/auth'; import { apiConfig } from '@/config/api.config'; import ConfirmDialog from '@/components/confirm'; @@ -80,6 +80,12 @@ const Kyc = () => { setDialogOpen(true) } + function handleReject(data: any) { + setDialogType('reject') + setMember(data) + setDialogOpen(true) + } + const handleYes = async () => { let userLogin: any = await getUser(); let updateData: any = member; @@ -105,12 +111,19 @@ const Kyc = () => { delete updateData.group_deleted_by; delete updateData.group_deleted_at; try { - await axios.put(`${BASE_URL}/customer/update/${customerId}`, updateData) - if (updateData.isneedapproval == 1) await axios.post(`${BASE_URL}/customer/approve`, {customerid: customerId}) + if (dialogType === 'reject') { + await axios.put(`${BASE_URL}/customer/reject`, {customerid: customerId}) + } + if (dialogType === 'update') { + await axios.put(`${BASE_URL}/customer/update/${customerId}`, updateData) + if (updateData.isneedapproval == 1) await axios.post(`${BASE_URL}/customer/approve`, {customerid: customerId}) + } await fetchGroups(); + setDialogOpen(false) setIsDialogOpen(false) } catch (error: any) { alert(error.message) + setDialogOpen(false) setIsDialogOpen(false) } } @@ -122,19 +135,14 @@ const Kyc = () => { open={dialogOpen} onClose={() => setDialogOpen(false)} title="Confirm Action" - content={`Are you sure you want to `+( dialogType === 'create' ? "create?" : ( dialogType === 'update' ? "update?" : "delete?"))} + content={`Are you sure you want to ${dialogType}?`} onYes={handleYes} onNo={() => setDialogOpen(false)} /> - +

Manage Member KYC

- - {/* -
- -
-
*/} ); diff --git a/src/pages/members/manage-members/CustomerDetailModal.tsx b/src/pages/members/manage-members/CustomerDetailModal.tsx index c227191..8bf051b 100644 --- a/src/pages/members/manage-members/CustomerDetailModal.tsx +++ b/src/pages/members/manage-members/CustomerDetailModal.tsx @@ -12,11 +12,10 @@ import { FormControl, Typography } from "@mui/material"; -import axios from 'axios'; import Divider from '@mui/material/Divider'; import { initialMember } from "./Columns"; -const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStats }: any) => { +const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStats, handleReject }: any) => { const [formData, setFormData] = useState(initialData || initialMember); const [viewOnly, setViewOnly] = useState(viewStats || false); @@ -35,6 +34,11 @@ const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStat handleClose(); }; + const onReject = () => { + handleReject(formData); + handleClose(); + } + function generateDate(date: any, type: any) { if (!date) return '' const today = new Date(date); @@ -44,7 +48,7 @@ const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStat return ( - Customer Form ({viewStats ? 'View' : 'Edit'}) + Customer Form ({viewOnly ? 'View' : 'Edit'})
Customer Data @@ -138,7 +142,7 @@ const CustomerDialog = ({ open, handleClose, handleSubmit, initialData, viewStat { formData.isneedapproval == 1 ? ( - + ) : ('') }