jp.ms.common.modules 1.0.43 → 1.0.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/common/rooms-manager.service.d.ts +61 -0
  2. package/dist/common/rooms-manager.service.js +148 -0
  3. package/dist/common/rooms-manager.service.js.map +1 -0
  4. package/dist/common/tournament-rooms-manager.service.d.ts +10 -0
  5. package/dist/common/tournament-rooms-manager.service.js +66 -0
  6. package/dist/common/tournament-rooms-manager.service.js.map +1 -0
  7. package/dist/dto/games/fool/fool-table.dto.d.ts +0 -1
  8. package/dist/dto/games/fool/fool-table.dto.js +0 -10
  9. package/dist/dto/games/fool/fool-table.dto.js.map +1 -1
  10. package/dist/exception/global-exception-filter.d.ts +2 -0
  11. package/dist/exception/global-exception-filter.js +23 -17
  12. package/dist/exception/global-exception-filter.js.map +1 -1
  13. package/dist/modules/anti-freeze-system/anti-freeze-system.service.d.ts +3 -0
  14. package/dist/modules/anti-freeze-system/anti-freeze-system.service.js +33 -23
  15. package/dist/modules/anti-freeze-system/anti-freeze-system.service.js.map +1 -1
  16. package/dist/modules/base-achievements/base-achievements.constants.d.ts +1 -0
  17. package/dist/modules/base-achievements/base-achievements.constants.js +5 -0
  18. package/dist/modules/base-achievements/base-achievements.constants.js.map +1 -0
  19. package/dist/modules/base-achievements/base-achievements.interfaces.d.ts +15 -0
  20. package/dist/modules/base-achievements/base-achievements.interfaces.js +3 -0
  21. package/dist/modules/base-achievements/base-achievements.interfaces.js.map +1 -0
  22. package/dist/modules/base-achievements/base-achievements.module.d.ts +29 -7
  23. package/dist/modules/base-achievements/base-achievements.module.js +166 -76
  24. package/dist/modules/base-achievements/base-achievements.module.js.map +1 -1
  25. package/dist/modules/base-achievements/index.d.ts +2 -0
  26. package/dist/modules/base-achievements/index.js +3 -1
  27. package/dist/modules/base-achievements/index.js.map +1 -1
  28. package/dist/modules/event-bus/events-bus.app.subscribe.service.d.ts +3 -3
  29. package/dist/modules/event-bus/events-bus.app.subscribe.service.js.map +1 -1
  30. package/dist/modules/index.d.ts +1 -1
  31. package/dist/modules/index.js +4 -3
  32. package/dist/modules/index.js.map +1 -1
  33. package/dist/modules/main/main.service.js +8 -6
  34. package/dist/modules/main/main.service.js.map +1 -1
  35. package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js +1 -1
  36. package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js.map +1 -1
  37. package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.d.ts +1 -0
  38. package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.js +4 -0
  39. package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.js.map +1 -1
  40. package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.d.ts +7 -5
  41. package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.js +58 -38
  42. package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.js.map +1 -1
  43. package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.d.ts +1 -0
  44. package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.js +4 -0
  45. package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.js.map +1 -1
  46. package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.d.ts +7 -5
  47. package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.js +55 -35
  48. package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.js.map +1 -1
  49. package/dist/modules/simple-rooms-manager/simple-rooms-manager.interfaces.d.ts +1 -0
  50. package/dist/modules/simple-rooms-manager/simple-rooms-manager.module.js +4 -0
  51. package/dist/modules/simple-rooms-manager/simple-rooms-manager.module.js.map +1 -1
  52. package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.d.ts +7 -5
  53. package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js +53 -20
  54. package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js.map +1 -1
  55. package/dist/tsconfig.tsbuildinfo +1 -1
  56. package/dist/views/achievement-snackbar.view.d.ts +8 -0
  57. package/dist/views/achievement-snackbar.view.js +26 -0
  58. package/dist/views/achievement-snackbar.view.js.map +1 -0
  59. package/dist/views/base-table.view.d.ts +13 -0
  60. package/dist/views/base-table.view.js +34 -0
  61. package/dist/views/base-table.view.js.map +1 -0
  62. package/dist/views/index.d.ts +3 -0
  63. package/dist/views/index.js +7 -1
  64. package/dist/views/index.js.map +1 -1
  65. package/dist/views/level-up-snackbar.view.d.ts +7 -0
  66. package/dist/views/level-up-snackbar.view.js +26 -0
  67. package/dist/views/level-up-snackbar.view.js.map +1 -0
  68. package/package.json +5 -5
  69. package/src/common/rooms-manager.service.ts +250 -0
  70. package/src/common/tournament-rooms-manager.service.ts +121 -0
  71. package/src/dto/games/fool/fool-table.dto.ts +0 -8
  72. package/src/exception/global-exception-filter.ts +34 -20
  73. package/src/modules/anti-freeze-system/anti-freeze-system.service.ts +48 -35
  74. package/src/modules/base-achievements/base-achievements.constants.ts +1 -0
  75. package/src/modules/base-achievements/base-achievements.interfaces.ts +22 -0
  76. package/src/modules/base-achievements/base-achievements.module.ts +347 -234
  77. package/src/modules/base-achievements/index.ts +5 -0
  78. package/src/modules/event-bus/events-bus.app.subscribe.service.ts +5 -5
  79. package/src/modules/index.ts +6 -1
  80. package/src/modules/main/main.service.ts +7 -5
  81. package/src/modules/many-tables-tournament/many-tables-tournament.controller.ts +1 -1
  82. package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.ts +1 -0
  83. package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.ts +7 -0
  84. package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.ts +89 -41
  85. package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.ts +1 -0
  86. package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.ts +7 -0
  87. package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.ts +89 -40
  88. package/src/modules/simple-rooms-manager/simple-rooms-manager.interfaces.ts +1 -0
  89. package/src/modules/simple-rooms-manager/simple-rooms-manager.module.ts +7 -0
  90. package/src/modules/simple-rooms-manager/simple-rooms-manager.service.ts +79 -33
  91. package/src/views/achievement-snackbar.view.ts +38 -0
  92. package/src/views/base-table.view.ts +57 -0
  93. package/src/views/index.ts +3 -0
  94. package/src/views/level-up-snackbar.view.ts +38 -0
  95. package/dist/utils/date.d.ts +0 -2
  96. package/dist/utils/date.js +0 -11
  97. package/dist/utils/date.js.map +0 -1
  98. package/dist/utils/game-table-result.d.ts +0 -40
  99. package/dist/utils/game-table-result.js +0 -152
  100. package/dist/utils/game-table-result.js.map +0 -1
  101. package/src/utils/date.ts +0 -7
  102. package/src/utils/game-table-result.ts +0 -190
