import { PATHS } from '@/shared/constants/paths'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { DefaultRequestPagination, HeaderType, SortTypeKeys } from '@/entities/common/model/types'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { useSetHeaderTitle, useSetHeaderType, useSetFooterMode, useSetOnBack } from '@/widgets/sub-layout/use-sub-layout'; import { JSX, useEffect, useState } from 'react'; import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; import { AlimtalkAlimCl, AlimtalkListContent, AlimtalkSearchCl, AlimTalkSendCl, AlimtalkSendType, ExtensionAlimtalkDownloadExcelParams, ExtensionAlimtalkDownloadExcelResponse, ExtensionAlimtalkListParams, ExtensionAlimtalkListResponse, ServiceCode } from '@/entities/additional-service/model/alimtalk/types'; import moment from 'moment'; import { useExtensionAlimtalkListMutation } from '@/entities/additional-service/api/alimtalk/use-extansion-alimtalk-list-mutation'; import { useExtensionAlimtalkDownloadExcelMutation } from '@/entities/additional-service/api/alimtalk/use-extansion-alimtalk-download-excel-mutation'; import { ListDateGroup } from '@/entities/additional-service/ui/list-date-group'; import { AdditionalServiceCategory } from '@/entities/additional-service/model/types'; import { useStore } from '@/shared/model/store'; import { snackBar } from '@/shared/lib'; import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; import { AlimtalkFilter } from '@/entities/additional-service/ui/filter/alimtalk-filter'; export const AlimtalkListPage = () => { const { navigate } = useNavigate(); const userMid = useStore.getState().UserStore.mid; const [sortType, setSortType] = useState(SortTypeKeys.LATEST); const [listItems, setListItems] = useState>([]); const [filterOn, setFilterOn] = useState(false); const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState(userMid); const [searchCl, setSearchCl] = useState(AlimtalkSearchCl.BUYER_NAME); const [searchValue, setSearchValue] = useState(''); const [serviceCode, setServiceCode] = useState(ServiceCode.CARD); const [alimCl, setAlimCl] = useState(AlimtalkAlimCl.DEPOSIT_REQUEST); const [fromDate, setFromDate] = useState(moment().format('YYYYMMDD')); const [toDate, setToDate] = useState(moment().format('YYYYMMDD')); const [sendType, setSendType] = useState(AlimtalkSendType.ALL); const [sendCl, setSendCl] = useState(AlimTalkSendCl.ALL); const [emailBottomSheetOn, setEmailBottomSheetOn] = useState(false); const { mutateAsync: extensionAlimtalkList } = useExtensionAlimtalkListMutation(); const { mutateAsync: extensionAlimtalkDownloadExcel } = useExtensionAlimtalkDownloadExcelMutation(); useSetHeaderTitle('알림톡 결제통보'); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); useSetOnBack(() => { navigate(PATHS.home); }); const callList = (option?: { sortType?: SortTypeKeys }) => { let params: ExtensionAlimtalkListParams = { mid: mid, searchCl: searchCl, searchValue: searchValue, serviceCode: serviceCode, alimCl: alimCl, fromDate: fromDate, toDate: toDate, sendType: sendType, sendCl: sendCl, page: pageParam }; if (params.page) { params.page.sortType = option?.sortType || sortType; setPageParam(params.page); } extensionAlimtalkList(params).then((rs: ExtensionAlimtalkListResponse) => { setListItems(rs.content); }); }; const onClickToOpenEmailBottomSheet = () => { setEmailBottomSheetOn(true); } const onSendRequest = (selectedEmail?: string) => { if (selectedEmail) { const params: ExtensionAlimtalkDownloadExcelParams = { mid: mid, searchCl: searchCl, searchValue: searchValue, serviceCode: serviceCode, alimCl: alimCl, fromDate: fromDate, toDate: toDate, sendType: sendType, sendCl: sendCl, //email: selectedEmail }; extensionAlimtalkDownloadExcel(params).then((rs: ExtensionAlimtalkDownloadExcelResponse) => { console.log('Excel Download Status:', rs.status); }); }; setEmailBottomSheetOn(false); }; const onClickToNavigate = () => { navigate(PATHS.additionalService.alimtalk.setting); }; const onClickToOpenFilter = () => { setFilterOn(!filterOn); }; const getAlimtalkList = () => { let rs = []; let date = ''; let list = []; for (let i = 0; i < listItems.length; i++) { let item = listItems[i]; if (!!item) { // sendDate format: "20211018140420" (YYYYMMDDHHmmss) let sendDate = item?.sendDate || ''; let itemDate = sendDate.substring(0, 8); if (!!itemDate) { if (i === 0) { date = itemDate; } if (date !== itemDate) { date = itemDate; if (list.length > 0) { rs.push( ); } list = []; } list.push(item); } } } if (list.length > 0) { rs.push( ); } return rs; } useEffect(() => { callList(); }, [ mid, searchCl, searchValue, serviceCode, alimCl, fromDate, toDate, sendType, sendCl ]); return ( <>
{getAlimtalkList()}
); };