/** * ViewData Builder for Sponsorship Requests page * Transforms API DTO to ViewData for templates */ import type { GetPendingSponsorshipRequestsOutputDTO } from '@/lib/types/generated/GetPendingSponsorshipRequestsOutputDTO'; import type { SponsorshipRequestsViewData } from '@/lib/view-data/SponsorshipRequestsViewData'; import { ViewDataBuilder } from "../../contracts/builders/ViewDataBuilder"; export class SponsorshipRequestsPageViewDataBuilder { /** * Transform API DTO to ViewData * * @param apiDto - The DTO from the service * @returns ViewData for the sponsorship requests page */ public static build(apiDto: GetPendingSponsorshipRequestsOutputDTO): SponsorshipRequestsViewData { return { sections: [{ entityType: apiDto.entityType as 'driver' | 'team' | 'season', entityId: apiDto.entityId, entityName: apiDto.entityType, requests: (apiDto.requests || []).map(request => ({ id: request.id, sponsorId: request.sponsorId, sponsorName: request.sponsorName, sponsorLogoUrl: request.sponsorLogo || null, message: request.message || null, createdAtIso: request.createdAt, })), }], }; } } SponsorshipRequestsPageViewDataBuilder satisfies ViewDataBuilder;