diff --git a/package-lock.json b/package-lock.json index ce42b1efb531ab17de2f16ab7c76349893a398af..01d2eb7272357854133cd7fe3325d9234a86c4cb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3125,8 +3125,7 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "aproba": { "version": "1.2.0", @@ -3528,8 +3527,7 @@ "safe-buffer": { "version": "5.1.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -3584,7 +3582,6 @@ "version": "3.0.1", "bundled": true, "dev": true, - "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -3628,14 +3625,12 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "yallist": { "version": "3.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true } } }, diff --git a/src/faction/faction.service.ts b/src/faction/faction.service.ts index 5c989b5b213ce82534b4f305d4a4f7989a0e2362..de1472e4a31e3bfc9df865204556eccd71c25e85 100644 --- a/src/faction/faction.service.ts +++ b/src/faction/faction.service.ts @@ -132,33 +132,60 @@ export class FactionService { // get the groups in the given Faction async showGroups(factionId) { + let players = await this.game_PersonRepository.find({ + where: { faction: factionId }, + relations: ['person', 'group'], + }); + let groups = await this.game_GroupRepository.find({ where: { faction: factionId }, - relations: ['leader', 'leader.person', 'players', 'players.person'], + relations: ['leader', 'leader.person'], }); - let players = await Promise.all( + let resObj = await Promise.all( groups.map(async group => { - let groupPlayers = await Promise.all( - group.players.map(async player => { - return await { - gamepersonId: player.gamepersonId, - role: player.role, - name: player.person.name, - }; - }), - ); return await { id: group.id, name: group.name, class: group.class, - players: groupPlayers, leader: group.leader.person.name, + players: [], }; }), ); - return players; + resObj.push({ + id: 'empty-group-id', + name: 'No group', + class: 'infantry', + leader: '', + players: [], + }); + + await Promise.all( + players.map(async player => { + for (let i = 0; i < resObj.length; i++) { + if (player.group == null) { + resObj[resObj.length - 1].players.push({ + gamepersonId: player.gamepersonId, + role: player.role, + name: player.person.name, + }); + break; + } + if (resObj[i].name == player.group.name) { + resObj[i].players.push({ + gamepersonId: player.gamepersonId, + role: player.role, + name: player.person.name, + }); + break; + } + } + }), + ); + + return resObj; } // puts a non admin or faction leader player into a specified group