league service
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface ApproveLeagueJoinRequestViewModel {
|
||||
success: boolean;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface ApproveLeagueJoinRequestResultDTO {
|
||||
success: boolean;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface IApproveLeagueJoinRequestPresenter extends Presenter<ApproveLeagueJoinRequestResultDTO, ApproveLeagueJoinRequestViewModel> {}
|
||||
@@ -0,0 +1,17 @@
|
||||
export interface CompleteDriverOnboardingViewModel {
|
||||
success: boolean;
|
||||
driverId?: string;
|
||||
errorMessage?: string;
|
||||
}
|
||||
|
||||
export interface CompleteDriverOnboardingResultDTO {
|
||||
success: boolean;
|
||||
driverId?: string;
|
||||
errorMessage?: string;
|
||||
}
|
||||
|
||||
export interface ICompleteDriverOnboardingPresenter {
|
||||
present(dto: CompleteDriverOnboardingResultDTO): void;
|
||||
get viewModel(): CompleteDriverOnboardingViewModel;
|
||||
reset(): void;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface GetLeagueAdminPermissionsViewModel {
|
||||
canRemoveMember: boolean;
|
||||
canUpdateRoles: boolean;
|
||||
}
|
||||
|
||||
export interface GetLeagueAdminPermissionsResultDTO {
|
||||
canRemoveMember: boolean;
|
||||
canUpdateRoles: boolean;
|
||||
}
|
||||
|
||||
export interface IGetLeagueAdminPermissionsPresenter extends Presenter<GetLeagueAdminPermissionsResultDTO, GetLeagueAdminPermissionsViewModel> {}
|
||||
@@ -0,0 +1,13 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface LeagueAdminViewModel {
|
||||
leagueId: string;
|
||||
ownerId: string;
|
||||
}
|
||||
|
||||
export interface GetLeagueAdminResultDTO {
|
||||
leagueId: string;
|
||||
ownerId: string;
|
||||
}
|
||||
|
||||
export interface IGetLeagueAdminPresenter extends Presenter<GetLeagueAdminResultDTO, LeagueAdminViewModel> {}
|
||||
@@ -0,0 +1,21 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface LeagueJoinRequestViewModel {
|
||||
id: string;
|
||||
leagueId: string;
|
||||
driverId: string;
|
||||
requestedAt: Date;
|
||||
message: string;
|
||||
driver: { id: string; name: string } | null;
|
||||
}
|
||||
|
||||
export interface GetLeagueJoinRequestsViewModel {
|
||||
joinRequests: LeagueJoinRequestViewModel[];
|
||||
}
|
||||
|
||||
export interface GetLeagueJoinRequestsResultDTO {
|
||||
joinRequests: any[];
|
||||
drivers: { id: string; name: string }[];
|
||||
}
|
||||
|
||||
export interface IGetLeagueJoinRequestsPresenter extends Presenter<GetLeagueJoinRequestsResultDTO, GetLeagueJoinRequestsViewModel> {}
|
||||
@@ -0,0 +1,21 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface LeagueMembershipsViewModel {
|
||||
members: {
|
||||
driverId: string;
|
||||
driver: { id: string; name: string };
|
||||
role: string;
|
||||
joinedAt: Date;
|
||||
}[];
|
||||
}
|
||||
|
||||
export interface GetLeagueMembershipsViewModel {
|
||||
memberships: LeagueMembershipsViewModel;
|
||||
}
|
||||
|
||||
export interface GetLeagueMembershipsResultDTO {
|
||||
memberships: any[];
|
||||
drivers: { id: string; name: string }[];
|
||||
}
|
||||
|
||||
export interface IGetLeagueMembershipsPresenter extends Presenter<GetLeagueMembershipsResultDTO, GetLeagueMembershipsViewModel> {}
|
||||
@@ -0,0 +1,17 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface LeagueOwnerSummaryViewModel {
|
||||
driver: { id: string; name: string };
|
||||
rating: number;
|
||||
rank: number;
|
||||
}
|
||||
|
||||
export interface GetLeagueOwnerSummaryViewModel {
|
||||
summary: LeagueOwnerSummaryViewModel | null;
|
||||
}
|
||||
|
||||
export interface GetLeagueOwnerSummaryResultDTO {
|
||||
summary: LeagueOwnerSummaryViewModel | null;
|
||||
}
|
||||
|
||||
export interface IGetLeagueOwnerSummaryPresenter extends Presenter<GetLeagueOwnerSummaryResultDTO, GetLeagueOwnerSummaryViewModel> {}
|
||||
@@ -0,0 +1,15 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface GetLeagueProtestsViewModel {
|
||||
protests: any[];
|
||||
racesById: Record<string, any>;
|
||||
driversById: Record<string, any>;
|
||||
}
|
||||
|
||||
export interface GetLeagueProtestsResultDTO {
|
||||
protests: any[];
|
||||
races: any[];
|
||||
drivers: { id: string; name: string }[];
|
||||
}
|
||||
|
||||
export interface IGetLeagueProtestsPresenter extends Presenter<GetLeagueProtestsResultDTO, GetLeagueProtestsViewModel> {}
|
||||
@@ -0,0 +1,19 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface LeagueScheduleViewModel {
|
||||
races: Array<{
|
||||
id: string;
|
||||
name: string;
|
||||
date: string;
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface GetLeagueScheduleResultDTO {
|
||||
races: Array<{
|
||||
id: string;
|
||||
name: string;
|
||||
scheduledAt: Date;
|
||||
}>;
|
||||
}
|
||||
|
||||
export interface IGetLeagueSchedulePresenter extends Presenter<GetLeagueScheduleResultDTO, LeagueScheduleViewModel> {}
|
||||
@@ -0,0 +1,21 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface LeagueSeasonSummaryViewModel {
|
||||
seasonId: string;
|
||||
name: string;
|
||||
status: string;
|
||||
startDate: Date;
|
||||
endDate: Date;
|
||||
isPrimary: boolean;
|
||||
isParallelActive: boolean;
|
||||
}
|
||||
|
||||
export interface GetLeagueSeasonsViewModel {
|
||||
seasons: LeagueSeasonSummaryViewModel[];
|
||||
}
|
||||
|
||||
export interface GetLeagueSeasonsResultDTO {
|
||||
seasons: any[];
|
||||
}
|
||||
|
||||
export interface IGetLeagueSeasonsPresenter extends Presenter<GetLeagueSeasonsResultDTO, GetLeagueSeasonsViewModel> {}
|
||||
@@ -0,0 +1,11 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface GetTotalLeaguesViewModel {
|
||||
totalLeagues: number;
|
||||
}
|
||||
|
||||
export interface GetTotalLeaguesResultDTO {
|
||||
totalLeagues: number;
|
||||
}
|
||||
|
||||
export interface IGetTotalLeaguesPresenter extends Presenter<GetTotalLeaguesResultDTO, GetTotalLeaguesViewModel> {}
|
||||
@@ -2,24 +2,19 @@ import type { Standing } from '../../domain/entities/Standing';
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface StandingItemViewModel {
|
||||
id: string;
|
||||
leagueId: string;
|
||||
seasonId: string;
|
||||
driverId: string;
|
||||
position: number;
|
||||
driver: { id: string; name: string };
|
||||
points: number;
|
||||
wins: number;
|
||||
podiums: number;
|
||||
racesCompleted: number;
|
||||
rank: number;
|
||||
}
|
||||
|
||||
export interface LeagueStandingsViewModel {
|
||||
leagueId: string;
|
||||
standings: StandingItemViewModel[];
|
||||
}
|
||||
|
||||
export interface LeagueStandingsResultDTO {
|
||||
standings: Standing[];
|
||||
drivers: { id: string; name: string }[];
|
||||
}
|
||||
|
||||
export interface ILeagueStandingsPresenter
|
||||
|
||||
@@ -1,20 +1,16 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface LeagueStatsViewModel {
|
||||
leagueId: string;
|
||||
totalMembers: number;
|
||||
totalRaces: number;
|
||||
completedRaces: number;
|
||||
scheduledRaces: number;
|
||||
averageSOF: number | null;
|
||||
highestSOF: number | null;
|
||||
lowestSOF: number | null;
|
||||
averageRating: number;
|
||||
}
|
||||
|
||||
export interface ILeagueStatsPresenter {
|
||||
present(
|
||||
leagueId: string,
|
||||
totalRaces: number,
|
||||
completedRaces: number,
|
||||
scheduledRaces: number,
|
||||
sofValues: number[]
|
||||
): LeagueStatsViewModel;
|
||||
getViewModel(): LeagueStatsViewModel;
|
||||
}
|
||||
export interface LeagueStatsResultDTO {
|
||||
totalMembers: number;
|
||||
totalRaces: number;
|
||||
averageRating: number;
|
||||
}
|
||||
|
||||
export interface ILeagueStatsPresenter
|
||||
extends Presenter<LeagueStatsResultDTO, LeagueStatsViewModel> {}
|
||||
@@ -0,0 +1,13 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface RejectLeagueJoinRequestViewModel {
|
||||
success: boolean;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface RejectLeagueJoinRequestResultDTO {
|
||||
success: boolean;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface IRejectLeagueJoinRequestPresenter extends Presenter<RejectLeagueJoinRequestResultDTO, RejectLeagueJoinRequestViewModel> {}
|
||||
@@ -0,0 +1,11 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface RemoveLeagueMemberViewModel {
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface RemoveLeagueMemberResultDTO {
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface IRemoveLeagueMemberPresenter extends Presenter<RemoveLeagueMemberResultDTO, RemoveLeagueMemberViewModel> {}
|
||||
13
core/racing/application/presenters/ITotalDriversPresenter.ts
Normal file
13
core/racing/application/presenters/ITotalDriversPresenter.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
export interface TotalDriversViewModel {
|
||||
totalDrivers: number;
|
||||
}
|
||||
|
||||
export interface TotalDriversResultDTO {
|
||||
totalDrivers: number;
|
||||
}
|
||||
|
||||
export interface ITotalDriversPresenter {
|
||||
present(dto: TotalDriversResultDTO): void;
|
||||
get viewModel(): TotalDriversViewModel;
|
||||
reset(): void;
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import type { Presenter } from '@gridpilot/shared/presentation/Presenter';
|
||||
|
||||
export interface UpdateLeagueMemberRoleViewModel {
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface UpdateLeagueMemberRoleResultDTO {
|
||||
success: boolean;
|
||||
}
|
||||
|
||||
export interface IUpdateLeagueMemberRolePresenter extends Presenter<UpdateLeagueMemberRoleResultDTO, UpdateLeagueMemberRoleViewModel> {}
|
||||
Reference in New Issue
Block a user