69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import {
|
|
withdrawalTransactionDummyData,
|
|
withdrawalTransactionsColumns,
|
|
withdrawalTransactionsSearchLabels,
|
|
} from "./mockData";
|
|
|
|
export async function GET(request: NextRequest) {
|
|
const { searchParams } = new URL(request.url);
|
|
|
|
const userId = searchParams.get("userId");
|
|
const status = searchParams.get("status");
|
|
const withdrawalMethod = searchParams.get("withdrawalMethod");
|
|
|
|
const dateTimeStart = searchParams.get("dateTime_start");
|
|
const dateTimeEnd = searchParams.get("dateTime_end");
|
|
|
|
let filteredTransactions = [...withdrawalTransactionDummyData];
|
|
|
|
if (userId) {
|
|
filteredTransactions = filteredTransactions.filter(
|
|
(tx) => tx.userId.toString() === userId,
|
|
);
|
|
}
|
|
|
|
if (status) {
|
|
filteredTransactions = filteredTransactions.filter(
|
|
(tx) => tx.status.toLowerCase() === status.toLowerCase(),
|
|
);
|
|
}
|
|
|
|
if (dateTimeStart && dateTimeEnd) {
|
|
const start = new Date(dateTimeStart);
|
|
const end = new Date(dateTimeEnd);
|
|
|
|
if (isNaN(start.getTime()) || isNaN(end.getTime())) {
|
|
return NextResponse.json(
|
|
{
|
|
error: "Invalid date range",
|
|
},
|
|
{ status: 400 },
|
|
);
|
|
}
|
|
|
|
filteredTransactions = filteredTransactions.filter((tx) => {
|
|
const txDate = new Date(tx.dateTime);
|
|
|
|
if (isNaN(txDate.getTime())) {
|
|
return false;
|
|
}
|
|
|
|
return txDate >= start && txDate <= end;
|
|
});
|
|
}
|
|
|
|
if (withdrawalMethod) {
|
|
filteredTransactions = filteredTransactions.filter(
|
|
(tx) =>
|
|
tx.withdrawalMethod.toLowerCase() === withdrawalMethod.toLowerCase(),
|
|
);
|
|
}
|
|
|
|
return NextResponse.json({
|
|
tableRows: filteredTransactions,
|
|
tableSearchLabels: withdrawalTransactionsSearchLabels,
|
|
tableColumns: withdrawalTransactionsColumns,
|
|
});
|
|
}
|