jp.ms.common.modules 1.0.39 → 1.0.41

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 (167) hide show
  1. package/dist/dto/app-table/bids-panel-item.dto.d.ts +6 -0
  2. package/dist/dto/app-table/bids-panel-item.dto.js +52 -0
  3. package/dist/dto/app-table/bids-panel-item.dto.js.map +1 -0
  4. package/dist/dto/app-table/bids-panel.dto.d.ts +7 -0
  5. package/dist/dto/app-table/bids-panel.dto.js +50 -0
  6. package/dist/dto/app-table/bids-panel.dto.js.map +1 -0
  7. package/dist/dto/app-table/index.d.ts +2 -0
  8. package/dist/dto/app-table/index.js +5 -1
  9. package/dist/dto/app-table/index.js.map +1 -1
  10. package/dist/dto/games/poker/poker-table.dto.d.ts +2 -1
  11. package/dist/dto/games/poker/poker-table.dto.js +6 -0
  12. package/dist/dto/games/poker/poker-table.dto.js.map +1 -1
  13. package/dist/modules/base-achievements/base-achievements.module.js +3 -3
  14. package/dist/modules/base-achievements/base-achievements.module.js.map +1 -1
  15. package/dist/modules/main/main.service.js +1 -1
  16. package/dist/modules/menu/menu-screen.view.js +1 -1
  17. package/dist/modules/menu/menu-screen.view.js.map +1 -1
  18. package/dist/modules/menu/menu.service.js +1 -1
  19. package/dist/modules/menu/menu.service.js.map +1 -1
  20. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.js.map +1 -1
  21. package/dist/tsconfig.tsbuildinfo +1 -1
  22. package/dist/views/table-summary.view.d.ts +6 -5
  23. package/dist/views/table-summary.view.js +3 -0
  24. package/dist/views/table-summary.view.js.map +1 -1
  25. package/package.json +57 -57
  26. package/src/dto/app-screen/app-screen-app-bar.dto.ts +36 -36
  27. package/src/dto/app-screen/app-screen-dialog.dto.ts +64 -64
  28. package/src/dto/app-screen/app-screen-field-list-item.dto.ts +42 -42
  29. package/src/dto/app-screen/app-screen-field.dto.ts +59 -59
  30. package/src/dto/app-screen/app-screen-section-button.dto.ts +60 -60
  31. package/src/dto/app-screen/app-screen-section-buttons.dto.ts +14 -14
  32. package/src/dto/app-screen/app-screen-section-image.dto.ts +33 -33
  33. package/src/dto/app-screen/app-screen-section-list-item.dto.ts +105 -105
  34. package/src/dto/app-screen/app-screen-section-req.dto.ts +33 -33
  35. package/src/dto/app-screen/app-screen-section.dto.ts +76 -76
  36. package/src/dto/app-screen/app-screen.dto.ts +50 -50
  37. package/src/dto/app-screen/base-app-screen.dto.ts +16 -16
  38. package/src/dto/app-screen/index.ts +10 -10
  39. package/src/dto/app-table/bids-panel-item.dto.ts +33 -0
  40. package/src/dto/app-table/bids-panel.dto.ts +32 -0
  41. package/src/dto/app-table/card.dto.ts +54 -54
  42. package/src/dto/app-table/cards-deck.dto.ts +22 -22
  43. package/src/dto/app-table/cards-pair-slots-item.dto.ts +45 -45
  44. package/src/dto/app-table/cards-pair-slots.dto.ts +13 -13
  45. package/src/dto/app-table/cards-panel.dto.ts +48 -48
  46. package/src/dto/app-table/cards-player.dto.ts +14 -14
  47. package/src/dto/app-table/cards-slots-item.dto.ts +40 -40
  48. package/src/dto/app-table/cards-slots.dto.ts +13 -13
  49. package/src/dto/app-table/index.ts +15 -13
  50. package/src/dto/app-table/moves-panel-button.dto.ts +24 -24
  51. package/src/dto/app-table/moves-panel.dto.ts +23 -23
  52. package/src/dto/app-table/player.dto.ts +69 -69
  53. package/src/dto/app-table/summary-item.dto.ts +51 -51
  54. package/src/dto/app-table/summary.dto.ts +13 -13
  55. package/src/dto/common/find-free-table.dto.ts +3 -3
  56. package/src/dto/common/index.ts +2 -2
  57. package/src/dto/common/join-tournament.dto.ts +33 -33
  58. package/src/dto/common/log.dto.ts +9 -9
  59. package/src/dto/common/many-tables-tournament-create.dto.ts +125 -125
  60. package/src/dto/common/many-tables-tournament-update.dto.ts +3 -3
  61. package/src/dto/common/player-check-state.dto.ts +33 -33
  62. package/src/dto/common/player-connected.dto.ts +58 -58
  63. package/src/dto/games/fool/fool-player.dto.ts +3 -3
  64. package/src/dto/games/fool/fool-table.dto.ts +81 -81
  65. package/src/dto/games/index.ts +2 -2
  66. package/src/dto/games/poker/poker-player.dto.ts +3 -3
  67. package/src/dto/games/poker/poker-table.dto.ts +81 -76
  68. package/src/dto/index.ts +4 -4
  69. package/src/exception/error-code.enum.ts +4 -4
  70. package/src/exception/global-exception-filter.ts +53 -53
  71. package/src/exception/http-exception-wth-snackbar.ts +27 -27
  72. package/src/exception/index.ts +4 -4
  73. package/src/exception/not-enough-money-for-purchase.exception.ts +14 -14
  74. package/src/exception/not-found-free-room-for-fast-game.exception.ts +14 -14
  75. package/src/index.ts +4 -4
  76. package/src/modules/anti-freeze-system/anti-freeze-system.constants.ts +1 -1
  77. package/src/modules/anti-freeze-system/anti-freeze-system.interfaces.ts +20 -18
  78. package/src/modules/anti-freeze-system/anti-freeze-system.module.ts +55 -55
  79. package/src/modules/anti-freeze-system/anti-freeze-system.service.ts +105 -105
  80. package/src/modules/anti-freeze-system/index.ts +1 -1
  81. package/src/modules/base-achievements/base-achievements.module.ts +322 -322
  82. package/src/modules/base-achievements/index.ts +1 -1
  83. package/src/modules/event-bus/events-bus.app.subscribe.service.ts +20 -20
  84. package/src/modules/event-bus/events-bus.main-tables.subscribe.service.ts +34 -34
  85. package/src/modules/event-bus/events-bus.many-tables-tournament.subscribe.service.ts +6 -6
  86. package/src/modules/event-bus/events-bus.module.ts +23 -23
  87. package/src/modules/event-bus/events-bus.one-table-tournament.subscribe.service.ts +6 -6
  88. package/src/modules/event-bus/events-bus.tournament.subscribe.service.ts +18 -18
  89. package/src/modules/event-bus/index.ts +5 -5
  90. package/src/modules/events/events.constants.ts +1 -1
  91. package/src/modules/events/events.gateway.ts +70 -70
  92. package/src/modules/events/events.interfaces.ts +17 -17
  93. package/src/modules/events/events.module.ts +32 -32
  94. package/src/modules/events/index.ts +1 -1
  95. package/src/modules/index.ts +27 -27
  96. package/src/modules/logger/index.ts +2 -2
  97. package/src/modules/logger/jp-logger.module.ts +10 -10
  98. package/src/modules/logger/jp-logger.service.ts +38 -38
  99. package/src/modules/main/index.ts +1 -1
  100. package/src/modules/main/main-tables-list-screen.view.ts +275 -275
  101. package/src/modules/main/main.constants.ts +1 -1
  102. package/src/modules/main/main.controller.ts +72 -72
  103. package/src/modules/main/main.interfaces.ts +17 -17
  104. package/src/modules/main/main.module.ts +73 -73
  105. package/src/modules/main/main.service.ts +183 -183
  106. package/src/modules/many-tables-tournament/index.ts +1 -1
  107. package/src/modules/many-tables-tournament/many-tables-tournament-status-screen.view.ts +143 -143
  108. package/src/modules/many-tables-tournament/many-tables-tournament-tables-list-screen.view.ts +63 -63
  109. package/src/modules/many-tables-tournament/many-tables-tournament.constants.ts +3 -3
  110. package/src/modules/many-tables-tournament/many-tables-tournament.controller.ts +151 -151
  111. package/src/modules/many-tables-tournament/many-tables-tournament.interfaces.ts +20 -18
  112. package/src/modules/many-tables-tournament/many-tables-tournament.module.ts +80 -80
  113. package/src/modules/many-tables-tournament/many-tables-tournament.service.ts +208 -208
  114. package/src/modules/many-tables-tournament-rooms-manager/index.ts +2 -2
  115. package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.constants.ts +3 -3
  116. package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.ts +37 -35
  117. package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.ts +84 -84
  118. package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.ts +331 -331
  119. package/src/modules/menu/index.ts +1 -1
  120. package/src/modules/menu/menu-screen.view.ts +71 -71
  121. package/src/modules/menu/menu.constants.ts +1 -1
  122. package/src/modules/menu/menu.controller.ts +16 -16
  123. package/src/modules/menu/menu.interfaces.ts +17 -17
  124. package/src/modules/menu/menu.module.ts +39 -39
  125. package/src/modules/menu/menu.service.ts +39 -35
  126. package/src/modules/one-table-tournament/index.ts +1 -1
  127. package/src/modules/one-table-tournament/one-table-tournament-status-screen.view.ts +166 -166
  128. package/src/modules/one-table-tournament/one-table-tournament.constants.ts +3 -3
  129. package/src/modules/one-table-tournament/one-table-tournament.controller.ts +104 -104
  130. package/src/modules/one-table-tournament/one-table-tournament.interfaces.ts +20 -18
  131. package/src/modules/one-table-tournament/one-table-tournament.module.ts +76 -76
  132. package/src/modules/one-table-tournament/one-table-tournament.service.ts +146 -146
  133. package/src/modules/one-table-tournament-rooms-manager/index.ts +2 -2
  134. package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.constants.ts +3 -3
  135. package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.ts +31 -29
  136. package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.ts +66 -66
  137. package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.ts +220 -220
  138. package/src/modules/players-manager/index.ts +2 -2
  139. package/src/modules/players-manager/players-manager.module.ts +9 -9
  140. package/src/modules/players-manager/players-manager.service.ts +27 -27
  141. package/src/modules/simple-rooms/index.ts +1 -1
  142. package/src/modules/simple-rooms/simple-rooms.constants.ts +1 -1
  143. package/src/modules/simple-rooms/simple-rooms.controller.ts +63 -63
  144. package/src/modules/simple-rooms/simple-rooms.interfaces.ts +20 -18
  145. package/src/modules/simple-rooms/simple-rooms.module.ts +39 -39
  146. package/src/modules/simple-rooms/simple-rooms.service.ts +95 -95
  147. package/src/modules/simple-rooms-manager/index.ts +2 -2
  148. package/src/modules/simple-rooms-manager/simple-rooms-manager.constants.ts +3 -3
  149. package/src/modules/simple-rooms-manager/simple-rooms-manager.interfaces.ts +26 -24
  150. package/src/modules/simple-rooms-manager/simple-rooms-manager.module.ts +60 -60
  151. package/src/modules/simple-rooms-manager/simple-rooms-manager.service.ts +190 -190
  152. package/src/modules/support/dump.service.ts +11 -11
  153. package/src/modules/support/index.ts +1 -1
  154. package/src/modules/support/metric.service.ts +41 -41
  155. package/src/modules/support/support.constants.ts +1 -1
  156. package/src/modules/support/support.controller.ts +79 -79
  157. package/src/modules/support/support.interfaces.ts +16 -16
  158. package/src/modules/support/support.module.ts +35 -35
  159. package/src/modules/support/support.service.ts +27 -27
  160. package/src/utils/date.ts +7 -7
  161. package/src/utils/game-table-result.ts +129 -129
  162. package/src/views/index.ts +5 -5
  163. package/src/views/many-tables-tournament-conifrm-exit-dialog.view.ts +37 -37
  164. package/src/views/one-table-tournament-conifrm-exit-dialog.view.ts +37 -37
  165. package/src/views/simple-room-conifrm-exit-dialog.view.ts +37 -37
  166. package/src/views/table-summary.view.ts +104 -100
  167. package/src/views/tournament-buy-ticket-dialog.view.ts +34 -34
