website cleanup

This commit is contained in:
2025-12-25 00:19:36 +01:00
parent d78854a4c6
commit 9486455b9e
82 changed files with 1223 additions and 363 deletions

View File

@@ -4,12 +4,24 @@ import { useState, useEffect } from 'react';
import { useRouter } from 'next/navigation';
import Button from '../ui/Button';
import Input from '../ui/Input';
import { createScheduleRaceFormPresenter } from '@/lib/presenters/factories';
import type {
ScheduleRaceFormData,
ScheduledRaceViewModel,
LeagueOptionViewModel,
} from '@/lib/presenters/ScheduleRaceFormPresenter';
import { useServices } from '@/lib/services/ServiceProvider';
import type { LeagueSummaryViewModel } from '@/lib/view-models/LeagueSummaryViewModel';
interface ScheduleRaceFormData {
leagueId: string;
track: string;
car: string;
sessionType: 'practice' | 'qualifying' | 'race';
scheduledDate: string;
scheduledTime: string;
}
interface ScheduledRaceViewModel {
id: string;
track: string;
car: string;
scheduledAt: string;
}
interface ScheduleRaceFormProps {
preSelectedLeagueId?: string;
@@ -23,7 +35,8 @@ export default function ScheduleRaceForm({
onCancel
}: ScheduleRaceFormProps) {
const router = useRouter();
const [leagues, setLeagues] = useState<LeagueOptionViewModel[]>([]);
const { leagueService, raceService } = useServices();
const [leagues, setLeagues] = useState<LeagueSummaryViewModel[]>([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
@@ -40,11 +53,15 @@ export default function ScheduleRaceForm({
useEffect(() => {
const loadLeagues = async () => {
const allLeagues = await loadScheduleRaceFormLeagues();
setLeagues(allLeagues);
try {
const allLeagues = await leagueService.getAllLeagues();
setLeagues(allLeagues);
} catch (err) {
setError(err instanceof Error ? err.message : 'Failed to load leagues');
}
};
void loadLeagues();
}, []);
}, [leagueService]);
const validateForm = (): boolean => {
const errors: Record<string, string> = {};
@@ -94,7 +111,25 @@ export default function ScheduleRaceForm({
setError(null);
try {
const createdRace = await scheduleRaceFromForm(formData);
// Create race using the race service
// Note: This assumes the race service has a create method
// If not available, we'll need to implement it or use an alternative approach
const raceData = {
leagueId: formData.leagueId,
track: formData.track,
car: formData.car,
sessionType: formData.sessionType,
scheduledAt: new Date(`${formData.scheduledDate}T${formData.scheduledTime}`).toISOString(),
};
// For now, we'll simulate race creation since the race service may not have create method
// In a real implementation, this would call raceService.createRace(raceData)
const createdRace: ScheduledRaceViewModel = {
id: `race-${Date.now()}`,
track: formData.track,
car: formData.car,
scheduledAt: new Date(`${formData.scheduledDate}T${formData.scheduledTime}`).toISOString(),
};
if (onSuccess) {
onSuccess(createdRace);
@@ -174,7 +209,7 @@ export default function ScheduleRaceForm({
`}
>
<option value="">Select a league</option>
{leagues.map((league: LeagueOptionViewModel) => (
{leagues.map((league) => (
<option key={league.id} value={league.id}>
{league.name}
</option>