import PlayerStorage from './PlayerStorage.js'; import TeamStorage from './TeamStorage.js'; import TournamentStorage from './TournamentStorage.js'; export default class Store { constructor() { this.playerStorage = new PlayerStorage(); this.teamStorage = new TeamStorage(this.playerStorage); this.tournamentStorage = new TournamentStorage(); this.currentEditingPlayerId = null; } getPlayerDatabase() { return this.playerStorage.getPlayerDatabase(); } getTeamDatabase() { return this.teamStorage.getTeamDatabase(); } getTournamentDatabase() { return this.tournamentStorage.getTournamentDatabase(); } addPlayer(player) { this.playerStorage.addPlayer(player); } editPlayer(updatedPlayer) { this.playerStorage.editPlayer(updatedPlayer); if (updatedPlayer.teamId) { const team = this.teamStorage.getTeamDatabase().find(t => t.id === updatedPlayer.teamId); if (team && !team.playerIds.includes(updatedPlayer.id)) { team.playerIds.push(updatedPlayer.id); this.teamStorage.editTeam(team.id, team); } } } deletePlayer(playerId) { const player = this.playerStorage.getPlayerDatabase().find(p => p.id === playerId); if (player && player.teamId) { const team = this.teamStorage.getTeamDatabase().find(t => t.id === player.teamId); if (team) { team.playerIds = team.playerIds.filter(pid => pid !== playerId); if (team.captainId === playerId) { team.captainId = null; } this.teamStorage.editTeam(team.id, team); } } this.playerStorage.deletePlayer(playerId); } addTeam(team) { this.teamStorage.addTeam(team); } editTeam(teamId, teamData) { this.teamStorage.editTeam(teamId, teamData); } deleteTeam(teamId) { this.tournamentStorage.getTournamentDatabase().forEach(tournament => { if (tournament.checkedInTeams.includes(teamId)) { tournament.checkedInTeams = tournament.checkedInTeams.filter(tid => tid !== teamId); this.tournamentStorage.editTournament(tournament.id, tournament); } }); this.teamStorage.deleteTeam(teamId); } addTournament(tournament) { this.tournamentStorage.addTournament(tournament); } editTournament(tournamentId, updatedTournament) { this.tournamentStorage.editTournament(tournamentId, updatedTournament); } deleteTournament(tournamentId) { this.teamStorage.getTeamDatabase().forEach(team => { if (team.checkedInTournaments.includes(tournamentId)) { team.checkedInTournaments = team.checkedInTournaments.filter(tid => tid !== tournamentId); this.teamStorage.editTeam(team.id, team); } }); this.tournamentStorage.deleteTournament(tournamentId); } generateTournamentId() { return this.tournamentStorage.generateTournamentId(); } testLocalStorage() { console.log('Testing localStorage'); try { const testData = { test: 'test' }; localStorage.setItem('testKey', JSON.stringify(testData)); const retrieved = localStorage.getItem('testKey'); console.log('Test data saved and retrieved:', retrieved); localStorage.removeItem('testKey'); } catch (error) { console.error('localStorage test failed:', error); } } }