83 lines
2.3 KiB
TypeScript
83 lines
2.3 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import {
|
|
depositTransactionDummyData,
|
|
depositTransactionsColumns,
|
|
depositTransactionsSearchLabels,
|
|
// extraColumns
|
|
} from "./mockData";
|
|
// import { formatToDateTimeString } from "@/app/utils/formatDate";
|
|
|
|
export async function GET(request: NextRequest) {
|
|
const { searchParams } = new URL(request.url);
|
|
|
|
const status = searchParams.get("status");
|
|
const userId = searchParams.get("userId");
|
|
const depositMethod = searchParams.get("depositMethod");
|
|
const merchandId = searchParams.get("merchandId");
|
|
const transactionId = searchParams.get("transactionId");
|
|
// const dateTime = searchParams.get("dateTime");
|
|
|
|
const dateTimeStart = searchParams.get("dateTime_start");
|
|
const dateTimeEnd = searchParams.get("dateTime_end");
|
|
|
|
let filteredTransactions = [...depositTransactionDummyData];
|
|
|
|
if (userId) {
|
|
filteredTransactions = filteredTransactions.filter(
|
|
(tx) => tx.userId.toString() === userId,
|
|
);
|
|
}
|
|
|
|
if (status) {
|
|
filteredTransactions = filteredTransactions.filter(
|
|
(tx) => tx.status.toLowerCase() === status.toLowerCase(),
|
|
);
|
|
}
|
|
|
|
if (depositMethod) {
|
|
filteredTransactions = filteredTransactions.filter(
|
|
(tx) => tx.depositMethod.toLowerCase() === depositMethod.toLowerCase(),
|
|
);
|
|
}
|
|
if (merchandId) {
|
|
filteredTransactions = filteredTransactions.filter(
|
|
(tx) => tx.merchandId.toString() === merchandId,
|
|
);
|
|
}
|
|
if (transactionId) {
|
|
filteredTransactions = filteredTransactions.filter(
|
|
(tx) => tx.transactionId.toString() === transactionId,
|
|
);
|
|
}
|
|
|
|
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;
|
|
});
|
|
}
|
|
|
|
return NextResponse.json({
|
|
tableRows: filteredTransactions,
|
|
tableSearchLabels: depositTransactionsSearchLabels,
|
|
tableColumns: depositTransactionsColumns,
|
|
});
|
|
}
|