import { NumericFormat } from 'react-number-format'; import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { ListItemProps, AdditionalServiceCategory } from '../model/types'; import { getPaymentStatusText, getProcessStatusText, getSendMethodText } from '../lib/payment-status-utils'; import moment from 'moment'; export const ListItem = ({ additionalServiceCategory, mid, tid, paymentDate, paymentStatus, requestDate, bankName, accountNo, resultStatus, amount, sendDate, sendStatus, sendMethod, scheduledSendDate, processStatus, accountName,transferStatus, submallId, settlementDate, companyName, disbursementStatus, disbursementAmount, transferAmount, receiveBankName, receiveAccountNo, receiveAccountName, status, processDate }: ListItemProps) => { const { navigate } = useNavigate(); const getItemClass = () => { let rs = ''; if (paymentStatus === '') { rs = ''; } else if (paymentStatus === "APPROVAL") { rs = 'approved'; } else if (paymentStatus === "ALL_CANCEL") { rs = 'refund'; } else if (paymentStatus === 'AFTER_CANCEL') { rs = 'refund'; } return rs; }; const getDotClass = (str?: string) => { let rs = ''; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { if (paymentStatus === '') { rs = ''; } else if (paymentStatus === "APPROVAL") { rs = 'blue'; } else if (paymentStatus === "ALL_CANCEL") { rs = 'gray'; } else if (paymentStatus === 'AFTER_CANCEL') { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { if (transferStatus === "REQUEST" || transferStatus === "SUCCESS") { rs = 'blue'; } else if (transferStatus === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { if (resultStatus === "SUCCESS") { rs = 'blue'; } else if (resultStatus === "FAIL") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory) { if (paymentStatus === "PAYMENT_COMPLETE") { rs = 'blue'; } else if (paymentStatus === "ACTIVE") { rs = 'blue'; } else if (paymentStatus === "DEPOSIT_REQUEST") { rs = 'blue'; } else if (paymentStatus === "PAYMENT_FAIL") { rs = 'blue'; } else if (paymentStatus === "INACTIVE") { rs = 'gray'; } } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentPending) { if (processStatus === "SEND_REQUEST") { rs = 'blue' } else { rs = 'gray' } } return rs; }; const onClickToNavigate = () => { if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { return; } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { navigate(PATHS.additionalService.accountHolderAuth.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }) } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { navigate(PATHS.additionalService.accountHolderSearch.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }); } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory) { navigate(PATHS.additionalService.linkPayment.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }); } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentPending) { navigate(PATHS.additionalService.linkPayment.pendingDetail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }); } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccount) { navigate(PATHS.additionalService.fundAccount.transferDetail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }); } else if (additionalServiceCategory === AdditionalServiceCategory.SettlementAgency) { } else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { navigate(PATHS.additionalService.payout.detail, { state: { additionalServiceCategory: additionalServiceCategory, mid: mid, tid: tid } }); } else { alert('additionalServiceCategory가 존재하지 않습니다.'); } }; const getTime = () => { let timeStr = ''; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { let time = paymentDate?.substring(8, 12); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4); } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { let time = requestDate?.substring(8, 14); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4) + ':' + time?.substring(4, 6); } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { let time = requestDate?.substring(8, 14); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4) + ':' + time?.substring(4, 6); } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccount) { timeStr = moment(requestDate).format('mm:ss'); } else { return } return timeStr }; const getTitle = () => { let str: string | undefined = ''; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { str = `${tid}(${amount})`; } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { str = `${accountName}(${accountNo})` } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { str = `${accountNo}` } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory || additionalServiceCategory === AdditionalServiceCategory.LinkPaymentPending ) { if (sendMethod === "SMS") { str = `${"buyerName"}(${"휴대폰 번호"})` } else { str = `${"buyerName"}(${"이메일"})` } } else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { str = companyName; } else if(additionalServiceCategory === AdditionalServiceCategory.FundAccount){ str = `${receiveAccountName}(${receiveAccountNo})` } return str; }; const getDetail = () => { let rs = []; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { rs.push(
{getTime()} | {paymentStatus}
); } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { rs.push(
{getTime()} | {bankName}
) } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { rs.push(
{getTime()} | {bankName}
); } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory) { if (paymentStatus === "PAYMENT_FAIL" || paymentStatus === "INACTIVE") { rs.push(
{getPaymentStatusText(paymentStatus)} | {getSendMethodText(sendMethod)}
) } else { rs.push(
{getPaymentStatusText(paymentStatus)} | {getSendMethodText(sendMethod)} | {"결제수단 추가 필요"}
); } } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentPending) { rs.push(
{getProcessStatusText(processStatus)} | {getSendMethodText(sendMethod)}
); } else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { rs.push(
{disbursementStatus} | {submallId}
); } else if(additionalServiceCategory === AdditionalServiceCategory.FundAccount){ rs.push(
{ getTime() } | { status }
); } return rs; }; const getAmount = () => { let rs: any[] = []; if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { rs.push(
{resultStatus === 'SUCCESS' ? '성공' : '실패'}
); } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { rs.push(
{(transferStatus === 'REQUEST' || transferStatus === 'SUCCESS') ? '성공' : '실패'}
); } else if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { rs.push(
); } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory || additionalServiceCategory === AdditionalServiceCategory.LinkPaymentPending ) { rs.push(
); } else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { rs.push(
); } else if (additionalServiceCategory === AdditionalServiceCategory.FundAccount) { rs.push(
); } return rs; } return ( <>
onClickToNavigate()} >
{ getTitle() }
{ getDetail() }
{ getAmount() }
); };