free agents
This commit is contained in:
@@ -105,13 +105,11 @@ export function createPlayersService(pb: PocketBase) {
|
||||
|
||||
async getUnenrolledPlayers(tournamentId: string): Promise<Player[]> {
|
||||
try {
|
||||
// Get the tournament with its enrolled teams
|
||||
const tournament = await pb.collection("tournaments").getOne(tournamentId, {
|
||||
fields: "teams",
|
||||
expand: "teams,teams.players"
|
||||
});
|
||||
|
||||
// Extract player IDs from all enrolled teams
|
||||
const enrolledPlayerIds: string[] = [];
|
||||
if (tournament.expand?.teams) {
|
||||
const teams = Array.isArray(tournament.expand.teams) ? tournament.expand.teams : [tournament.expand.teams];
|
||||
@@ -125,7 +123,6 @@ export function createPlayersService(pb: PocketBase) {
|
||||
});
|
||||
}
|
||||
|
||||
// If no players are enrolled, return all players
|
||||
if (enrolledPlayerIds.length === 0) {
|
||||
const allPlayers = await pb.collection("players").getFullList<Player>({
|
||||
fields: "id,first_name,last_name,email",
|
||||
@@ -133,7 +130,6 @@ export function createPlayersService(pb: PocketBase) {
|
||||
return allPlayers.map(transformPlayer);
|
||||
}
|
||||
|
||||
// Build filter to exclude enrolled players
|
||||
const filter = enrolledPlayerIds
|
||||
.map((playerId: string) => `id != "${playerId}"`)
|
||||
.join(" && ");
|
||||
@@ -146,7 +142,6 @@ export function createPlayersService(pb: PocketBase) {
|
||||
return availablePlayers.map(transformPlayer);
|
||||
} catch (error) {
|
||||
console.error("Error getting unenrolled players:", error);
|
||||
// Fallback to all players if there's an error
|
||||
const allPlayers = await pb.collection("players").getFullList<Player>({
|
||||
fields: "id,first_name,last_name,email",
|
||||
});
|
||||
|
||||
@@ -7,8 +7,10 @@ import type {
|
||||
} from "@/features/tournaments/types";
|
||||
import type { Team } from "@/features/teams/types";
|
||||
import PocketBase from "pocketbase";
|
||||
import { transformTournament, transformTournamentInfo } from "@/lib/pocketbase/util/transform-types";
|
||||
import { transformFreeAgent, transformTournament, transformTournamentInfo } from "@/lib/pocketbase/util/transform-types";
|
||||
import { transformTeam } from "@/lib/pocketbase/util/transform-types";
|
||||
import { getFreeAgents } from "@/features/tournaments/server";
|
||||
import { PlayerInfo } from "@/features/players/types";
|
||||
|
||||
export function createTournamentsService(pb: PocketBase) {
|
||||
return {
|
||||
@@ -133,5 +135,33 @@ export function createTournamentsService(pb: PocketBase) {
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
async enrollFreeAgent(playerId: string, phone: string, tournamentId: string): Promise<void> {
|
||||
await pb.collection("free_agents").create({
|
||||
tournament: tournamentId,
|
||||
player: playerId,
|
||||
phone: phone
|
||||
});
|
||||
},
|
||||
|
||||
async unenrollFreeAgent(playerId: string, tournamentId: string): Promise<void> {
|
||||
const result = await pb.collection("free_agents").getFirstListItem(
|
||||
`player = "${playerId}" && tournament = "${tournamentId}"`
|
||||
);
|
||||
await pb.collection("free_agents").delete(result.id);
|
||||
},
|
||||
async getFreeAgents(tournamentId: string): Promise<{ id: string, phone: string, player: PlayerInfo | undefined }[]> {
|
||||
try {
|
||||
const free_agents = await pb
|
||||
.collection("free_agents")
|
||||
.getFullList({ filter: `tournament = "${tournamentId}"`,
|
||||
expand: 'player'
|
||||
});
|
||||
|
||||
return free_agents.map(transformFreeAgent);
|
||||
} catch (error) {
|
||||
logger.error("PocketBase | Error getting unenrolled teams", error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -85,6 +85,22 @@ export function transformPlayer(record: any): Player {
|
||||
};
|
||||
}
|
||||
|
||||
export function transformFreeAgent(record: any) {
|
||||
const player = record.expand?.player ? transformPlayerInfo(record.expand.player) : undefined;
|
||||
const tournaments =
|
||||
record.expand?.tournaments
|
||||
?.sort((a: any, b: any) =>
|
||||
new Date(a.created!) < new Date(b.created!) ? -1 : 0
|
||||
)
|
||||
?.map(transformTournamentInfo) ?? [];
|
||||
|
||||
return {
|
||||
id: record.id as string,
|
||||
phone: record.phone as string,
|
||||
player
|
||||
};
|
||||
}
|
||||
|
||||
export function transformTeam(record: any): Team {
|
||||
const players =
|
||||
record.expand?.players
|
||||
|
||||
Reference in New Issue
Block a user