import { useEffect, useState } from 'react'; import { motion } from 'framer-motion'; import { AmountInfoWrap } from '@/entities/settlement/ui/info-wrap/amount-info-wrap'; import { SettlementInfoWrap } from '@/entities/settlement/ui/info-wrap/settlement-info-wrap'; import { TransactionInfoWrap } from '@/entities/settlement/ui/info-wrap/transaction-info-wrap' import { AmountInfo, InfoWrapKeys, SettlementInfo, SettlementPeriodType, SettlementsHistoryDetailParams, SettlementsHistoryDetailResponse, SettlementsTransactionDetailParams, SettlementsTransactionDetailResponse, TransactionInfo } from '@/entities/settlement/model/types'; import { useSettlementsHistoryDetailMutation } from '@/entities/settlement/api/use-settlements-history-detail-mutation'; import { useSettlementsTransactionDetailMutation } from '@/entities/settlement/api/use-settlements-transaction-detail-mutation'; import { NumericFormat } from 'react-number-format'; import moment from 'moment'; import { useTranslation } from 'react-i18next'; import { FullMenuClose } from '@/entities/common/ui/full-menu-close'; import { DetailMotionDuration, DetailMotionStyle, DetailMotionVariants } from '@/entities/common/model/constant'; import { snackBar } from '@/shared/lib'; export interface SettlementDetailProps { detailOn: boolean; setDetailOn: (detailOn: boolean) => void; periodType: SettlementPeriodType; settlementId?: string; tid?: string; }; export const SettlementDetail = ({ detailOn, setDetailOn, periodType, settlementId, tid }: SettlementDetailProps) => { const { t, i18n } = useTranslation(); const [amountInfo, setAmountInfo] = useState(); const [settlementInfo, setSettlementInfo] = useState(); const [settlementAmount, setSettlementAmount] = useState(); const [settlementDate, setSettlementDate] = useState(); const [transactionInfo, setTransactionInfo] = useState(); const [transactionAmount, setTransactionAmount] = useState(); const [merchantName, setMerchantName] = useState(); const [showSettlement, setShowSettlement] = useState(false); const [showTransaction, setShowTransaction] = useState(false); const { mutateAsync: settlementsHistoryDetail } = useSettlementsHistoryDetailMutation(); const { mutateAsync: settlementsTransactionDetail } = useSettlementsTransactionDetailMutation(); const callSettlementDetail = () => { if(settlementId){ let params: SettlementsHistoryDetailParams = { settlementId: settlementId }; settlementsHistoryDetail(params).then((rs: SettlementsHistoryDetailResponse) => { if(rs.amountInfo){ setAmountInfo(rs.amountInfo); setSettlementInfo(rs.settlementInfo); setSettlementAmount(rs.settlementAmount); setSettlementDate(rs.settlementDate); } else{ snackBar('데이터가 존재하지 않습니다.'); onClickToClose(); } }); } }; const callTransactionDetail = () => { if(tid){ let params: SettlementsTransactionDetailParams = { tid: tid }; settlementsTransactionDetail(params).then((rs: SettlementsTransactionDetailResponse) => { setAmountInfo(rs.amountInfo); setTransactionInfo(rs.transactionInfo); setTransactionAmount(rs.transactionAmount); setMerchantName(rs.merchantName); }); } }; const onClickToShowInfo = (infoWrapKey: InfoWrapKeys) => { if(infoWrapKey === InfoWrapKeys.Settlement){ setShowSettlement(!showSettlement); } else if(infoWrapKey === InfoWrapKeys.Transaction){ setShowTransaction(!showTransaction); } }; const onClickToClose = () => { setDetailOn(false); }; useEffect(() => { if(periodType === SettlementPeriodType.SETTLEMENT_DATE && settlementId){ callSettlementDetail(); } else if(periodType === SettlementPeriodType.TRANSACTION_DATE && tid){ callTransactionDetail(); } }, [periodType, settlementId, tid]); return ( <>
{ t('settlement.detailTitle') }
{ (periodType === SettlementPeriodType.SETTLEMENT_DATE) &&
{i18n.language === 'en' && {t('home.currencySymbol')}} {i18n.language !== 'en' && {t('home.currencyWon')}}
{ moment(settlementDate).format('YYYY.MM.DD') }
} { (periodType === SettlementPeriodType.TRANSACTION_DATE) &&
{i18n.language === 'en' && {t('home.currencySymbol')}} {i18n.language !== 'en' && {t('home.currencyWon')}}
{ merchantName }
}
{ (periodType === SettlementPeriodType.SETTLEMENT_DATE) && onClickToShowInfo(infoWrapKey) } > } { (periodType === SettlementPeriodType.TRANSACTION_DATE) && onClickToShowInfo(infoWrapKey) } > }
); };