39 lines
1.6 KiB
TypeScript
39 lines
1.6 KiB
TypeScript
import { CurrencyDisplay } from '@/lib/display-objects/CurrencyDisplay';
|
|
import { DateDisplay } from '@/lib/display-objects/DateDisplay';
|
|
import { LeagueWalletApiDto } from '@/lib/types/tbd/LeagueWalletApiDto';
|
|
import { LeagueWalletTransactionViewData, LeagueWalletViewData } from '@/lib/view-data/LeagueWalletViewData';
|
|
|
|
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
|
|
|
|
export class LeagueWalletViewDataBuilder implements ViewDataBuilder<any, any> {
|
|
build(input: any): any {
|
|
return LeagueWalletViewDataBuilder.build(input);
|
|
}
|
|
|
|
static build(
|
|
static build(apiDto: LeagueWalletApiDto): LeagueWalletViewData {
|
|
const transactions: LeagueWalletTransactionViewData[] = apiDto.transactions.map(t => ({
|
|
...t,
|
|
formattedAmount: CurrencyDisplay.format(t.amount, apiDto.currency),
|
|
amountColor: t.amount >= 0 ? 'green' : 'red',
|
|
formattedDate: DateDisplay.formatShort(t.createdAt),
|
|
statusColor: t.status === 'completed' ? 'green' : t.status === 'pending' ? 'yellow' : 'red',
|
|
typeColor: 'blue',
|
|
}));
|
|
|
|
return {
|
|
leagueId: apiDto.leagueId,
|
|
balance: apiDto.balance,
|
|
formattedBalance: CurrencyDisplay.format(apiDto.balance, apiDto.currency),
|
|
totalRevenue: apiDto.balance, // Mock
|
|
formattedTotalRevenue: CurrencyDisplay.format(apiDto.balance, apiDto.currency),
|
|
totalFees: 0, // Mock
|
|
formattedTotalFees: CurrencyDisplay.format(0, apiDto.currency),
|
|
pendingPayouts: 0, // Mock
|
|
formattedPendingPayouts: CurrencyDisplay.format(0, apiDto.currency),
|
|
currency: apiDto.currency,
|
|
transactions,
|
|
};
|
|
}
|
|
}
|