edit payments history
This commit is contained in:
@@ -192,12 +192,18 @@ export async function getUserPayments() {
|
|||||||
const parsed = await response.json();
|
const parsed = await response.json();
|
||||||
console.log(parsed);
|
console.log(parsed);
|
||||||
|
|
||||||
return parsed;
|
return {
|
||||||
|
payments: parsed,
|
||||||
|
error: null
|
||||||
|
};
|
||||||
} else {
|
} else {
|
||||||
return null
|
throw 'error';
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return null
|
return {
|
||||||
|
payments: [],
|
||||||
|
error: 'error'
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,19 @@
|
|||||||
import { useQuery } from '@tanstack/react-query';
|
import { useQuery } from '@tanstack/react-query';
|
||||||
import {getUserPayments} from '@/app/actions/referralsActions';
|
import { getUserPayments } from '@/app/actions/referralsActions';
|
||||||
|
|
||||||
export interface PaymentsData {
|
export interface ReferralPayments {
|
||||||
amount: number,
|
amount: number,
|
||||||
cancellationReason: string | null,
|
completedAt: string | null,
|
||||||
createdAt: string,
|
createdAt: string,
|
||||||
id: number,
|
id: number,
|
||||||
operationType: string,
|
processAt: string | null
|
||||||
paymentUuid: string,
|
rejectionReason: string | null,
|
||||||
status: string,
|
status: string,
|
||||||
updatedAt: string,
|
updatedAt: string,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface UserReferralPayments {
|
||||||
export interface UserPayments {
|
payments: ReferralPayments[],
|
||||||
payments: PaymentsData[],
|
|
||||||
error: string | null
|
error: string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -22,17 +21,18 @@ export const useGetReferralPayments = () => {
|
|||||||
return useQuery({
|
return useQuery({
|
||||||
queryKey: ['referralPayments'],
|
queryKey: ['referralPayments'],
|
||||||
queryFn: getUserPayments,
|
queryFn: getUserPayments,
|
||||||
select: (data): UserPayments => {
|
select: (data): UserReferralPayments => {
|
||||||
/* console.log('referralPayments');
|
|
||||||
console.log(data); */
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
return {
|
return {
|
||||||
payments: [],
|
payments: [],
|
||||||
error: null
|
error: 'error'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return {
|
||||||
|
payments: data.payments,
|
||||||
|
error: data.error
|
||||||
|
}
|
||||||
},
|
},
|
||||||
retry: false
|
retry: false
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
// Форматирование даты из timestamp
|
// Форматирование даты из timestamp
|
||||||
export const formatDate = (timestamp: number | string) => {
|
export const formatDate = (timestamp: number | string) => {
|
||||||
|
if (!timestamp) {
|
||||||
|
return '---'
|
||||||
|
}
|
||||||
|
|
||||||
const date = new Date(timestamp);
|
const date = new Date(timestamp);
|
||||||
const day = date.getDate().toString().padStart(2, '0');
|
const day = date.getDate().toString().padStart(2, '0');
|
||||||
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
||||||
@@ -9,6 +13,10 @@ export const formatDate = (timestamp: number | string) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const formatDateTime = (timestamp: number | string) => {
|
export const formatDateTime = (timestamp: number | string) => {
|
||||||
|
if (!timestamp) {
|
||||||
|
return '---'
|
||||||
|
}
|
||||||
|
|
||||||
const date = new Date(timestamp);
|
const date = new Date(timestamp);
|
||||||
const hours = date.getHours().toString().padStart(2, '0');
|
const hours = date.getHours().toString().padStart(2, '0');
|
||||||
const minutes = date.getMinutes().toString().padStart(2, '0');
|
const minutes = date.getMinutes().toString().padStart(2, '0');
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ export default function IncomeAndPayments() {
|
|||||||
return fetchReferralUserStats();
|
return fetchReferralUserStats();
|
||||||
},
|
},
|
||||||
select: (data) => {
|
select: (data) => {
|
||||||
console.log(data);
|
|
||||||
if (data?.referralLink) {
|
if (data?.referralLink) {
|
||||||
return data
|
return data
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -6,57 +6,12 @@ import { useReactTable, getCoreRowModel, getSortedRowModel, getPaginationRowMode
|
|||||||
import { IconDoubleArrowRight, IconArrowRight, IconDoubleArrowLeft, IconArrowLeft, IconArrowUp, IconArrowDown, IconFilter } from '@/app/ui/icons/icons';
|
import { IconDoubleArrowRight, IconArrowRight, IconDoubleArrowLeft, IconArrowLeft, IconArrowUp, IconArrowDown, IconFilter } from '@/app/ui/icons/icons';
|
||||||
import { useTranslations, useLocale } from 'next-intl';
|
import { useTranslations, useLocale } from 'next-intl';
|
||||||
import DropDownList from '@/app/components/DropDownList';
|
import DropDownList from '@/app/components/DropDownList';
|
||||||
import { useQueryClient, useQuery } from '@tanstack/react-query';
|
|
||||||
import { pluralize } from '@/app/lib/pluralize';
|
import { pluralize } from '@/app/lib/pluralize';
|
||||||
import { fetchReferralInvitees } from '@/app/actions/referralsActions';
|
import { ReferralPayments } from '@/app/hooks/react-query/useGetReferralPayments';
|
||||||
|
import { formatDate } from '@/app/lib/formatDate';
|
||||||
type InviteesType = {
|
|
||||||
status?: string;
|
|
||||||
email?: string;
|
|
||||||
registrationData: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
type InviteType = {
|
|
||||||
active?: string;
|
|
||||||
email?: string;
|
|
||||||
regDate: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function PaymentsHistory() {
|
export default function PaymentsHistory() {
|
||||||
|
const { data: paymentsData, isLoading, isError, error, } = useGetReferralPayments();
|
||||||
const { data: paymentsData } = useGetReferralPayments();
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
console.log(paymentsData);
|
|
||||||
}, [paymentsData]);
|
|
||||||
|
|
||||||
const {
|
|
||||||
data: referralInvitees,
|
|
||||||
isLoading,
|
|
||||||
isError,
|
|
||||||
error,
|
|
||||||
} = useQuery<InviteType[], Error, InviteesType[], ['referralInvitees']>({
|
|
||||||
queryKey: ['referralInvitees'],
|
|
||||||
queryFn: () => {
|
|
||||||
return fetchReferralInvitees();
|
|
||||||
},
|
|
||||||
|
|
||||||
select: (data: InviteType[]): InviteesType[] => {
|
|
||||||
if (!data) return [
|
|
||||||
];
|
|
||||||
|
|
||||||
return data.map((item: InviteType) => {
|
|
||||||
|
|
||||||
return {
|
|
||||||
status: item?.active ? 'active' : 'not-active',
|
|
||||||
email: item?.email,
|
|
||||||
registrationData: item?.regDate
|
|
||||||
};
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const queryClient = useQueryClient();
|
|
||||||
|
|
||||||
// Состояния
|
// Состояния
|
||||||
const [sorting, setSorting] = useState<SortingState>([]);
|
const [sorting, setSorting] = useState<SortingState>([]);
|
||||||
@@ -72,7 +27,7 @@ export default function PaymentsHistory() {
|
|||||||
const locale = useLocale();
|
const locale = useLocale();
|
||||||
|
|
||||||
// Определение колонок
|
// Определение колонок
|
||||||
const columns = useMemo<ColumnDef<InviteesType>[]>(
|
const columns = useMemo<ColumnDef<ReferralPayments>[]>(
|
||||||
() => [
|
() => [
|
||||||
{
|
{
|
||||||
accessorKey: 'amount',
|
accessorKey: 'amount',
|
||||||
@@ -103,9 +58,7 @@ export default function PaymentsHistory() {
|
|||||||
),
|
),
|
||||||
cell: ({ row }) => (
|
cell: ({ row }) => (
|
||||||
<div className="text-center table-item">
|
<div className="text-center table-item">
|
||||||
{/* {row.original.size !== undefined ? convertBytes(row.original.size) : '-'} */}
|
{row.original.amount ?? '-'}
|
||||||
{/* {row.original.email} */}
|
|
||||||
---
|
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
@@ -211,7 +164,7 @@ export default function PaymentsHistory() {
|
|||||||
cell: ({ row }) => {
|
cell: ({ row }) => {
|
||||||
return (
|
return (
|
||||||
<div className="text-center table-item">
|
<div className="text-center table-item">
|
||||||
{row.original.registrationData?.split('T')[0]}
|
{formatDate(row.original.createdAt) ? formatDate(row.original.createdAt) : '---'}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
@@ -247,7 +200,7 @@ export default function PaymentsHistory() {
|
|||||||
cell: ({ row }) => {
|
cell: ({ row }) => {
|
||||||
return (
|
return (
|
||||||
<div className="text-center table-item">
|
<div className="text-center table-item">
|
||||||
{row.original.registrationData?.split('T')[0]}
|
{row.original.updatedAt ? formatDate(row.original.updatedAt) : '---'}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
@@ -259,7 +212,7 @@ export default function PaymentsHistory() {
|
|||||||
|
|
||||||
// Фильтрация по типу файла и дате
|
// Фильтрация по типу файла и дате
|
||||||
const filteredData = useMemo(() => {
|
const filteredData = useMemo(() => {
|
||||||
let result = referralInvitees;
|
let result = paymentsData?.payments;
|
||||||
if (!result) {
|
if (!result) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
@@ -315,7 +268,7 @@ export default function PaymentsHistory() {
|
|||||||
} */
|
} */
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}, [referralInvitees, statusFilter, dateFilter]);
|
}, [paymentsData, statusFilter, dateFilter]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const currentPageRows = table.getRowModel().rows;
|
const currentPageRows = table.getRowModel().rows;
|
||||||
|
|||||||
Reference in New Issue
Block a user