34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
|
|
|
|
import type { ViewDataBuilder } from '@/lib/contracts/builders/ViewDataBuilder';
|
|
import { DateFormatter } from '@/lib/formatters/DateFormatter';
|
|
import { StatusFormatter } from '@/lib/formatters/StatusFormatter';
|
|
import type { LeagueSponsorshipsApiDto } from '@/lib/types/tbd/LeagueSponsorshipsApiDto';
|
|
import type { LeagueSponsorshipsViewData } from '@/lib/view-data/LeagueSponsorshipsViewData';
|
|
|
|
type LeagueSponsorshipsInputDTO = LeagueSponsorshipsApiDto;
|
|
|
|
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 => ({
|
|
id: r.id,
|
|
slotId: r.slotId,
|
|
sponsorId: r.sponsorId,
|
|
sponsorName: r.sponsorName,
|
|
requestedAt: r.requestedAt,
|
|
formattedRequestedAt: DateFormatter.formatShort(r.requestedAt),
|
|
status: r.status as 'pending' | 'approved' | 'rejected',
|
|
statusLabel: StatusFormatter.protestStatus(r.status),
|
|
})),
|
|
};
|
|
}
|
|
}
|
|
|
|
LeagueSponsorshipsViewDataBuilder satisfies ViewDataBuilder<LeagueSponsorshipsInputDTO, LeagueSponsorshipsViewData>;
|