view data fixes
Some checks failed
Contract Testing / contract-tests (pull_request) Failing after 5m51s
Contract Testing / contract-snapshot (pull_request) Has been skipped

This commit is contained in:
2026-01-24 12:14:08 +01:00
parent dde77e717a
commit 046852703f
94 changed files with 1333 additions and 4885 deletions

View File

@@ -1,27 +1,37 @@
'use client';
import { DateFormatter } from '@/lib/formatters/DateFormatter';
import { StatusFormatter } from '@/lib/formatters/StatusFormatter';
import { LeagueSponsorshipsApiDto } from '@/lib/types/tbd/LeagueSponsorshipsApiDto';
import { LeagueSponsorshipsViewData } from '@/lib/view-data/LeagueSponsorshipsViewData';
import type { LeagueSponsorshipsViewData } from '@/lib/view-data/LeagueSponsorshipsViewData';
import type { ViewDataBuilder } from '@/lib/contracts/builders/ViewDataBuilder';
import type { GetSeasonSponsorshipsOutputDTO } from '@/lib/types/generated/GetSeasonSponsorshipsOutputDTO';
import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder";
type LeagueSponsorshipsInputDTO = GetSeasonSponsorshipsOutputDTO & {
leagueId: string;
league: { id: string; name: string; description: string };
sponsorshipSlots: LeagueSponsorshipsViewData['sponsorshipSlots'];
}
export class LeagueSponsorshipsViewDataBuilder implements ViewDataBuilder<any, any> {
build(input: any): any {
return LeagueSponsorshipsViewDataBuilder.build(input);
}
static build(apiDto: LeagueSponsorshipsApiDto): LeagueSponsorshipsViewData {
export class LeagueSponsorshipsViewDataBuilder {
public static build(apiDto: LeagueSponsorshipsInputDTO): LeagueSponsorshipsViewData {
return {
leagueId: apiDto.leagueId,
activeTab: 'overview',
onTabChange: () => {},
league: apiDto.league,
sponsorshipSlots: apiDto.sponsorshipSlots,
sponsorshipRequests: apiDto.sponsorshipRequests.map(r => ({
...r,
formattedRequestedAt: DateFormatter.formatShort(r.requestedAt),
statusLabel: StatusFormatter.protestStatus(r.status), // Reusing protest status for now
sponsorshipRequests: apiDto.sponsorships.map(r => ({
id: r.id,
slotId: '', // Missing in DTO
sponsorId: '', // Missing in DTO
sponsorName: '', // Missing in DTO
requestedAt: r.createdAt,
formattedRequestedAt: DateFormatter.formatShort(r.createdAt),
status: r.status as 'pending' | 'approved' | 'rejected',
statusLabel: StatusFormatter.protestStatus(r.status),
})),
};
}
}
LeagueSponsorshipsViewDataBuilder satisfies ViewDataBuilder<LeagueSponsorshipsInputDTO, LeagueSponsorshipsViewData>;