@@ -1,76 +1,76 @@
1
- import { DynamicModule, Module, Provider } from '@nestjs/common';
2
- import { MongooseModule } from '@nestjs/mongoose';
3
- import {
4
- OneTableTournamentRoom,
5
- OneTableTournamentRoomSchema,
6
- OneTableTournamentRoomsRepository,
7
- } from 'jp.db.schemas';
8
- import {
9
- GamePlayer,
10
- OneTableTournamentUpdateStatusWsEvent,
11
- RoomUpdateStateEvent,
12
- } from 'jp.ms.common.engine';
13
-
14
- import { OneTableTournamentRoomsManagerService } from '../one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service';
15
- import { EventsBusOneTableTournamentSubscribeService } from '../event-bus';
16
-
17
- import { OneTableTournamentController } from './one-table-tournament.controller';
18
- import { OneTableTournamentService } from './one-table-tournament.service';
19
- import { ONE_TABLE_TOURNAMENT_OPTIONS } from './one-table-tournament.constants';
20
- import { OneTableTournamentModuleOptions } from './one-table-tournament.interfaces';
21
-
22
- @Module({
23
- imports: [
24
- MongooseModule.forFeature([
25
- {
26
- name: OneTableTournamentRoom.name,
27
- schema: OneTableTournamentRoomSchema,
28
- },
29
- ]),
30
- ],
31
- controllers: [OneTableTournamentController],
32
- providers: [OneTableTournamentService, OneTableTournamentRoomsRepository],
33
- })
34
- export class OneTableTournamentModule {
35
- constructor(
36
- private readonly oneTableRoomsManagerService: OneTableTournamentRoomsManagerService,
37
- private readonly eventsBusOneTableTournamentSubscribeService: EventsBusOneTableTournamentSubscribeService,
38
- private readonly oneTableTournamentService: OneTableTournamentService,
39
- ) {}
40
-
41
- static forRootAsync(options: OneTableTournamentModuleOptions): DynamicModule {
42
- return {
43
- module: OneTableTournamentModule,
44
- imports: options.imports ?? [],
45
- providers: [
46
- {
47
- provide: ONE_TABLE_TOURNAMENT_OPTIONS,
48
- useFactory: options.useFactory,
49
- inject: options.inject || [],
50
- } as Provider,
51
- ],
52
- };
53
- }
54
-
55
- onModuleInit() {
56
- this.eventsBusOneTableTournamentSubscribeService.subscribe(
57
- this.onHandleStatusRoomChange,
58
- );
59
- }
60
-
61
- private onHandleStatusRoomChange = (event: RoomUpdateStateEvent) => {
62
- this.oneTableRoomsManagerService
63
- .getRoomById(event.roomId)
64
- ?.getStatusScreenWatchers()
65
- .forEach((subscriber: GamePlayer) => {
66
- const screen = this.oneTableTournamentService.getStatusScreen(
67
- event.roomId,
68
- subscriber.language,
69
- subscriber.id,
70
- );
71
- subscriber.sendMessage(
72
- new OneTableTournamentUpdateStatusWsEvent(event.game, screen.screen),
73
- );
74
- });
75
- };
76
- }
1
+ import { DynamicModule, Module, Provider } from '@nestjs/common';
2
+ import { MongooseModule } from '@nestjs/mongoose';
3
+ import {
4
+ OneTableTournamentRoom,
5
+ OneTableTournamentRoomSchema,
6
+ OneTableTournamentRoomsRepository,
7
+ } from 'jp.db.schemas';
8
+ import {
9
+ GamePlayer,
10
+ OneTableTournamentUpdateStatusWsEvent,
11
+ RoomUpdateStateEvent,
12
+ } from 'jp.ms.common.engine';
13
+
14
+ import { OneTableTournamentRoomsManagerService } from '../one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service';
15
+ import { EventsBusOneTableTournamentSubscribeService } from '../event-bus';
16
+
17
+ import { OneTableTournamentController } from './one-table-tournament.controller';
18
+ import { OneTableTournamentService } from './one-table-tournament.service';
19
+ import { ONE_TABLE_TOURNAMENT_OPTIONS } from './one-table-tournament.constants';
20
+ import { OneTableTournamentModuleOptions } from './one-table-tournament.interfaces';
21
+
22
+ @Module({
23
+ imports: [
24
+ MongooseModule.forFeature([
25
+ {
26
+ name: OneTableTournamentRoom.name,
27
+ schema: OneTableTournamentRoomSchema,
28
+ },
29
+ ]),
30
+ ],
31
+ controllers: [OneTableTournamentController],
32
+ providers: [OneTableTournamentService, OneTableTournamentRoomsRepository],
33
+ })
34
+ export class OneTableTournamentModule {
35
+ constructor(
36
+ private readonly oneTableRoomsManagerService: OneTableTournamentRoomsManagerService,
37
+ private readonly eventsBusOneTableTournamentSubscribeService: EventsBusOneTableTournamentSubscribeService,
38
+ private readonly oneTableTournamentService: OneTableTournamentService,
39
+ ) {}
40
+
41
+ static forRootAsync(options: OneTableTournamentModuleOptions): DynamicModule {
42
+ return {
43
+ module: OneTableTournamentModule,
44
+ imports: options.imports ?? [],
45
+ providers: [
46
+ {
47
+ provide: ONE_TABLE_TOURNAMENT_OPTIONS,
48
+ useFactory: options.useFactory,
49
+ inject: options.inject || [],
50
+ } as Provider,
51
+ ],
52
+ };
53
+ }
54
+
55
+ onModuleInit() {
56
+ this.eventsBusOneTableTournamentSubscribeService.subscribe(
57
+ this.onHandleStatusRoomChange,
58
+ );
59
+ }
60
+
61
+ private onHandleStatusRoomChange = (event: RoomUpdateStateEvent) => {
62
+ this.oneTableRoomsManagerService
63
+ .getRoomById(event.roomId)
64
+ ?.getStatusScreenWatchers()
65
+ .forEach((subscriber: GamePlayer) => {
66
+ const screen = this.oneTableTournamentService.getStatusScreen(
67
+ event.roomId,
68
+ subscriber.language,
69
+ subscriber.id,
70
+ );
71
+ subscriber.sendMessage(
72
+ new OneTableTournamentUpdateStatusWsEvent(event.game, screen.screen),
73
+ );
74
+ });
75
+ };
76
+ }
@@ -1,146 +1,146 @@
1
- import {
2
- Inject,
3
- Injectable,
4
- InternalServerErrorException,
5
- } from '@nestjs/common';
6
- import {
7
- IAppHeaders,
8
- IBaseAppScreen,
9
- IBaseMoveData,
10
- IAppTableState,
11
- } from 'jp.common.models';
12
-
13
- import { BaseAppScreenDto } from '../../dto';
14
- import { OneTableTournamentRoomsManagerService } from '../one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service';
15
- import { PlayersManagerService } from '../players-manager/players-manager.service';
16
-
17
- import { OneTableTournamentFactoryOptions } from './one-table-tournament.interfaces';
18
- import { ONE_TABLE_TOURNAMENT_OPTIONS } from './one-table-tournament.constants';
19
- import { OneTableTournamentStatusScreenView } from './one-table-tournament-status-screen.view';
20
-
21
- @Injectable()
22
- export class OneTableTournamentService {
23
- constructor(
24
- private readonly oneTableRoomsManagerService: OneTableTournamentRoomsManagerService,
25
- private readonly playersManager: PlayersManagerService,
26
- @Inject(ONE_TABLE_TOURNAMENT_OPTIONS)
27
- private readonly options: OneTableTournamentFactoryOptions,
28
- ) {}
29
-
30
- getStatusScreen(
31
- tournamentId: string,
32
- lang: string,
33
- playerId: string,
34
- ): BaseAppScreenDto {
35
- const tournament =
36
- this.oneTableRoomsManagerService.getRoomById(tournamentId);
37
-
38
- if (!tournament) {
39
- throw new InternalServerErrorException();
40
- }
41
-
42
- return new BaseAppScreenDto(
43
- new OneTableTournamentStatusScreenView(
44
- this.options.i18n,
45
- lang,
46
- tournament,
47
- playerId,
48
- ).buildBS(),
49
- );
50
- }
51
-
52
- subscribeOnStatusScreen(tournamentId: string, clientAuthToken: string): void {
53
- const player = this.playersManager.getPlayerById(clientAuthToken);
54
- const tournament =
55
- this.oneTableRoomsManagerService.getRoomById(tournamentId);
56
-
57
- if (player && tournament) {
58
- tournament.addToStatusScreenWatchers(player);
59
-
60
- return;
61
- }
62
-
63
- throw new InternalServerErrorException();
64
- }
65
-
66
- unsubscribeFromStatusScreen(
67
- tournamentId: string,
68
- clientAuthToken: string,
69
- ): void {
70
- const player = this.playersManager.getPlayerById(clientAuthToken);
71
- const tournament =
72
- this.oneTableRoomsManagerService.getRoomById(tournamentId);
73
-
74
- if (player && tournament) {
75
- tournament.removeFromStatusScreenWatchers(player);
76
-
77
- return;
78
- }
79
-
80
- throw new InternalServerErrorException();
81
- }
82
-
83
- watchTheTable(tableId: string, clientAuthToken: string): IAppTableState {
84
- const player = this.playersManager.getPlayerById(clientAuthToken);
85
- const room = this.oneTableRoomsManagerService.getRoomByTableId(tableId);
86
- const master = room?.getMasterById(tableId);
87
-
88
- if (player && room && master) {
89
- room.handleWatchTheTable(player, tableId);
90
-
91
- return master.createGameStateDto(player);
92
- }
93
-
94
- throw new InternalServerErrorException();
95
- }
96
-
97
- moveOnTheTable(
98
- tableId: string,
99
- clientAuthToken: string,
100
- moveDto: IBaseMoveData,
101
- ): IAppTableState {
102
- const player = this.playersManager.getPlayerById(clientAuthToken);
103
- const room = this.oneTableRoomsManagerService.getRoomByTableId(tableId);
104
- const master = room?.getMasterById(tableId);
105
-
106
- if (player && room && master) {
107
- room.handleMoveOnTheTable(player, tableId, moveDto);
108
-
109
- return master.createGameStateDto(player);
110
- }
111
-
112
- throw new InternalServerErrorException();
113
- }
114
-
115
- joinTournament(tournamentId: string, headers: IAppHeaders): IBaseAppScreen {
116
- const player = this.playersManager.getPlayerById(headers.client_auth_token);
117
- const tournament =
118
- this.oneTableRoomsManagerService.getRoomByTableId(tournamentId);
119
-
120
- if (player && tournament) {
121
- tournament.handleJoinTournament(player);
122
-
123
- return this.getStatusScreen(
124
- tournamentId,
125
- headers.client_language,
126
- headers.client_auth_token,
127
- );
128
- }
129
-
130
- throw new InternalServerErrorException();
131
- }
132
-
133
- leaveTournament(tournamentId: string, clientAuthToken: string): void {
134
- const player = this.playersManager.getPlayerById(clientAuthToken);
135
- const tournament =
136
- this.oneTableRoomsManagerService.getRoomByTableId(tournamentId);
137
-
138
- if (player && tournament) {
139
- tournament.handleLeaveTournament(player);
140
-
141
- return;
142
- }
143
-
144
- throw new InternalServerErrorException();
145
- }
146
- }
1
+ import {
2
+ Inject,
3
+ Injectable,
4
+ InternalServerErrorException,
5
+ } from '@nestjs/common';
6
+ import {
7
+ IAppHeaders,
8
+ IBaseAppScreen,
9
+ IBaseMoveData,
10
+ IAppTableState,
11
+ } from 'jp.common.models';
12
+
13
+ import { BaseAppScreenDto } from '../../dto';
14
+ import { OneTableTournamentRoomsManagerService } from '../one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service';
15
+ import { PlayersManagerService } from '../players-manager/players-manager.service';
16
+
17
+ import { OneTableTournamentFactoryOptions } from './one-table-tournament.interfaces';
18
+ import { ONE_TABLE_TOURNAMENT_OPTIONS } from './one-table-tournament.constants';
19
+ import { OneTableTournamentStatusScreenView } from './one-table-tournament-status-screen.view';
20
+
21
+ @Injectable()
22
+ export class OneTableTournamentService {
23
+ constructor(
24
+ private readonly oneTableRoomsManagerService: OneTableTournamentRoomsManagerService,
25
+ private readonly playersManager: PlayersManagerService,
26
+ @Inject(ONE_TABLE_TOURNAMENT_OPTIONS)
27
+ private readonly options: OneTableTournamentFactoryOptions,
28
+ ) {}
29
+
30
+ getStatusScreen(
31
+ tournamentId: string,
32
+ lang: string,
33
+ playerId: string,
34
+ ): BaseAppScreenDto {
35
+ const tournament =
36
+ this.oneTableRoomsManagerService.getRoomById(tournamentId);
37
+
38
+ if (!tournament) {
39
+ throw new InternalServerErrorException();
40
+ }
41
+
42
+ return new BaseAppScreenDto(
43
+ new OneTableTournamentStatusScreenView(
44
+ this.options.i18n,
45
+ lang,
46
+ tournament,
47
+ playerId,
48
+ ).buildBS(),
49
+ );
50
+ }
51
+
52
+ subscribeOnStatusScreen(tournamentId: string, clientAuthToken: string): void {
53
+ const player = this.playersManager.getPlayerById(clientAuthToken);
54
+ const tournament =
55
+ this.oneTableRoomsManagerService.getRoomById(tournamentId);
56
+
57
+ if (player && tournament) {
58
+ tournament.addToStatusScreenWatchers(player);
59
+
60
+ return;
61
+ }
62
+
63
+ throw new InternalServerErrorException();
64
+ }
65
+
66
+ unsubscribeFromStatusScreen(
67
+ tournamentId: string,
68
+ clientAuthToken: string,
69
+ ): void {
70
+ const player = this.playersManager.getPlayerById(clientAuthToken);
71
+ const tournament =
72
+ this.oneTableRoomsManagerService.getRoomById(tournamentId);
73
+
74
+ if (player && tournament) {
75
+ tournament.removeFromStatusScreenWatchers(player);
76
+
77
+ return;
78
+ }
79
+
80
+ throw new InternalServerErrorException();
81
+ }
82
+
83
+ watchTheTable(tableId: string, clientAuthToken: string): IAppTableState {
84
+ const player = this.playersManager.getPlayerById(clientAuthToken);
85
+ const room = this.oneTableRoomsManagerService.getRoomByTableId(tableId);
86
+ const master = room?.getMasterById(tableId);
87
+
88
+ if (player && room && master) {
89
+ room.handleWatchTheTable(player, tableId);
90
+
91
+ return master.createGameStateDto(player);
92
+ }
93
+
94
+ throw new InternalServerErrorException();
95
+ }
96
+
97
+ moveOnTheTable(
98
+ tableId: string,
99
+ clientAuthToken: string,
100
+ moveDto: IBaseMoveData,
101
+ ): IAppTableState {
102
+ const player = this.playersManager.getPlayerById(clientAuthToken);
103
+ const room = this.oneTableRoomsManagerService.getRoomByTableId(tableId);
104
+ const master = room?.getMasterById(tableId);
105
+
106
+ if (player && room && master) {
107
+ room.handleMoveOnTheTable(player, tableId, moveDto);
108
+
109
+ return master.createGameStateDto(player);
110
+ }
111
+
112
+ throw new InternalServerErrorException();
113
+ }
114
+
115
+ joinTournament(tournamentId: string, headers: IAppHeaders): IBaseAppScreen {
116
+ const player = this.playersManager.getPlayerById(headers.client_auth_token);
117
+ const tournament =
118
+ this.oneTableRoomsManagerService.getRoomByTableId(tournamentId);
119
+
120
+ if (player && tournament) {
121
+ tournament.handleJoinTournament(player);
122
+
123
+ return this.getStatusScreen(
124
+ tournamentId,
125
+ headers.client_language,
126
+ headers.client_auth_token,
127
+ );
128
+ }
129
+
130
+ throw new InternalServerErrorException();
131
+ }
132
+
133
+ leaveTournament(tournamentId: string, clientAuthToken: string): void {
134
+ const player = this.playersManager.getPlayerById(clientAuthToken);
135
+ const tournament =
136
+ this.oneTableRoomsManagerService.getRoomByTableId(tournamentId);
137
+
138
+ if (player && tournament) {
139
+ tournament.handleLeaveTournament(player);
140
+
141
+ return;
142
+ }
143
+
144
+ throw new InternalServerErrorException();
145
+ }
146
+ }
@@ -1,2 +1,2 @@
1
- export { OneTableTournamentRoomsManagerModule } from './one-table-tournament-rooms-manager.module';
2
- export { OneTableTournamentRoomsManagerService } from './one-table-tournament-rooms-manager.service';
1
+ export { OneTableTournamentRoomsManagerModule } from './one-table-tournament-rooms-manager.module';
2
+ export { OneTableTournamentRoomsManagerService } from './one-table-tournament-rooms-manager.service';
@@ -1,3 +1,3 @@
1
- export const ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS = Symbol(
2
- 'ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS',
3
- );
1
+ export const ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS = Symbol(
2
+ 'ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS',
3
+ );
@@ -1,29 +1,31 @@
1
- import { ModuleMetadata } from '@nestjs/common';
2
- import { I18nService } from 'nestjs-i18n';
3
- import { Type } from '@nestjs/common/interfaces/type.interface';
4
- import { DynamicModule } from '@nestjs/common/interfaces/modules/dynamic-module.interface';
5
- import { ForwardReference } from '@nestjs/common/interfaces/modules/forward-reference.interface';
6
- import {
7
- TournamentRoomConfig,
8
- OneTableTournamentRoom,
9
- IPrizeTableData,
10
- } from 'jp.ms.common.engine';
11
-
12
- export interface OneTableTournamentRoomsManagerOptions
13
- extends Pick<ModuleMetadata, 'imports'> {
14
- imports?: Array<
15
- Type<any> | DynamicModule | Promise<DynamicModule> | ForwardReference
16
- >;
17
- inject?: any[];
18
- useFactory?: (...args: any[]) => OneTableTournamentRoomsFactoryOptions;
19
- }
20
-
21
- export interface OneTableTournamentRoomsFactoryOptions {
22
- i18n: I18nService | any;
23
- createTournamentRoom(room: TournamentRoomConfig): OneTableTournamentRoom;
24
- gameType: string;
25
- restartGameTimeout: number;
26
- playersTurnTimeout: number;
27
- instantFinishMode: boolean;
28
- tournamentPrizeTable: IPrizeTableData;
29
- }
1
+ import { ModuleMetadata } from '@nestjs/common';
2
+ import { I18nService } from 'nestjs-i18n';
3
+ import { Type } from '@nestjs/common/interfaces/type.interface';
4
+ import { DynamicModule } from '@nestjs/common/interfaces/modules/dynamic-module.interface';
5
+ import { ForwardReference } from '@nestjs/common/interfaces/modules/forward-reference.interface';
6
+ import {
7
+ TournamentRoomConfig,
8
+ OneTableTournamentRoom,
9
+ IPrizeTableData,
10
+ } from 'jp.ms.common.engine';
11
+
12
+ export interface OneTableTournamentRoomsManagerOptions extends Pick<
13
+ ModuleMetadata,
14
+ 'imports'
15
+ > {
16
+ imports?: Array<
17
+ Type<any> | DynamicModule | Promise<DynamicModule> | ForwardReference
18
+ >;
19
+ inject?: any[];
20
+ useFactory?: (...args: any[]) => OneTableTournamentRoomsFactoryOptions;
21
+ }
22
+
23
+ export interface OneTableTournamentRoomsFactoryOptions {
24
+ i18n: I18nService | any;
25
+ createTournamentRoom(room: TournamentRoomConfig): OneTableTournamentRoom;
26
+ gameType: string;
27
+ restartGameTimeout: number;
28
+ playersTurnTimeout: number;
29
+ instantFinishMode: boolean;
30
+ tournamentPrizeTable: IPrizeTableData;
31
+ }
@@ -1,66 +1,66 @@
1
- import { DynamicModule, Global, Module, Provider } from '@nestjs/common';
2
- import { MongooseModule } from '@nestjs/mongoose';
3
- import {
4
- OneTableTournamentRoom,
5
- OneTableTournamentRoomSchema,
6
- OneTableTournamentRoomsRepository,
7
- User,
8
- UserSchema,
9
- UsersRepository,
10
- GameResult,
11
- GameResultSchema,
12
- GameResultRepository,
13
- } from 'jp.db.schemas';
14
-
15
- import { OneTableTournamentRoomsManagerService } from './one-table-tournament-rooms-manager.service';
16
- import { OneTableTournamentRoomsManagerOptions } from './one-table-tournament-rooms-manager.interfaces';
17
- import { ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS } from './one-table-tournament-rooms-manager.constants';
18
-
19
- @Global()
20
- @Module({
21
- imports: [
22
- MongooseModule.forFeature([
23
- {
24
- name: OneTableTournamentRoom.name,
25
- schema: OneTableTournamentRoomSchema,
26
- },
27
- ]),
28
- MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
29
- MongooseModule.forFeature([
30
- { name: GameResult.name, schema: GameResultSchema },
31
- ]),
32
- ],
33
- providers: [
34
- OneTableTournamentRoomsRepository,
35
- UsersRepository,
36
- OneTableTournamentRoomsManagerService,
37
- GameResultRepository,
38
- ],
39
- exports: [OneTableTournamentRoomsManagerService],
40
- })
41
- export class OneTableTournamentRoomsManagerModule {
42
- constructor(
43
- private readonly managerService: OneTableTournamentRoomsManagerService,
44
- ) {}
45
-
46
- static forRootAsync(
47
- options: OneTableTournamentRoomsManagerOptions,
48
- ): DynamicModule {
49
- return {
50
- module: OneTableTournamentRoomsManagerModule,
51
- imports: options.imports ?? [],
52
- providers: [
53
- {
54
- provide: ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS,
55
- useFactory: options.useFactory,
56
- inject: options.inject || [],
57
- } as Provider,
58
- ],
59
- };
60
- }
61
-
62
- async onModuleInit() {
63
- await this.managerService.createMasterTournament();
64
- await this.managerService.hydrateTournamentsFromDB();
65
- }
66
- }
1
+ import { DynamicModule, Global, Module, Provider } from '@nestjs/common';
2
+ import { MongooseModule } from '@nestjs/mongoose';
3
+ import {
4
+ OneTableTournamentRoom,
5
+ OneTableTournamentRoomSchema,
6
+ OneTableTournamentRoomsRepository,
7
+ User,
8
+ UserSchema,
9
+ UsersRepository,
10
+ GameResult,
11
+ GameResultSchema,
12
+ GameResultRepository,
13
+ } from 'jp.db.schemas';
14
+
15
+ import { OneTableTournamentRoomsManagerService } from './one-table-tournament-rooms-manager.service';
16
+ import { OneTableTournamentRoomsManagerOptions } from './one-table-tournament-rooms-manager.interfaces';
17
+ import { ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS } from './one-table-tournament-rooms-manager.constants';
18
+
19
+ @Global()
20
+ @Module({
21
+ imports: [
22
+ MongooseModule.forFeature([
23
+ {
24
+ name: OneTableTournamentRoom.name,
25
+ schema: OneTableTournamentRoomSchema,
26
+ },
27
+ ]),
28
+ MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
29
+ MongooseModule.forFeature([
30
+ { name: GameResult.name, schema: GameResultSchema },
31
+ ]),
32
+ ],
33
+ providers: [
34
+ OneTableTournamentRoomsRepository,
35
+ UsersRepository,
36
+ OneTableTournamentRoomsManagerService,
37
+ GameResultRepository,
38
+ ],
39
+ exports: [OneTableTournamentRoomsManagerService],
40
+ })
41
+ export class OneTableTournamentRoomsManagerModule {
42
+ constructor(
43
+ private readonly managerService: OneTableTournamentRoomsManagerService,
44
+ ) {}
45
+
46
+ static forRootAsync(
47
+ options: OneTableTournamentRoomsManagerOptions,
48
+ ): DynamicModule {
49
+ return {
50
+ module: OneTableTournamentRoomsManagerModule,
51
+ imports: options.imports ?? [],
52
+ providers: [
53
+ {
54
+ provide: ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS,
55
+ useFactory: options.useFactory,
56
+ inject: options.inject || [],
57
+ } as Provider,
58
+ ],
59
+ };
60
+ }
61
+
62
+ async onModuleInit() {
63
+ await this.managerService.createMasterTournament();
64
+ await this.managerService.hydrateTournamentsFromDB();
65
+ }
66
+ }