@@ -8,13 +8,14 @@ import {
8
8
  SimpleRoom,
9
9
  GameRoomConfig,
10
10
  RoomUpdateStateEvent,
11
- UserWonTheGameAppEvent,
12
11
  GameTableFinishedEvent,
13
12
  GamePlayerEnteredTheTableEvent,
14
13
  GamePlayerExitedTheTableEvent,
15
14
  LocalService,
15
+ GamePlayerMovedOnTheTableEvent,
16
16
  } from 'jp.ms.common.engine';
17
17
  import {
18
+ ActivityLogRepository,
18
19
  GameResultRepository,
19
20
  RatingRepository,
20
21
  SimpleRoomDocument,
@@ -23,15 +24,17 @@ import {
23
24
  } from 'jp.db.schemas';
24
25
 
25
26
  import { JpLoggerService } from '../logger/jp-logger.service';
26
- import { saveGameTablesResultForSimpleRoom } from '../../utils/game-table-result';
27
- import { EventsBusMainTablesSubscribeService } from '../event-bus/events-bus.main-tables.subscribe.service';
28
- import { EventsBusAppSubscribeService } from '../event-bus/events-bus.app.subscribe.service';
27
+ import {
28
+ EventsBusMainTablesSubscribeService,
29
+ EventsBusAppSubscribeService,
30
+ } from '../event-bus';
31
+ import { RoomsManagerService } from '../../common/rooms-manager.service';
29
32
 
30
33
  import { SIMPLE_ROOMS_MANAGER_OPTIONS } from './simple-rooms-manager.constants';
31
34
  import { SimpleRoomsFactoryOptions } from './simple-rooms-manager.interfaces';
32
35
 
33
36
  @Injectable()
34
- export class SimpleRoomsManagerService {
37
+ export class SimpleRoomsManagerService extends RoomsManagerService {
35
38
  private readonly rooms: Map<string, SimpleRoom>;
36
39
 
37
40
  constructor(
@@ -39,6 +42,7 @@ export class SimpleRoomsManagerService {
39
42
  private readonly usersRepository: UsersRepository,
40
43
  private readonly gameResultRepository: GameResultRepository,
41
44
  private readonly ratingRepository: RatingRepository,
45
+ private readonly activityLogRepository: ActivityLogRepository,
42
46
  private readonly eventsBusMainTablesSubscribeService: EventsBusMainTablesSubscribeService,
43
47
  private readonly eventsBusAppSubscribeService: EventsBusAppSubscribeService,
44
48
  @Inject(SIMPLE_ROOMS_MANAGER_OPTIONS)
@@ -46,6 +50,7 @@ export class SimpleRoomsManagerService {
46
50
  @InjectConnection() private readonly connection: Connection,
47
51
  @Inject() private readonly logger: JpLoggerService,
48
52
  ) {
53
+ super();
49
54
  this.rooms = new Map<string, SimpleRoom>();
50
55
  }
51
56
 
@@ -89,11 +94,11 @@ export class SimpleRoomsManagerService {
89
94
  }
90
95
 
91
96
  /*
92
- 1. Сначала ищем стол в котором один игрок
93
- 2. Далее ищем стол за которым есть игроки и свободные места
94
- 3. Отправляем на стол для быстрой игры если там есть места
95
- 4. Наконец создаем стол для быстрой игры и отправляем туда
96
- */
97
+ 1. Сначала ищем стол в котором один игрок
98
+ 2. Далее ищем стол за которым есть игроки и свободные места
99
+ 3. Отправляем на стол для быстрой игры если там есть места
100
+ 4. Наконец создаем стол для быстрой игры и отправляем туда
101
+ */
97
102
  getFreeFastGameRoom(): GameMaster | undefined {
98
103
  if (this.getRooms().some((item) => item.isTechBreak())) {
99
104
  return;
@@ -141,6 +146,7 @@ export class SimpleRoomsManagerService {
141
146
  rulesType: room.rulesType,
142
147
  deckType: room.deckType,
143
148
  tableSize: room.tableSize,
149
+ tableType: room.tableType,
144
150
  bet: room.bet,
145
151
  ticketPrice: room.ticketPrice / 2,
146
152
  title: room.title,
@@ -159,34 +165,74 @@ export class SimpleRoomsManagerService {
159
165
  private handleRoomEvent = (event: BaseGameEvent) => {
160
166
  this.logger.log(event.toLog());
161
167
 
162
- if (event instanceof GameTableFinishedEvent) {
163
- void this.handleRoomTableGameFinished(event.master);
164
- } else if (
165
- event instanceof GamePlayerEnteredTheTableEvent ||
166
- event instanceof GamePlayerExitedTheTableEvent
167
- ) {
168
- this.handleRoomStatusUpdated(
169
- new RoomUpdateStateEvent(event.gameType, event.roomId),
170
- );
168
+ switch (event.constructor.name) {
169
+ case GameTableFinishedEvent.name: {
170
+ void this.handleRoomTableGameFinished(event as GameTableFinishedEvent);
171
+ break;
172
+ }
173
+ case GamePlayerMovedOnTheTableEvent.name: {
174
+ this.handleRoomTableGamePlayerMoved(
175
+ event as GamePlayerMovedOnTheTableEvent,
176
+ this.eventsBusAppSubscribeService,
177
+ );
178
+ break;
179
+ }
180
+ case GamePlayerEnteredTheTableEvent.name:
181
+ case GamePlayerExitedTheTableEvent.name: {
182
+ this.handleRoomStatusUpdated(
183
+ event as
184
+ GamePlayerExitedTheTableEvent | GamePlayerEnteredTheTableEvent,
185
+ );
186
+ break;
187
+ }
171
188
  }
172
189
  };
173
190
 
174
- private handleRoomTableGameFinished = async (master: GameMaster) => {
175
- await saveGameTablesResultForSimpleRoom(
176
- master,
177
- this.connection,
178
- this.gameResultRepository,
179
- this.usersRepository,
180
- this.ratingRepository,
181
- );
191
+ private handleRoomTableGameFinished = async (
192
+ event: GameTableFinishedEvent,
193
+ ) => {
194
+ await this.saveGameTableReuslts(event);
195
+ this.processGameFinishEvent(event, this.eventsBusAppSubscribeService);
196
+ };
182
197
 
183
- // TODO: записать разные события для достижений
184
- this.eventsBusAppSubscribeService.pushNewEvent(
185
- new UserWonTheGameAppEvent(this.gameType, '123'),
198
+ private handleRoomStatusUpdated = (
199
+ event: GamePlayerEnteredTheTableEvent | GamePlayerExitedTheTableEvent,
200
+ ) => {
201
+ this.eventsBusMainTablesSubscribeService.pushNewRoomState(
202
+ new RoomUpdateStateEvent(event.gameType, event.roomId),
186
203
  );
187
204
  };
188
205
 
189
- private handleRoomStatusUpdated = (event: RoomUpdateStateEvent) => {
190
- this.eventsBusMainTablesSubscribeService.pushNewRoomState(event);
191
- };
206
+ private async saveGameTableReuslts(event: GameTableFinishedEvent) {
207
+ const session = await this.connection.startSession();
208
+ session.startTransaction();
209
+ const master = event.master;
210
+
211
+ try {
212
+ await this.gameResultRepository.createGameResult(
213
+ this.getGameTableResults(master),
214
+ );
215
+ const userGameResults = this.getUserGameResults(master, false);
216
+ await this.usersRepository.saveGameResult(userGameResults);
217
+ await this.ratingRepository.addBulkPlayerRating(
218
+ this.getUserRatings(master),
219
+ );
220
+ await this.activityLogRepository.addGameTableResult(
221
+ this.getGameTableActivityLogResult(master),
222
+ );
223
+ this.commitExperience(
224
+ master,
225
+ userGameResults,
226
+ event,
227
+ this.eventsBusAppSubscribeService,
228
+ this.options.levelUpBonus,
229
+ );
230
+ await session.commitTransaction();
231
+ } catch (error) {
232
+ await session.abortTransaction();
233
+ throw error;
234
+ } finally {
235
+ await session.endSession();
236
+ }
237
+ }
192
238
  }
@@ -0,0 +1,38 @@
1
+ import { randomUUID } from 'crypto';
2
+ import {
3
+ AppScreenSnackbarIdEnum,
4
+ ILocaleService,
5
+ AchievementSnackbarComponent,
6
+ UniversalScreenSnackbarView,
7
+ } from 'jp.common.models';
8
+ import { formatChips } from 'jp.common.utils';
9
+ import { Achievement } from 'jp.db.schemas';
10
+
11
+ export class AchievementSnackbarView extends UniversalScreenSnackbarView {
12
+ private achievement: Achievement;
13
+ private bonus: number;
14
+
15
+ constructor(
16
+ localeService: ILocaleService,
17
+ lang: string,
18
+ achievement: Achievement,
19
+ bonus: number,
20
+ ) {
21
+ super(localeService, lang);
22
+ this.achievement = achievement;
23
+ this.bonus = bonus;
24
+ }
25
+
26
+ build() {
27
+ return new AchievementSnackbarComponent(
28
+ `${AppScreenSnackbarIdEnum.SNACKBAR_ACHIEVEMENT}_${randomUUID()}`,
29
+ this.localeService.t('common.server.message.code.4011', {
30
+ lang: this.lang,
31
+ args: {
32
+ TITLE: this.getDbResource(this.achievement.title),
33
+ PRIZE: formatChips(this.bonus, this.lang, true),
34
+ },
35
+ }),
36
+ );
37
+ }
38
+ }
@@ -0,0 +1,57 @@
1
+ import {
2
+ IAppScreenDialog,
3
+ ILocaleService,
4
+ UniversalView,
5
+ } from 'jp.common.models';
6
+ import { GameMaster, GamePlayer } from 'jp.ms.common.engine';
7
+
8
+ export abstract class BaseTableView extends UniversalView {
9
+ abstract getConfirmExitDialog(): IAppScreenDialog | undefined;
10
+
11
+ protected ROUND_TABLE_TARGET_SEAT_MAPPING: Record<number, number> = {
12
+ 2: 1,
13
+ 3: 2,
14
+ 4: 2,
15
+ 5: 2,
16
+ 6: 3,
17
+ };
18
+
19
+ protected readonly gameMaster: GameMaster;
20
+ protected readonly gamePlayer: GamePlayer;
21
+
22
+ constructor(
23
+ localeService: ILocaleService,
24
+ lang: string,
25
+ gameMaster: GameMaster,
26
+ gamePlayer: GamePlayer,
27
+ ) {
28
+ super(localeService, lang);
29
+ this.gameMaster = gameMaster;
30
+ this.gamePlayer = gamePlayer;
31
+ }
32
+
33
+ protected getGameMaster<T extends GameMaster>(): T {
34
+ return this.gameMaster as T;
35
+ }
36
+
37
+ protected getGamePlayer<T extends GamePlayer>(): T {
38
+ return this.gamePlayer as T;
39
+ }
40
+
41
+ protected getSeatShift(): number {
42
+ return (
43
+ this.gameMaster.table.seats.getShift(
44
+ this.gamePlayer.seatNumber,
45
+ this.getTargetSeat(),
46
+ ) ?? 0
47
+ );
48
+ }
49
+
50
+ protected getTargetSeat(): number {
51
+ return (
52
+ this.ROUND_TABLE_TARGET_SEAT_MAPPING[
53
+ this.gameMaster.room.getTableSize()
54
+ ] ?? 0
55
+ );
56
+ }
57
+ }
@@ -3,3 +3,6 @@ export { SimpleRoomConfirmExitDialogView } from './simple-room-conifrm-exit-dial
3
3
  export { ManyTablesTournamentConfirmExitDialogView } from './many-tables-tournament-conifrm-exit-dialog.view';
4
4
  export { OneTableTournamentConfirmExitDialogView } from './one-table-tournament-conifrm-exit-dialog.view';
5
5
  export { TableSummaryView } from './table-summary.view';
6
+ export { AchievementSnackbarView } from './achievement-snackbar.view';
7
+ export { LevelUpSnackbarView } from './level-up-snackbar.view';
8
+ export { BaseTableView } from './base-table.view';
@@ -0,0 +1,38 @@
1
+ import { randomUUID } from 'crypto';
2
+ import {
3
+ AppScreenSnackbarIdEnum,
4
+ IAppScreenSnackbar,
5
+ ILocaleService,
6
+ LevelUpSnackbarComponent,
7
+ UniversalScreenSnackbarView,
8
+ } from 'jp.common.models';
9
+ import { formatChips } from 'jp.common.utils';
10
+
11
+ export class LevelUpSnackbarView extends UniversalScreenSnackbarView {
12
+ private newLevel: number;
13
+ private bonus: number;
14
+
15
+ constructor(
16
+ localeService: ILocaleService,
17
+ lang: string,
18
+ newLevel: number,
19
+ bonus: number,
20
+ ) {
21
+ super(localeService, lang);
22
+ this.newLevel = newLevel;
23
+ this.bonus = bonus;
24
+ }
25
+
26
+ build(): IAppScreenSnackbar {
27
+ return new LevelUpSnackbarComponent(
28
+ `${AppScreenSnackbarIdEnum.SNACKBAR_LEVEL_UP}_${randomUUID()}`,
29
+ this.localeService.t('common.server.message.code.4010', {
30
+ lang: this.lang,
31
+ args: {
32
+ NEW_LEVEL: this.newLevel.toString(),
33
+ BONUS: formatChips(this.bonus, this.lang, true),
34
+ },
35
+ }),
36
+ );
37
+ }
38
+ }
@@ -1,2 +0,0 @@
1
- export declare function getHours(timeStr: string): number;
2
- export declare function getMinutes(timeStr: string): number;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getHours = getHours;
4
- exports.getMinutes = getMinutes;
5
- function getHours(timeStr) {
6
- return parseInt(timeStr.substring(0, 2), 10);
7
- }
8
- function getMinutes(timeStr) {
9
- return parseInt(timeStr.substring(3, 5), 10);
10
- }
11
- //# sourceMappingURL=date.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":";;AAAA,4BAEC;AAED,gCAEC;AAND,SAAgB,QAAQ,CAAC,OAAe;IACtC,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,UAAU,CAAC,OAAe;IACxC,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,40 +0,0 @@
1
- import { Connection } from 'mongoose';
2
- import { GameResultRepository, OneTableTournamentRoomsRepository, ManyTablesTournamentRoomsRepository, UsersRepository, RatingRepository } from 'jp.db.schemas';
3
- import { GameMaster, TournamentMaster } from 'jp.ms.common.engine';
4
- export declare function getGameTableResults(master: GameMaster): {
5
- gameType: string;
6
- gameId: string;
7
- roomId: string;
8
- date: Date;
9
- pot: number;
10
- players: {
11
- userId: string;
12
- fullName: string;
13
- profit: number;
14
- figures: never[];
15
- }[];
16
- winners: {
17
- userId: string;
18
- fullName: string;
19
- profit: number;
20
- figures: never[];
21
- }[];
22
- history: {
23
- userId: string;
24
- fullName: string;
25
- date: Date;
26
- actionType: string;
27
- state: string;
28
- turnNumber: number;
29
- moveAction: string | undefined;
30
- moveData: import("jp.ms.common.engine").BaseMoveData | undefined;
31
- figures: {
32
- figureId: number;
33
- type: string;
34
- name: string;
35
- }[];
36
- }[];
37
- };
38
- export declare function saveGameTablesResultForSimpleRoom(master: GameMaster, connection: Connection, gameResultRepository: GameResultRepository, usersRepository: UsersRepository, ratingRepository: RatingRepository): Promise<void>;
39
- export declare function saveGameTablesResultForTournamentRoom(master: GameMaster, connection: Connection, gameResultRepository: GameResultRepository, usersRepository: UsersRepository): Promise<void>;
40
- export declare function saveTournamentResult(master: TournamentMaster, connection: Connection, tournamentRepository: OneTableTournamentRoomsRepository | ManyTablesTournamentRoomsRepository, usersRepository: UsersRepository, ratingRepository: RatingRepository): Promise<void>;
@@ -1,152 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getGameTableResults = getGameTableResults;
4
- exports.saveGameTablesResultForSimpleRoom = saveGameTablesResultForSimpleRoom;
5
- exports.saveGameTablesResultForTournamentRoom = saveGameTablesResultForTournamentRoom;
6
- exports.saveTournamentResult = saveTournamentResult;
7
- function getGameTableResults(master) {
8
- return {
9
- gameType: master.getRoom().getGameType(),
10
- gameId: master.getGameRound()?.getId() ?? '',
11
- roomId: master.getRoom().getId(),
12
- date: new Date(),
13
- pot: master.getGameRound()?.getPot() ?? 0,
14
- players: master
15
- .getTable()
16
- .getPlayers()
17
- .map((item) => ({
18
- userId: item.id,
19
- fullName: item.fullName,
20
- profit: item.profit,
21
- figures: [],
22
- })),
23
- winners: master
24
- .getGameResultHelper()
25
- .getWinners()
26
- .map((item) => ({
27
- userId: item.id,
28
- fullName: item.fullName,
29
- profit: item.profit,
30
- figures: [],
31
- })),
32
- history: master
33
- .getGameRound()
34
- ?.getHistory()
35
- .map((item) => ({
36
- userId: item.userId,
37
- fullName: item.fullName,
38
- date: item.date,
39
- actionType: item.actionType,
40
- state: item.state,
41
- turnNumber: item.turnNumber,
42
- moveAction: item.move?.action,
43
- moveData: item.move ?? undefined,
44
- figures: item.figures?.map((item) => ({
45
- figureId: item.id,
46
- type: item.type,
47
- name: item.getName(),
48
- })) ?? [],
49
- })) ?? [],
50
- };
51
- }
52
- async function saveGameTablesResultForSimpleRoom(master, connection, gameResultRepository, usersRepository, ratingRepository) {
53
- const userGameResult = master
54
- .getTable()
55
- .getPlayers()
56
- .map((player) => {
57
- return {
58
- userId: player.id,
59
- userName: player.fullName,
60
- userAvatarUrl: player.avatarUrl,
61
- balanceAdding: player.profit,
62
- experienceAdding: master.levelHelper.getNewExperienceAmount(player),
63
- levelAdding: master.levelHelper.getNewLevelAdding(player.level, player.experience),
64
- };
65
- });
66
- const ratings = userGameResult.map((item) => ({
67
- userId: item.userId,
68
- userName: item.userName,
69
- userAvatarUrl: item.userAvatarUrl,
70
- profit: item.balanceAdding,
71
- game: master.getRoom().getGameType(),
72
- }));
73
- const session = await connection.startSession();
74
- session.startTransaction();
75
- try {
76
- await gameResultRepository.createGameResult(getGameTableResults(master));
77
- await usersRepository.saveGameResult(userGameResult);
78
- await ratingRepository.addBulkPlayerRating(ratings);
79
- await session.commitTransaction();
80
- }
81
- catch (error) {
82
- await session.abortTransaction();
83
- throw error;
84
- }
85
- finally {
86
- await session.endSession();
87
- }
88
- }
89
- async function saveGameTablesResultForTournamentRoom(master, connection, gameResultRepository, usersRepository) {
90
- const userGameResult = master
91
- .getTable()
92
- .getPlayers()
93
- .map((player) => {
94
- return {
95
- userId: player.id,
96
- userName: player.fullName,
97
- userAvatarUrl: player.avatarUrl,
98
- balanceAdding: 0,
99
- experienceAdding: master.levelHelper.getNewExperienceAmount(player),
100
- levelAdding: master.levelHelper.getNewLevelAdding(player.level, player.experience),
101
- };
102
- });
103
- const session = await connection.startSession();
104
- session.startTransaction();
105
- try {
106
- await gameResultRepository.createGameResult(getGameTableResults(master));
107
- await usersRepository.saveGameResult(userGameResult);
108
- await session.commitTransaction();
109
- }
110
- catch (error) {
111
- await session.abortTransaction();
112
- throw error;
113
- }
114
- finally {
115
- await session.endSession();
116
- }
117
- }
118
- async function saveTournamentResult(master, connection, tournamentRepository, usersRepository, ratingRepository) {
119
- const userTournamentResult = master.getTournamentResult().map((player) => {
120
- return {
121
- userId: player.playerId,
122
- userName: player.playerName,
123
- userAvatarUrl: player.playerAvatarUrl,
124
- balanceAdding: player.profit,
125
- experienceAdding: 0,
126
- levelAdding: 0,
127
- };
128
- });
129
- const ratings = userTournamentResult.map((item) => ({
130
- userId: item.userId,
131
- userName: item.userName,
132
- userAvatarUrl: item.userAvatarUrl,
133
- profit: item.balanceAdding,
134
- game: master.getRoom().getGameType(),
135
- }));
136
- const session = await connection.startSession();
137
- session.startTransaction();
138
- try {
139
- await usersRepository.saveGameResult(userTournamentResult);
140
- await tournamentRepository.finishTournament(master.getTournamentId(), master.getTournamentResult());
141
- await ratingRepository.addBulkPlayerRating(ratings);
142
- await session.commitTransaction();
143
- }
144
- catch (error) {
145
- await session.abortTransaction();
146
- throw error;
147
- }
148
- finally {
149
- await session.endSession();
150
- }
151
- }
152
- //# sourceMappingURL=game-table-result.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"game-table-result.js","sourceRoot":"","sources":["../../src/utils/game-table-result.ts"],"names":[],"mappings":"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"}
package/src/utils/date.ts DELETED
@@ -1,7 +0,0 @@
1
- export function getHours(timeStr: string) {
2
- return parseInt(timeStr.substring(0, 2), 10);
3
- }
4
-
5
- export function getMinutes(timeStr: string) {
6
- return parseInt(timeStr.substring(3, 5), 10);
7
- }