Files
gridpilot.gg/apps/website/lib/builders/view-data/LeagueWalletViewDataBuilder.ts
2026-01-24 00:52:27 +01:00

38 lines
1.3 KiB
TypeScript

import type { GetLeagueWalletOutputDTO } from '@/lib/types/generated/GetLeagueWalletOutputDTO';
import type { LeagueWalletViewData } from '@/lib/view-data/LeagueWalletViewData';
import type { WalletTransactionViewData } from '@/lib/view-data/WalletTransactionViewData';
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
export class LeagueWalletViewDataBuilder implements ViewDataBuilder<any, any> {
build(input: any): any {
return LeagueWalletViewDataBuilder.build(input);
}
static build(apiDto: GetLeagueWalletOutputDTO): LeagueWalletViewData {
const transactions: WalletTransactionViewData[] = apiDto.transactions.map(t => ({
id: t.id,
type: t.type as any,
description: t.description,
amount: t.amount,
fee: t.fee,
netAmount: t.netAmount,
date: (t as any).createdAt || (t as any).date || new Date().toISOString(),
status: t.status as any,
reference: t.reference,
}));
return {
balance: apiDto.balance,
currency: apiDto.currency,
totalRevenue: apiDto.totalRevenue,
totalFees: apiDto.totalFees,
totalWithdrawals: apiDto.totalWithdrawals,
pendingPayouts: apiDto.pendingPayouts,
transactions,
canWithdraw: apiDto.canWithdraw,
withdrawalBlockReason: apiDto.withdrawalBlockReason,
};
}
}