league service
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import type { IDriverRepository } from '../../domain/repositories/IDriverRepository';
|
||||
import type { ICompleteDriverOnboardingPresenter, CompleteDriverOnboardingResultDTO } from '../presenters/ICompleteDriverOnboardingPresenter';
|
||||
import type { UseCase } from '@gridpilot/shared/application/UseCase';
|
||||
import { Driver } from '../../domain/entities/Driver';
|
||||
|
||||
export interface CompleteDriverOnboardingInput {
|
||||
userId: string;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
displayName: string;
|
||||
country: string;
|
||||
timezone?: string;
|
||||
bio?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use Case for completing driver onboarding.
|
||||
*/
|
||||
export class CompleteDriverOnboardingUseCase
|
||||
implements UseCase<CompleteDriverOnboardingInput, CompleteDriverOnboardingResultDTO, any, ICompleteDriverOnboardingPresenter>
|
||||
{
|
||||
constructor(private readonly driverRepository: IDriverRepository) {}
|
||||
|
||||
async execute(input: CompleteDriverOnboardingInput, presenter: ICompleteDriverOnboardingPresenter): Promise<void> {
|
||||
presenter.reset();
|
||||
|
||||
try {
|
||||
// Check if driver already exists
|
||||
const existing = await this.driverRepository.findById(input.userId);
|
||||
if (existing) {
|
||||
presenter.present({
|
||||
success: false,
|
||||
errorMessage: 'Driver already exists',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Create new driver
|
||||
const driver = Driver.create({
|
||||
id: input.userId,
|
||||
iracingId: input.userId, // Assuming userId is iracingId for now
|
||||
name: input.displayName,
|
||||
country: input.country,
|
||||
bio: input.bio,
|
||||
});
|
||||
|
||||
await this.driverRepository.save(driver);
|
||||
|
||||
presenter.present({
|
||||
success: true,
|
||||
driverId: driver.id,
|
||||
});
|
||||
} catch (error) {
|
||||
presenter.present({
|
||||
success: false,
|
||||
errorMessage: error instanceof Error ? error.message : 'Unknown error',
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user