view models
This commit is contained in:
@@ -29,42 +29,12 @@ import { MembershipFeeService } from './payments/MembershipFeeService';
|
||||
import { AuthService } from './auth/AuthService';
|
||||
import { SessionService } from './auth/SessionService';
|
||||
|
||||
// Presenters
|
||||
import { RaceDetailPresenter } from '../presenters/RaceDetailPresenter';
|
||||
import { RaceResultsDetailPresenter } from '../presenters/RaceResultsDetailPresenter';
|
||||
import { RaceWithSOFPresenter } from '../presenters/RaceWithSOFPresenter';
|
||||
import { ImportRaceResultsPresenter } from '../presenters/ImportRaceResultsPresenter';
|
||||
import { DriversLeaderboardPresenter } from '../presenters/DriversLeaderboardPresenter';
|
||||
import { DriverPresenter } from '../presenters/DriverPresenter';
|
||||
import { CompleteOnboardingPresenter } from '../presenters/CompleteOnboardingPresenter';
|
||||
import { DriverRegistrationStatusPresenter } from '../presenters/DriverRegistrationStatusPresenter';
|
||||
import { TeamDetailsPresenter } from '../presenters/TeamDetailsPresenter';
|
||||
import { TeamListPresenter } from '../presenters/TeamListPresenter';
|
||||
import { TeamMembersPresenter } from '../presenters/TeamMembersPresenter';
|
||||
import { TeamJoinRequestPresenter } from '../presenters/TeamJoinRequestPresenter';
|
||||
import { LeagueSummaryPresenter } from '../presenters/LeagueSummaryPresenter';
|
||||
import { LeagueStandingsPresenter } from '../presenters/LeagueStandingsPresenter';
|
||||
import { LeagueMembersPresenter } from '../presenters/LeagueMembersPresenter';
|
||||
import { SponsorListPresenter } from '../presenters/SponsorListPresenter';
|
||||
import { SponsorDashboardPresenter } from '../presenters/SponsorDashboardPresenter';
|
||||
import { SponsorSponsorshipsPresenter } from '../presenters/SponsorSponsorshipsPresenter';
|
||||
import { SponsorshipPricingPresenter } from '../presenters/SponsorshipPricingPresenter';
|
||||
import { PaymentListPresenter } from '../presenters/PaymentListPresenter';
|
||||
import { presentPayment } from '../presenters/PaymentPresenter';
|
||||
import { presentMembershipFee } from '../presenters/MembershipFeePresenter';
|
||||
import { presentPrize } from '../presenters/PrizePresenter';
|
||||
import { presentWallet } from '../presenters/WalletPresenter';
|
||||
import { AnalyticsDashboardPresenter } from '../presenters/AnalyticsDashboardPresenter';
|
||||
import { AnalyticsMetricsPresenter } from '../presenters/AnalyticsMetricsPresenter';
|
||||
import { MediaPresenter } from '../presenters/MediaPresenter';
|
||||
import { AvatarPresenter } from '../presenters/AvatarPresenter';
|
||||
import { SessionPresenter } from '../presenters/SessionPresenter';
|
||||
|
||||
/**
|
||||
* ServiceFactory - Composition root for all services
|
||||
*
|
||||
* Centralizes service creation and dependency injection wiring.
|
||||
* Each factory method creates fresh instances with proper dependencies.
|
||||
* Services now directly instantiate View Models instead of using Presenters.
|
||||
*/
|
||||
export class ServiceFactory {
|
||||
private readonly apiClients: {
|
||||
@@ -79,34 +49,6 @@ export class ServiceFactory {
|
||||
media: MediaApiClient;
|
||||
};
|
||||
|
||||
private readonly presenters: {
|
||||
raceDetail: RaceDetailPresenter;
|
||||
raceResultsDetail: RaceResultsDetailPresenter;
|
||||
raceWithSOF: RaceWithSOFPresenter;
|
||||
importRaceResults: ImportRaceResultsPresenter;
|
||||
driversLeaderboard: DriversLeaderboardPresenter;
|
||||
driver: DriverPresenter;
|
||||
completeOnboarding: CompleteOnboardingPresenter;
|
||||
driverRegistrationStatus: DriverRegistrationStatusPresenter;
|
||||
teamDetails: TeamDetailsPresenter;
|
||||
teamList: TeamListPresenter;
|
||||
teamMembers: TeamMembersPresenter;
|
||||
teamJoinRequest: TeamJoinRequestPresenter;
|
||||
leagueSummary: LeagueSummaryPresenter;
|
||||
leagueStandings: LeagueStandingsPresenter;
|
||||
leagueMembers: LeagueMembersPresenter;
|
||||
sponsorList: SponsorListPresenter;
|
||||
sponsorDashboard: SponsorDashboardPresenter;
|
||||
sponsorSponsorships: SponsorSponsorshipsPresenter;
|
||||
sponsorshipPricing: SponsorshipPricingPresenter;
|
||||
paymentList: PaymentListPresenter;
|
||||
analyticsDashboard: AnalyticsDashboardPresenter;
|
||||
analyticsMetrics: AnalyticsMetricsPresenter;
|
||||
media: MediaPresenter;
|
||||
avatar: AvatarPresenter;
|
||||
session: SessionPresenter;
|
||||
};
|
||||
|
||||
constructor(baseUrl: string) {
|
||||
// Initialize API clients
|
||||
this.apiClients = {
|
||||
@@ -120,159 +62,83 @@ export class ServiceFactory {
|
||||
analytics: new AnalyticsApiClient(baseUrl),
|
||||
media: new MediaApiClient(baseUrl),
|
||||
};
|
||||
|
||||
// Initialize presenters
|
||||
this.presenters = {
|
||||
raceDetail: new RaceDetailPresenter(),
|
||||
raceResultsDetail: new RaceResultsDetailPresenter(),
|
||||
raceWithSOF: new RaceWithSOFPresenter(),
|
||||
importRaceResults: new ImportRaceResultsPresenter(),
|
||||
driversLeaderboard: new DriversLeaderboardPresenter(),
|
||||
driver: new DriverPresenter(),
|
||||
completeOnboarding: new CompleteOnboardingPresenter(),
|
||||
driverRegistrationStatus: new DriverRegistrationStatusPresenter(),
|
||||
teamDetails: new TeamDetailsPresenter(),
|
||||
teamList: new TeamListPresenter(),
|
||||
teamMembers: new TeamMembersPresenter(),
|
||||
teamJoinRequest: new TeamJoinRequestPresenter(),
|
||||
leagueSummary: new LeagueSummaryPresenter(),
|
||||
leagueStandings: new LeagueStandingsPresenter(),
|
||||
leagueMembers: new LeagueMembersPresenter(),
|
||||
sponsorList: new SponsorListPresenter(),
|
||||
sponsorDashboard: new SponsorDashboardPresenter(),
|
||||
sponsorSponsorships: new SponsorSponsorshipsPresenter(),
|
||||
sponsorshipPricing: new SponsorshipPricingPresenter(),
|
||||
paymentList: new PaymentListPresenter(),
|
||||
analyticsDashboard: new AnalyticsDashboardPresenter(),
|
||||
analyticsMetrics: new AnalyticsMetricsPresenter(),
|
||||
media: new MediaPresenter(),
|
||||
avatar: new AvatarPresenter(),
|
||||
session: new SessionPresenter(),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Create RaceService instance
|
||||
*/
|
||||
createRaceService(): RaceService {
|
||||
return new RaceService(
|
||||
this.apiClients.races,
|
||||
this.presenters.raceDetail
|
||||
);
|
||||
return new RaceService(this.apiClients.races);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create RaceResultsService instance
|
||||
*/
|
||||
createRaceResultsService(): RaceResultsService {
|
||||
return new RaceResultsService(
|
||||
this.apiClients.races,
|
||||
this.presenters.raceResultsDetail,
|
||||
this.presenters.raceWithSOF,
|
||||
this.presenters.importRaceResults
|
||||
);
|
||||
return new RaceResultsService(this.apiClients.races);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create DriverService instance
|
||||
*/
|
||||
createDriverService(): DriverService {
|
||||
return new DriverService(
|
||||
this.apiClients.drivers,
|
||||
this.presenters.driversLeaderboard,
|
||||
this.presenters.driver,
|
||||
this.presenters.completeOnboarding
|
||||
);
|
||||
return new DriverService(this.apiClients.drivers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create DriverRegistrationService instance
|
||||
*/
|
||||
createDriverRegistrationService(): DriverRegistrationService {
|
||||
return new DriverRegistrationService(
|
||||
this.apiClients.drivers,
|
||||
this.presenters.driverRegistrationStatus
|
||||
);
|
||||
return new DriverRegistrationService(this.apiClients.drivers);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create TeamService instance
|
||||
*/
|
||||
createTeamService(): TeamService {
|
||||
return new TeamService(
|
||||
this.apiClients.teams,
|
||||
this.presenters.teamList,
|
||||
this.presenters.teamDetails,
|
||||
this.presenters.teamMembers
|
||||
);
|
||||
return new TeamService(this.apiClients.teams);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create TeamJoinService instance
|
||||
*/
|
||||
createTeamJoinService(): TeamJoinService {
|
||||
return new TeamJoinService(
|
||||
this.apiClients.teams,
|
||||
this.presenters.teamJoinRequest
|
||||
);
|
||||
return new TeamJoinService(this.apiClients.teams);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create LeagueService instance
|
||||
*/
|
||||
createLeagueService(): LeagueService {
|
||||
return new LeagueService(
|
||||
this.apiClients.leagues,
|
||||
this.presenters.leagueSummary,
|
||||
this.presenters.leagueStandings
|
||||
);
|
||||
return new LeagueService(this.apiClients.leagues);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create LeagueMembershipService instance
|
||||
*/
|
||||
createLeagueMembershipService(): LeagueMembershipService {
|
||||
return new LeagueMembershipService(
|
||||
this.apiClients.leagues,
|
||||
this.presenters.leagueMembers
|
||||
);
|
||||
return new LeagueMembershipService(this.apiClients.leagues);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create SponsorService instance
|
||||
*/
|
||||
createSponsorService(): SponsorService {
|
||||
return new SponsorService(
|
||||
this.apiClients.sponsors,
|
||||
this.presenters.sponsorList,
|
||||
this.presenters.sponsorDashboard,
|
||||
this.presenters.sponsorSponsorships
|
||||
);
|
||||
return new SponsorService(this.apiClients.sponsors);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create SponsorshipService instance
|
||||
*/
|
||||
createSponsorshipService(): SponsorshipService {
|
||||
return new SponsorshipService(
|
||||
this.apiClients.sponsors,
|
||||
this.presenters.sponsorshipPricing,
|
||||
this.presenters.sponsorSponsorships
|
||||
);
|
||||
return new SponsorshipService(this.apiClients.sponsors);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create PaymentService instance
|
||||
*/
|
||||
createPaymentService(): PaymentService {
|
||||
return new PaymentService(
|
||||
this.apiClients.payments,
|
||||
this.presenters.paymentList,
|
||||
presentPayment,
|
||||
presentMembershipFee,
|
||||
presentPrize,
|
||||
presentWallet
|
||||
);
|
||||
return new PaymentService(this.apiClients.payments);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -286,31 +152,21 @@ export class ServiceFactory {
|
||||
* Create DashboardService instance
|
||||
*/
|
||||
createDashboardService(): DashboardService {
|
||||
return new DashboardService(
|
||||
this.apiClients.analytics,
|
||||
this.presenters.analyticsDashboard,
|
||||
this.presenters.analyticsMetrics
|
||||
);
|
||||
return new DashboardService(this.apiClients.analytics);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create MediaService instance
|
||||
*/
|
||||
createMediaService(): MediaService {
|
||||
return new MediaService(
|
||||
this.apiClients.media,
|
||||
this.presenters.media
|
||||
);
|
||||
return new MediaService(this.apiClients.media);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create AvatarService instance
|
||||
*/
|
||||
createAvatarService(): AvatarService {
|
||||
return new AvatarService(
|
||||
this.apiClients.media,
|
||||
this.presenters.avatar
|
||||
);
|
||||
return new AvatarService(this.apiClients.media);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -338,9 +194,6 @@ export class ServiceFactory {
|
||||
* Create SessionService instance
|
||||
*/
|
||||
createSessionService(): SessionService {
|
||||
return new SessionService(
|
||||
this.apiClients.auth,
|
||||
this.presenters.session
|
||||
);
|
||||
return new SessionService(this.apiClients.auth);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user