StatisticsView erstellen #30
@@ -88,13 +88,12 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"winner": {
|
"winner": {
|
||||||
"type": ["string","null"]
|
"type": ["object","null"]
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
"id",
|
"id",
|
||||||
"createdAt",
|
"createdAt",
|
||||||
"name",
|
"name"
|
||||||
"winner"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -20,13 +20,16 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
result.map((row) async {
|
result.map((row) async {
|
||||||
final group = await db.groupGameDao.getGroupOfGame(gameId: row.id);
|
final group = await db.groupGameDao.getGroupOfGame(gameId: row.id);
|
||||||
final players = await db.playerGameDao.getPlayersOfGame(gameId: row.id);
|
final players = await db.playerGameDao.getPlayersOfGame(gameId: row.id);
|
||||||
|
final winner = row.winnerId != null
|
||||||
|
? await db.playerDao.getPlayerById(playerId: row.winnerId!)
|
||||||
|
: null;
|
||||||
return Game(
|
return Game(
|
||||||
id: row.id,
|
id: row.id,
|
||||||
name: row.name,
|
name: row.name,
|
||||||
group: group,
|
group: group,
|
||||||
players: players,
|
players: players,
|
||||||
createdAt: row.createdAt,
|
createdAt: row.createdAt,
|
||||||
winner: row.winnerId,
|
winner: winner,
|
||||||
);
|
);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@@ -45,13 +48,17 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
if (await db.groupGameDao.gameHasGroup(gameId: gameId)) {
|
if (await db.groupGameDao.gameHasGroup(gameId: gameId)) {
|
||||||
group = await db.groupGameDao.getGroupOfGame(gameId: gameId);
|
group = await db.groupGameDao.getGroupOfGame(gameId: gameId);
|
||||||
}
|
}
|
||||||
|
Player? winner;
|
||||||
|
if (result.winnerId != null) {
|
||||||
|
winner = await db.playerDao.getPlayerById(playerId: result.winnerId!);
|
||||||
|
}
|
||||||
|
|
||||||
return Game(
|
return Game(
|
||||||
id: result.id,
|
id: result.id,
|
||||||
name: result.name,
|
name: result.name,
|
||||||
players: players,
|
players: players,
|
||||||
group: group,
|
group: group,
|
||||||
winner: result.winnerId,
|
winner: winner,
|
||||||
createdAt: result.createdAt,
|
createdAt: result.createdAt,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -64,7 +71,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
GameTableCompanion.insert(
|
GameTableCompanion.insert(
|
||||||
id: game.id,
|
id: game.id,
|
||||||
name: game.name,
|
name: game.name,
|
||||||
winnerId: Value(game.winner),
|
winnerId: Value(game.winner?.id),
|
||||||
createdAt: game.createdAt,
|
createdAt: game.createdAt,
|
||||||
),
|
),
|
||||||
mode: InsertMode.insertOrReplace,
|
mode: InsertMode.insertOrReplace,
|
||||||
@@ -100,7 +107,7 @@ class GameDao extends DatabaseAccessor<AppDatabase> with _$GameDaoMixin {
|
|||||||
id: game.id,
|
id: game.id,
|
||||||
name: game.name,
|
name: game.name,
|
||||||
createdAt: game.createdAt,
|
createdAt: game.createdAt,
|
||||||
winnerId: Value(game.winner),
|
winnerId: Value(game.winner?.id),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.toList(),
|
.toList(),
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class Game {
|
|||||||
final String name;
|
final String name;
|
||||||
final List<Player>? players;
|
final List<Player>? players;
|
||||||
final Group? group;
|
final Group? group;
|
||||||
final String? winner;
|
final Player? winner;
|
||||||
|
|
||||||
Game({
|
Game({
|
||||||
String? id,
|
String? id,
|
||||||
@@ -17,7 +17,7 @@ class Game {
|
|||||||
required this.name,
|
required this.name,
|
||||||
this.players,
|
this.players,
|
||||||
this.group,
|
this.group,
|
||||||
this.winner = '',
|
this.winner,
|
||||||
}) : id = id ?? const Uuid().v4(),
|
}) : id = id ?? const Uuid().v4(),
|
||||||
createdAt = createdAt ?? clock.now();
|
createdAt = createdAt ?? clock.now();
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ class Game {
|
|||||||
.toList()
|
.toList()
|
||||||
: null,
|
: null,
|
||||||
group = json['group'] != null ? Group.fromJson(json['group']) : null,
|
group = json['group'] != null ? Group.fromJson(json['group']) : null,
|
||||||
winner = json['winner'] ?? '';
|
winner = json['winner'] != null ? Player.fromJson(json['winner']) : null;
|
||||||
|
|
||||||
/// Converts the Game instance to a JSON object.
|
/// Converts the Game instance to a JSON object.
|
||||||
Map<String, dynamic> toJson() => {
|
Map<String, dynamic> toJson() => {
|
||||||
@@ -46,6 +46,6 @@ class Game {
|
|||||||
'name': name,
|
'name': name,
|
||||||
'players': players?.map((player) => player.toJson()).toList(),
|
'players': players?.map((player) => player.toJson()).toList(),
|
||||||
'group': group?.toJson(),
|
'group': group?.toJson(),
|
||||||
'winner': winner,
|
'winner': winner?.toJson(),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,14 +127,14 @@ class _StatisticsViewState extends State<StatisticsView> {
|
|||||||
// Getting the winners
|
// Getting the winners
|
||||||
for (var game in games) {
|
for (var game in games) {
|
||||||
final winner = game.winner;
|
final winner = game.winner;
|
||||||
if (winner != null && winner.isNotEmpty) {
|
if (winner != null) {
|
||||||
final index = winCounts.indexWhere((entry) => entry.$1 == winner);
|
final index = winCounts.indexWhere((entry) => entry.$1 == winner.id);
|
||||||
// -1 means winner not found in winCounts
|
// -1 means winner not found in winCounts
|
||||||
|
sneeex marked this conversation as resolved
Outdated
|
|||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
final current = winCounts[index].$2;
|
final current = winCounts[index].$2;
|
||||||
winCounts[index] = (winner, current + 1);
|
winCounts[index] = (winner.id, current + 1);
|
||||||
} else {
|
} else {
|
||||||
winCounts.add((winner, 1));
|
winCounts.add((winner.id, 1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,15 +50,18 @@ void main() {
|
|||||||
name: 'First Test Game',
|
name: 'First Test Game',
|
||||||
group: testGroup1,
|
group: testGroup1,
|
||||||
players: [testPlayer4, testPlayer5],
|
players: [testPlayer4, testPlayer5],
|
||||||
|
winner: testPlayer4,
|
||||||
);
|
);
|
||||||
testGame2 = Game(
|
testGame2 = Game(
|
||||||
name: 'Second Test Game',
|
name: 'Second Test Game',
|
||||||
group: testGroup2,
|
group: testGroup2,
|
||||||
players: [testPlayer1, testPlayer2, testPlayer3],
|
players: [testPlayer1, testPlayer2, testPlayer3],
|
||||||
|
winner: testPlayer2,
|
||||||
);
|
);
|
||||||
testGameOnlyPlayers = Game(
|
testGameOnlyPlayers = Game(
|
||||||
name: 'Test Game with Players',
|
name: 'Test Game with Players',
|
||||||
players: [testPlayer1, testPlayer2, testPlayer3],
|
players: [testPlayer1, testPlayer2, testPlayer3],
|
||||||
|
winner: testPlayer3,
|
||||||
);
|
);
|
||||||
testGameOnlyGroup = Game(name: 'Test Game with Group', group: testGroup2);
|
testGameOnlyGroup = Game(name: 'Test Game with Group', group: testGroup2);
|
||||||
});
|
});
|
||||||
@@ -75,9 +78,16 @@ void main() {
|
|||||||
|
|
||||||
expect(result.id, testGame1.id);
|
expect(result.id, testGame1.id);
|
||||||
expect(result.name, testGame1.name);
|
expect(result.name, testGame1.name);
|
||||||
expect(result.winner, testGame1.winner);
|
|
||||||
expect(result.createdAt, testGame1.createdAt);
|
expect(result.createdAt, testGame1.createdAt);
|
||||||
|
|
||||||
|
if (result.winner != null && testGame1.winner != null) {
|
||||||
|
expect(result.winner!.id, testGame1.winner!.id);
|
||||||
|
expect(result.winner!.name, testGame1.winner!.name);
|
||||||
|
expect(result.winner!.createdAt, testGame1.winner!.createdAt);
|
||||||
|
} else {
|
||||||
|
expect(result.winner, testGame1.winner);
|
||||||
|
}
|
||||||
|
|
||||||
if (result.group != null) {
|
if (result.group != null) {
|
||||||
expect(result.group!.members.length, testGroup1.members.length);
|
expect(result.group!.members.length, testGroup1.members.length);
|
||||||
|
|
||||||
@@ -123,7 +133,13 @@ void main() {
|
|||||||
expect(game.id, testGame.id);
|
expect(game.id, testGame.id);
|
||||||
expect(game.name, testGame.name);
|
expect(game.name, testGame.name);
|
||||||
expect(game.createdAt, testGame.createdAt);
|
expect(game.createdAt, testGame.createdAt);
|
||||||
expect(game.winner, testGame.winner);
|
if (game.winner != null && testGame.winner != null) {
|
||||||
|
expect(game.winner!.id, testGame.winner!.id);
|
||||||
|
expect(game.winner!.name, testGame.winner!.name);
|
||||||
|
expect(game.winner!.createdAt, testGame.winner!.createdAt);
|
||||||
|
} else {
|
||||||
|
expect(game.winner, testGame.winner);
|
||||||
|
}
|
||||||
|
|
||||||
// Group-Checks
|
// Group-Checks
|
||||||
if (testGame.group != null) {
|
if (testGame.group != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user
maybe comment, dass -1 heißt nicht gefunden, war mir jetzt nicht klar.
Falls du's machst, natürlich bei allen
Habs jetzt mal für euch hinzugefügt, weil ihr ja beide relativ neu seid, ist halt aber einfach der return Wert dieser Funktion. Können es dann bei Zeiten wieder entfernen