import { DashboardOverviewUseCase } from '@core/racing/application/use-cases/DashboardOverviewUseCase'; import { Inject, Injectable } from '@nestjs/common'; import { DashboardOverviewDTO } from './dtos/DashboardOverviewDTO'; import { DashboardOverviewPresenter } from './presenters/DashboardOverviewPresenter'; // Core imports import type { Logger } from '@core/shared/application/Logger'; // Tokens import { DASHBOARD_OVERVIEW_USE_CASE_TOKEN, LOGGER_TOKEN } from './DashboardProviders'; @Injectable() export class DashboardService { private readonly presenter = new DashboardOverviewPresenter(); constructor( @Inject(LOGGER_TOKEN) private readonly logger: Logger, @Inject(DASHBOARD_OVERVIEW_USE_CASE_TOKEN) private readonly dashboardOverviewUseCase: DashboardOverviewUseCase, ) {} async getDashboardOverview(driverId: string): Promise { this.logger.debug('[DashboardService] Getting dashboard overview:', { driverId }); const result = await this.dashboardOverviewUseCase.execute({ driverId }); if (result.isErr()) { throw new Error(result.unwrapErr().details?.message ?? 'Failed to get dashboard overview'); } this.presenter.present(result); return this.presenter.getResponseModel(); } }