jp.ms.common.modules 1.0.29 → 1.0.31

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 (226) hide show
  1. package/dist/dto/app-screen/index.d.ts +1 -0
  2. package/dist/dto/app-screen/index.js +3 -1
  3. package/dist/dto/app-screen/index.js.map +1 -1
  4. package/dist/dto/{table-game/cards → app-table}/card.dto.d.ts +2 -2
  5. package/dist/dto/app-table/card.dto.js.map +1 -0
  6. package/dist/dto/app-table/cards-deck.dto.d.ts +6 -0
  7. package/dist/dto/app-table/cards-deck.dto.js +38 -0
  8. package/dist/dto/app-table/cards-deck.dto.js.map +1 -0
  9. package/dist/dto/{table-game/cards/card-pair-slot.dto.d.ts → app-table/cards-pair-slots-item.dto.d.ts} +2 -2
  10. package/dist/dto/{table-game/cards/card-pair-slot.dto.js → app-table/cards-pair-slots-item.dto.js} +9 -9
  11. package/dist/dto/app-table/cards-pair-slots-item.dto.js.map +1 -0
  12. package/dist/dto/app-table/cards-pair-slots.dto.d.ts +5 -0
  13. package/dist/dto/app-table/cards-pair-slots.dto.js +27 -0
  14. package/dist/dto/app-table/cards-pair-slots.dto.js.map +1 -0
  15. package/dist/dto/app-table/cards-panel.dto.d.ts +10 -0
  16. package/dist/dto/{table-game/cards → app-table}/cards-panel.dto.js +4 -4
  17. package/dist/dto/app-table/cards-panel.dto.js.map +1 -0
  18. package/dist/dto/app-table/cards-player.dto.d.ts +6 -0
  19. package/dist/dto/{table-game/cards/card-player.dto.js → app-table/cards-player.dto.js} +6 -6
  20. package/dist/dto/app-table/cards-player.dto.js.map +1 -0
  21. package/dist/dto/app-table/index.d.ts +11 -0
  22. package/dist/dto/app-table/index.js +26 -0
  23. package/dist/dto/app-table/index.js.map +1 -0
  24. package/dist/dto/app-table/moves-panel-button.dto.d.ts +5 -0
  25. package/dist/dto/{table-game/base/base-table-yours-action.dto.js → app-table/moves-panel-button.dto.js} +6 -6
  26. package/dist/dto/app-table/moves-panel-button.dto.js.map +1 -0
  27. package/dist/dto/app-table/moves-panel.dto.d.ts +6 -0
  28. package/dist/dto/{table-game/base/base-table-moves-panel.dto.js → app-table/moves-panel.dto.js} +9 -9
  29. package/dist/dto/app-table/moves-panel.dto.js.map +1 -0
  30. package/dist/dto/{table-game/base/game-player.dto.d.ts → app-table/player.dto.d.ts} +2 -2
  31. package/dist/dto/{table-game/base/game-player.dto.js → app-table/player.dto.js} +11 -11
  32. package/dist/dto/app-table/player.dto.js.map +1 -0
  33. package/dist/dto/app-table/summary-item.dto.d.ts +8 -0
  34. package/dist/dto/{table-game/base/base-table-summary-item.dto.js → app-table/summary-item.dto.js} +9 -9
  35. package/dist/dto/app-table/summary-item.dto.js.map +1 -0
  36. package/dist/dto/app-table/summary.dto.d.ts +5 -0
  37. package/dist/dto/{table-game/base/base-table-summary.dto.js → app-table/summary.dto.js} +7 -7
  38. package/dist/dto/app-table/summary.dto.js.map +1 -0
  39. package/dist/dto/games/fool/fool-player.dto.d.ts +3 -0
  40. package/dist/dto/games/fool/fool-player.dto.js +8 -0
  41. package/dist/dto/games/fool/fool-player.dto.js.map +1 -0
  42. package/dist/dto/games/fool/fool-table.dto.d.ts +18 -0
  43. package/dist/dto/games/fool/fool-table.dto.js +105 -0
  44. package/dist/dto/games/fool/fool-table.dto.js.map +1 -0
  45. package/dist/dto/games/index.d.ts +1 -0
  46. package/dist/dto/games/index.js +18 -0
  47. package/dist/dto/games/index.js.map +1 -0
  48. package/dist/dto/index.d.ts +2 -1
  49. package/dist/dto/index.js +2 -1
  50. package/dist/dto/index.js.map +1 -1
  51. package/dist/exception/error-code.enum.d.ts +4 -0
  52. package/dist/exception/error-code.enum.js +9 -0
  53. package/dist/exception/error-code.enum.js.map +1 -0
  54. package/dist/exception/global-exception-filter.d.ts +5 -0
  55. package/dist/exception/global-exception-filter.js +53 -0
  56. package/dist/exception/global-exception-filter.js.map +1 -0
  57. package/dist/exception/http-exception-wth-snackbar.d.ts +12 -0
  58. package/dist/exception/http-exception-wth-snackbar.js +17 -0
  59. package/dist/exception/http-exception-wth-snackbar.js.map +1 -0
  60. package/dist/exception/index.d.ts +4 -0
  61. package/dist/exception/index.js +12 -0
  62. package/dist/exception/index.js.map +1 -0
  63. package/dist/exception/not-enough-money-for-purchase.exception.d.ts +5 -0
  64. package/dist/exception/not-enough-money-for-purchase.exception.js +12 -0
  65. package/dist/exception/not-enough-money-for-purchase.exception.js.map +1 -0
  66. package/dist/exception/not-found-free-room-for-fast-game.exception.d.ts +5 -0
  67. package/dist/exception/not-found-free-room-for-fast-game.exception.js +12 -0
  68. package/dist/exception/not-found-free-room-for-fast-game.exception.js.map +1 -0
  69. package/dist/index.d.ts +2 -1
  70. package/dist/index.js +2 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/modules/events/events.gateway.js +1 -1
  73. package/dist/modules/events/events.gateway.js.map +1 -1
  74. package/dist/modules/main/main-tables-list-screen.view.d.ts +11 -1
  75. package/dist/modules/main/main-tables-list-screen.view.js +97 -14
  76. package/dist/modules/main/main-tables-list-screen.view.js.map +1 -1
  77. package/dist/modules/main/main.controller.d.ts +4 -3
  78. package/dist/modules/main/main.controller.js +15 -3
  79. package/dist/modules/main/main.controller.js.map +1 -1
  80. package/dist/modules/main/main.module.js +2 -2
  81. package/dist/modules/main/main.module.js.map +1 -1
  82. package/dist/modules/main/main.service.d.ts +5 -4
  83. package/dist/modules/main/main.service.js +38 -12
  84. package/dist/modules/main/main.service.js.map +1 -1
  85. package/dist/modules/many-tables-tournament/many-tables-tournament-status-screen.view.d.ts +4 -0
  86. package/dist/modules/many-tables-tournament/many-tables-tournament-status-screen.view.js +56 -4
  87. package/dist/modules/many-tables-tournament/many-tables-tournament-status-screen.view.js.map +1 -1
  88. package/dist/modules/many-tables-tournament/many-tables-tournament-tables-list-screen.view.js +3 -3
  89. package/dist/modules/many-tables-tournament/many-tables-tournament-tables-list-screen.view.js.map +1 -1
  90. package/dist/modules/many-tables-tournament/many-tables-tournament.controller.d.ts +6 -7
  91. package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js +5 -17
  92. package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js.map +1 -1
  93. package/dist/modules/many-tables-tournament/many-tables-tournament.service.d.ts +6 -7
  94. package/dist/modules/many-tables-tournament/many-tables-tournament.service.js +20 -27
  95. package/dist/modules/many-tables-tournament/many-tables-tournament.service.js.map +1 -1
  96. package/dist/modules/menu/menu.service.js +1 -2
  97. package/dist/modules/menu/menu.service.js.map +1 -1
  98. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.d.ts +1 -0
  99. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.js +18 -5
  100. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.js.map +1 -1
  101. package/dist/modules/one-table-tournament/one-table-tournament.controller.d.ts +3 -3
  102. package/dist/modules/one-table-tournament/one-table-tournament.controller.js.map +1 -1
  103. package/dist/modules/one-table-tournament/one-table-tournament.service.d.ts +3 -3
  104. package/dist/modules/one-table-tournament/one-table-tournament.service.js +1 -2
  105. package/dist/modules/one-table-tournament/one-table-tournament.service.js.map +1 -1
  106. package/dist/modules/simple-rooms/simple-rooms.controller.d.ts +5 -5
  107. package/dist/modules/simple-rooms/simple-rooms.service.d.ts +5 -5
  108. package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js.map +1 -1
  109. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.module.d.ts +3 -1
  110. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.module.js +14 -3
  111. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.module.js.map +1 -1
  112. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.d.ts +4 -3
  113. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.js +49 -25
  114. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.js.map +1 -1
  115. package/dist/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.js +9 -6
  116. package/dist/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.js.map +1 -1
  117. package/dist/tsconfig.tsbuildinfo +1 -1
  118. package/dist/utils/game-table-result.d.ts +1 -2
  119. package/dist/utils/game-table-result.js +0 -13
  120. package/dist/utils/game-table-result.js.map +1 -1
  121. package/dist/views/index.d.ts +3 -0
  122. package/dist/views/index.js +7 -1
  123. package/dist/views/index.js.map +1 -1
  124. package/dist/views/many-tables-tournament-conifrm-exit-dialog.view.d.ts +4 -0
  125. package/dist/views/many-tables-tournament-conifrm-exit-dialog.view.js +11 -0
  126. package/dist/views/many-tables-tournament-conifrm-exit-dialog.view.js.map +1 -0
  127. package/dist/views/one-table-tournament-conifrm-exit-dialog.view.d.ts +4 -0
  128. package/dist/views/one-table-tournament-conifrm-exit-dialog.view.js +11 -0
  129. package/dist/views/one-table-tournament-conifrm-exit-dialog.view.js.map +1 -0
  130. package/dist/views/table-summary.view.d.ts +11 -0
  131. package/dist/views/table-summary.view.js +47 -0
  132. package/dist/views/table-summary.view.js.map +1 -0
  133. package/dist/views/tournament-buy-ticket-dialog.view.js +1 -1
  134. package/dist/views/tournament-buy-ticket-dialog.view.js.map +1 -1
  135. package/package.json +4 -4
  136. package/src/dto/app-screen/index.ts +1 -0
  137. package/src/dto/{table-game/cards → app-table}/card.dto.ts +2 -2
  138. package/src/dto/app-table/cards-deck.dto.ts +22 -0
  139. package/src/dto/{table-game/cards/card-pair-slot.dto.ts → app-table/cards-pair-slots-item.dto.ts} +2 -2
  140. package/src/dto/app-table/cards-pair-slots.dto.ts +13 -0
  141. package/src/dto/{table-game/cards → app-table}/cards-panel.dto.ts +5 -6
  142. package/src/dto/app-table/cards-player.dto.ts +14 -0
  143. package/src/dto/app-table/index.ts +11 -0
  144. package/src/dto/{table-game/base/base-table-yours-action.dto.ts → app-table/moves-panel-button.dto.ts} +2 -3
  145. package/src/dto/{table-game/base/base-table-moves-panel.dto.ts → app-table/moves-panel.dto.ts} +5 -5
  146. package/src/dto/{table-game/base/game-player.dto.ts → app-table/player.dto.ts} +2 -2
  147. package/src/dto/{table-game/base/base-table-summary-item.dto.ts → app-table/summary-item.dto.ts} +2 -3
  148. package/src/dto/app-table/summary.dto.ts +13 -0
  149. package/src/dto/games/fool/fool-player.dto.ts +3 -0
  150. package/src/dto/games/fool/fool-table.dto.ts +79 -0
  151. package/src/dto/games/index.ts +1 -0
  152. package/src/dto/index.ts +2 -1
  153. package/src/exception/error-code.enum.ts +4 -0
  154. package/src/exception/global-exception-filter.ts +50 -0
  155. package/src/exception/http-exception-wth-snackbar.ts +23 -0
  156. package/src/exception/index.ts +4 -0
  157. package/src/exception/not-enough-money-for-purchase.exception.ts +15 -0
  158. package/src/exception/not-found-free-room-for-fast-game.exception.ts +15 -0
  159. package/src/index.ts +2 -1
  160. package/src/modules/events/events.gateway.ts +1 -1
  161. package/src/modules/main/main-tables-list-screen.view.ts +177 -55
  162. package/src/modules/main/main.controller.ts +23 -10
  163. package/src/modules/main/main.module.ts +2 -2
  164. package/src/modules/main/main.service.ts +53 -19
  165. package/src/modules/many-tables-tournament/many-tables-tournament-status-screen.view.ts +97 -31
  166. package/src/modules/many-tables-tournament/many-tables-tournament-tables-list-screen.view.ts +25 -17
  167. package/src/modules/many-tables-tournament/many-tables-tournament.controller.ts +8 -17
  168. package/src/modules/many-tables-tournament/many-tables-tournament.service.ts +46 -58
  169. package/src/modules/menu/menu.service.ts +6 -9
  170. package/src/modules/one-table-tournament/one-table-tournament-status-screen.view.ts +43 -17
  171. package/src/modules/one-table-tournament/one-table-tournament.controller.ts +3 -4
  172. package/src/modules/one-table-tournament/one-table-tournament.service.ts +9 -12
  173. package/src/modules/simple-rooms/simple-rooms.controller.ts +5 -5
  174. package/src/modules/simple-rooms/simple-rooms.service.ts +5 -5
  175. package/src/modules/simple-rooms-manager/simple-rooms-manager.service.ts +0 -2
  176. package/src/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.module.ts +17 -9
  177. package/src/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.ts +57 -26
  178. package/src/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.ts +10 -7
  179. package/src/utils/game-table-result.ts +1 -16
  180. package/src/views/index.ts +4 -1
  181. package/src/views/many-tables-tournament-conifrm-exit-dialog.view.ts +21 -0
  182. package/src/views/one-table-tournament-conifrm-exit-dialog.view.ts +21 -0
  183. package/src/views/table-summary.view.ts +87 -0
  184. package/src/views/tournament-buy-ticket-dialog.view.ts +4 -4
  185. package/dist/adapter/base-table-game-state-adapter.d.ts +0 -36
  186. package/dist/adapter/base-table-game-state-adapter.js +0 -183
  187. package/dist/adapter/base-table-game-state-adapter.js.map +0 -1
  188. package/dist/adapter/card-table-game-state-adapter.d.ts +0 -14
  189. package/dist/adapter/card-table-game-state-adapter.js +0 -51
  190. package/dist/adapter/card-table-game-state-adapter.js.map +0 -1
  191. package/dist/adapter/index.d.ts +0 -1
  192. package/dist/adapter/index.js +0 -6
  193. package/dist/adapter/index.js.map +0 -1
  194. package/dist/dto/table-game/base/base-table-game-state.dto.d.ts +0 -17
  195. package/dist/dto/table-game/base/base-table-game-state.dto.js +0 -128
  196. package/dist/dto/table-game/base/base-table-game-state.dto.js.map +0 -1
  197. package/dist/dto/table-game/base/base-table-moves-panel.dto.d.ts +0 -6
  198. package/dist/dto/table-game/base/base-table-moves-panel.dto.js.map +0 -1
  199. package/dist/dto/table-game/base/base-table-summary-item.dto.d.ts +0 -8
  200. package/dist/dto/table-game/base/base-table-summary-item.dto.js.map +0 -1
  201. package/dist/dto/table-game/base/base-table-summary.dto.d.ts +0 -5
  202. package/dist/dto/table-game/base/base-table-summary.dto.js.map +0 -1
  203. package/dist/dto/table-game/base/base-table-yours-action.dto.d.ts +0 -5
  204. package/dist/dto/table-game/base/base-table-yours-action.dto.js.map +0 -1
  205. package/dist/dto/table-game/base/game-player.dto.js.map +0 -1
  206. package/dist/dto/table-game/cards/card-pair-slot.dto.js.map +0 -1
  207. package/dist/dto/table-game/cards/card-player.dto.d.ts +0 -6
  208. package/dist/dto/table-game/cards/card-player.dto.js.map +0 -1
  209. package/dist/dto/table-game/cards/card-table-game-state.dto.d.ts +0 -16
  210. package/dist/dto/table-game/cards/card-table-game-state.dto.js +0 -68
  211. package/dist/dto/table-game/cards/card-table-game-state.dto.js.map +0 -1
  212. package/dist/dto/table-game/cards/card.dto.js.map +0 -1
  213. package/dist/dto/table-game/cards/cards-panel.dto.d.ts +0 -10
  214. package/dist/dto/table-game/cards/cards-panel.dto.js.map +0 -1
  215. package/dist/dto/table-game/index.d.ts +0 -1
  216. package/dist/dto/table-game/index.js +0 -6
  217. package/dist/dto/table-game/index.js.map +0 -1
  218. package/src/adapter/base-table-game-state-adapter.ts +0 -272
  219. package/src/adapter/card-table-game-state-adapter.ts +0 -78
  220. package/src/adapter/index.ts +0 -1
  221. package/src/dto/table-game/base/base-table-game-state.dto.ts +0 -95
  222. package/src/dto/table-game/base/base-table-summary.dto.ts +0 -13
  223. package/src/dto/table-game/cards/card-player.dto.ts +0 -15
  224. package/src/dto/table-game/cards/card-table-game-state.dto.ts +0 -50
  225. package/src/dto/table-game/index.ts +0 -2
  226. /package/dist/dto/{table-game/cards → app-table}/card.dto.js +0 -0
@@ -0,0 +1,4 @@
1
+ export { GlobalExceptionFilter } from './global-exception-filter';
2
+ export { NotEnoughMoneyForPurchaseException } from './not-enough-money-for-purchase.exception';
3
+ export { NotFoundFreeRoomForFastGameException } from './not-found-free-room-for-fast-game.exception';
4
+ export { ErrorCodeEnum } from './error-code.enum';
@@ -0,0 +1,15 @@
1
+ import { IAppScreenSnackbar } from 'jp.common.models';
2
+
3
+ import { ErrorCodeEnum } from './error-code.enum';
4
+ import { HttpExceptionWithSnackbar } from './http-exception-wth-snackbar';
5
+
6
+
7
+ export class NotEnoughMoneyForPurchaseException extends HttpExceptionWithSnackbar {
8
+ constructor(snackbar: IAppScreenSnackbar) {
9
+ super(
10
+ 'Not enough money for purchase',
11
+ ErrorCodeEnum.NOT_ENOUGH_MONEY_FOR_PURCHASE,
12
+ snackbar,
13
+ );
14
+ }
15
+ }
@@ -0,0 +1,15 @@
1
+ import { IAppScreenSnackbar } from 'jp.common.models';
2
+
3
+ import { ErrorCodeEnum } from './error-code.enum';
4
+ import { HttpExceptionWithSnackbar } from './http-exception-wth-snackbar';
5
+
6
+
7
+ export class NotFoundFreeRoomForFastGameException extends HttpExceptionWithSnackbar {
8
+ constructor(snackbar: IAppScreenSnackbar) {
9
+ super(
10
+ 'Not found free room for fast game',
11
+ ErrorCodeEnum.NOT_FOUND_FREE_ROOM_FOR_FAST_GAME,
12
+ snackbar,
13
+ );
14
+ }
15
+ }
package/src/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './dto';
2
2
  export * from './modules';
3
3
  export * from './config';
4
- export * from './adapter';
4
+ export * from './exception';
5
+ export * from './views';
@@ -41,7 +41,7 @@ export class EventsGateway implements OnGatewayConnection<Socket>, OnGatewayDisc
41
41
  balance: user.balance,
42
42
  experience: user.experience,
43
43
  level: user.level,
44
- language: user.language,
44
+ language: user.normalizedLang,
45
45
  });
46
46
  this.playersManager.addPlayer(player);
47
47
  player.connections.addConnection(client);
@@ -1,24 +1,33 @@
1
+ import dayjs from "dayjs";
1
2
  import {
2
- AppScreen,
3
- AppScreenAppBar,
4
3
  AppScreenIconEnum,
5
4
  AppScreenIdEnum,
6
- AppScreenSection,
7
- AppScreenSectionButton,
8
- AppScreenSectionImage,
9
- AppScreenSectionListItem,
10
5
  IAppScreen,
11
6
  UniversalScreenView,
12
7
  ILocaleService,
13
- router,
14
- AppScreenSectionButtons,
8
+ AppScreeButtonIdEnum,
9
+ StandardScreenComponent,
10
+ AppScreenRouter,
11
+ IAppScreenSectionListItem,
12
+ StandardAppBarComponent,
13
+ ArrowBackButtonComponent,
14
+ CardListSectionComponent,
15
+ MiniCardSectionListItemComponent,
16
+ UrlImageComponent,
17
+ IconImageComponent,
18
+ ExtendedCardSectionListItemComponent,
19
+ TextButtonComponent,
20
+ FullButtonsButtonsComponent,
21
+ PrimaryButtonButtonsComponent,
15
22
  } from "jp.common.models";
16
23
  import {
17
24
  SimpleRoom,
18
25
  OneTableTournamentRoom,
19
26
  ManyTablesTournamentRoom,
27
+ TournamentMaster,
28
+ TournamentRoom,
20
29
  } from "jp.ms.common.engine";
21
- import { replacePattern } from "jp.common.utils";
30
+ import { formatDate, formatTime, replacePattern } from "jp.common.utils";
22
31
 
23
32
  import { TournamentBuyTicketDialogView } from "../../views";
24
33
 
@@ -26,6 +35,7 @@ export class MainTablesListScreenView extends UniversalScreenView {
26
35
  private readonly simpleRooms: Array<SimpleRoom>;
27
36
  private readonly oneTableTournamentRooms: Array<OneTableTournamentRoom>;
28
37
  private readonly manyTablesTournamentRooms: Array<ManyTablesTournamentRoom>;
38
+ private readonly playerId: string;
29
39
 
30
40
  constructor(
31
41
  localeService: ILocaleService,
@@ -33,67 +43,32 @@ export class MainTablesListScreenView extends UniversalScreenView {
33
43
  simpleRooms: Array<SimpleRoom>,
34
44
  oneTableTournamentRooms: Array<OneTableTournamentRoom>,
35
45
  manyTablesTournamentRooms: Array<ManyTablesTournamentRoom>,
46
+ playerId: string,
36
47
  ) {
37
48
  super(localeService, lang);
38
49
  this.simpleRooms = simpleRooms;
39
50
  this.oneTableTournamentRooms = oneTableTournamentRooms;
40
51
  this.manyTablesTournamentRooms = manyTablesTournamentRooms;
52
+ this.playerId = playerId;
41
53
  }
42
54
 
43
55
  build (): IAppScreen {
44
- const oneTableTournamentsCardList = this.oneTableTournamentRooms.map((room) =>
45
- AppScreenSectionListItem.CreateCardListItemMini(
46
- room.getId(),
47
- room.getTitle(this.lang),
48
- room.getSubtitle(this.lang),
49
- AppScreenSectionImage.CreateIconImage(AppScreenIconEnum.EMOJI_EVENTS),
50
- true,
51
- router.getOneTableTournamentStatusPath(room.getId()),
52
- ));
53
-
54
- const manyTablesTournamentsCardList = this.manyTablesTournamentRooms.map((room) =>
55
- AppScreenSectionListItem.CreateCardListItemExtended(
56
- room.getId(),
57
- room.getTitle(this.lang),
58
- room.getSubtitle(this.lang),
59
- AppScreenSectionImage.CreateIconImage(AppScreenIconEnum.EMOJI_EVENTS),
60
- true,
61
- true,
62
- AppScreenSectionImage.CreateIconImage(AppScreenIconEnum.EMOJI_EVENTS),
63
- room.getDescription(this.lang),
64
- AppScreenSectionButtons.CreatePrimaryButtonSection(AppScreenSectionButton.CreateTextButton('button')),
65
- ));
66
-
67
- const simpleRoomsTableCardList = this.simpleRooms.reduce<Array<AppScreenSectionListItem>>((result, room) => {
68
- const list = room.getTables().map((table) => AppScreenSectionListItem.CreateCardListItemMini(
69
- table.getId(),
70
- table.getTitleWithNumber(this.lang),
71
- replacePattern(table.getSubtitle(this.lang), {
72
- HALF_BET: table.getHalfBet().toString(),
73
- BET: table.getBet().toString()
74
- }),
75
- AppScreenSectionImage.CreateUrlImage(`${table.getPlayers().length}/${table.getTableSize()}`),
76
- true,
77
- router.getRoomPath(table.getId()),
78
- ));
79
-
80
- return [...result, ...list];
81
- }, []);
82
-
83
- return AppScreen.CreateStandardScreen(AppScreenIdEnum.ROOMS)
56
+ return new StandardScreenComponent(AppScreenIdEnum.ROOMS)
84
57
  .addAppBar(
85
- AppScreenAppBar.CreateStandardAppBar(
58
+ new StandardAppBarComponent(
86
59
  this.localeService.t('common.rooms.screen.title', { lang: this.lang }),
87
- AppScreenSectionButton.CreateArrowBackButton(this.localeService.t('common.button.back', { lang: this.lang })),
60
+ new ArrowBackButtonComponent(
61
+ this.localeService.t('common.button.back', { lang: this.lang })
62
+ ),
88
63
  ),
89
64
  )
90
65
  .addSection(
91
- AppScreenSection.CreateCardListSection(
66
+ new CardListSectionComponent(
92
67
  'id1',
93
68
  [
94
- ...manyTablesTournamentsCardList,
95
- ...oneTableTournamentsCardList,
96
- ...simpleRoomsTableCardList
69
+ ...this.getManyTablesTournamentsCardList(),
70
+ ...this.getOneTableTournamentsCardList(),
71
+ ...this.getSimpleRoomsTableCardList(),
97
72
  ]
98
73
  ),
99
74
  )
@@ -104,4 +79,151 @@ export class MainTablesListScreenView extends UniversalScreenView {
104
79
  ).build(),
105
80
  )
106
81
  }
82
+
83
+ private getSimpleRoomsTableCardList (): Array<IAppScreenSectionListItem> {
84
+ return this.simpleRooms.reduce<Array<IAppScreenSectionListItem>>((result, room) => {
85
+ const list = room.getTables().map((table) => new MiniCardSectionListItemComponent(
86
+ table.getId(),
87
+ table.getTitleWithNumber(this.lang),
88
+ replacePattern(table.getSubtitle(this.lang), {
89
+ HALF_BET: table.getHalfBet().toString(),
90
+ BET: table.getBet().toString()
91
+ }),
92
+ new UrlImageComponent(`${table.getPlayers().length}/${table.getTableSize()}`),
93
+ true,
94
+ true,
95
+ AppScreenRouter.getSimpleRoomTablePath(table.getId()),
96
+ ));
97
+
98
+ return [...result, ...list];
99
+ }, []);
100
+ }
101
+
102
+ private getOneTableTournamentsCardList (): Array<IAppScreenSectionListItem> {
103
+ return this.oneTableTournamentRooms.map((room) =>
104
+ new MiniCardSectionListItemComponent(
105
+ room.getId(),
106
+ room.getTitle(this.lang),
107
+ this.getOneTableTournamentSubtitle(room),
108
+ this.getOneTableTournamentIcon(room),
109
+ true,
110
+ true,
111
+ AppScreenRouter.getOneTableTournamentStatusPath(room.getId()),
112
+ )
113
+ );
114
+ }
115
+
116
+ private getOneTableTournamentSubtitle (tournament: TournamentRoom): string {
117
+ if (tournament.getRoomMaster<TournamentMaster>().isCancelled()) {
118
+ return this.localeService.t('common.tournaments.status.4', { lang: this.lang });
119
+ } else if (tournament.getRoomMaster<TournamentMaster>().isFinish()) {
120
+ return this.localeService.t('common.tournaments.status.3', { lang: this.lang });
121
+ } else if (tournament.getRoomMaster<TournamentMaster>().isInProgress()) {
122
+ return this.localeService.t('common.tournaments.status.2', { lang: this.lang });
123
+ } else if (tournament.getRoomMaster<TournamentMaster>().isWaiting()) {
124
+ return tournament.getSubtitle(this.lang);
125
+ }
126
+
127
+ return '';
128
+ }
129
+
130
+ private getOneTableTournamentIcon (tournament: TournamentRoom) {
131
+ if (tournament.getRoomMaster<TournamentMaster>().isFinish()) {
132
+ return new IconImageComponent(AppScreenIconEnum.EMOJI_EVENTS);
133
+ }
134
+
135
+ if (tournament.getRoomMaster<TournamentMaster>().isCancelled()) {
136
+ return new IconImageComponent(AppScreenIconEnum.INFO);
137
+ }
138
+
139
+ if (tournament.getRoomMaster<TournamentMaster>().isInProgress()) {
140
+ return new IconImageComponent(AppScreenIconEnum.BOLT);
141
+ }
142
+
143
+ return new UrlImageComponent(`${tournament.getParticipants().length}/${tournament.getTableSize()}`);
144
+ }
145
+
146
+ private getManyTablesTournamentsCardList (): Array<IAppScreenSectionListItem> {
147
+ return this.manyTablesTournamentRooms.map((room) =>
148
+ this.getManyTablesTournamentsCardListItem(room));
149
+ }
150
+
151
+ private getManyTablesTournamentsCardListItem (tournament: ManyTablesTournamentRoom): IAppScreenSectionListItem {
152
+ if (tournament.getRoomMaster<TournamentMaster>().isWaiting() || tournament.getRoomMaster<TournamentMaster>().isInProgress()) {
153
+ return new ExtendedCardSectionListItemComponent(
154
+ tournament.getId(),
155
+ tournament.getTitle(this.lang),
156
+ this.getManyTablesTournamentSubtitle(tournament),
157
+ this.getManyTablesTournamentIcon(tournament),
158
+ true,
159
+ true,
160
+ this.getManyTablesTournamentIcon(tournament),
161
+ replacePattern(tournament.getDescription(this.lang), {
162
+ PARTICIPANTS: tournament.getParticipants().length.toString(),
163
+ TOTAL_PARTICIPANTS: tournament.getMaxParticipants().toString(),
164
+ }),
165
+ this.getManyTablesTournamenButtons(tournament),
166
+ );
167
+ }
168
+
169
+ return new MiniCardSectionListItemComponent(
170
+ tournament.getId(),
171
+ tournament.getTitle(this.lang),
172
+ this.getManyTablesTournamentSubtitle(tournament),
173
+ this.getManyTablesTournamentIcon(tournament),
174
+ true,
175
+ true,
176
+ AppScreenRouter.getManyTablesTournamentStatusPath(tournament.getId()),
177
+ );
178
+ }
179
+
180
+ private getManyTablesTournamentIcon (tournament: TournamentRoom) {
181
+ if (tournament.getRoomMaster<TournamentMaster>().isCancelled()) {
182
+ return new IconImageComponent(AppScreenIconEnum.INFO);
183
+ }
184
+
185
+ if (tournament.getRoomMaster<TournamentMaster>().isInProgress()) {
186
+ return new IconImageComponent(AppScreenIconEnum.BOLT);
187
+ }
188
+
189
+ return new IconImageComponent(AppScreenIconEnum.EMOJI_EVENTS);
190
+ }
191
+
192
+ private getManyTablesTournamentSubtitle (tournament: ManyTablesTournamentRoom): string {
193
+ if (tournament.getRoomMaster<TournamentMaster>().isCancelled()) {
194
+ return this.localeService.t('common.tournaments.status.4', { lang: this.lang });
195
+ } else if (tournament.getRoomMaster<TournamentMaster>().isFinish()) {
196
+ return this.localeService.t('common.tournaments.status.3', { lang: this.lang });
197
+ } else if (tournament.getRoomMaster<TournamentMaster>().isInProgress()) {
198
+ return this.localeService.t('common.tournaments.status.2', { lang: this.lang });
199
+ } else if (tournament.getRoomMaster<TournamentMaster>().isWaiting()) {
200
+ return replacePattern(tournament.getSubtitle(this.lang), {
201
+ DATE: dayjs(tournament.getScheduleDate()).isToday() ?
202
+ this.localeService.t('common.tournaments.status.today', { lang: this.lang }) :
203
+ formatDate(tournament.getScheduleDate() ?? ''),
204
+ SCHEDULE_DATE: formatTime(tournament.getScheduleDate() ?? ''),
205
+ });
206
+ }
207
+
208
+ return '';
209
+ }
210
+
211
+ private getManyTablesTournamenButtons (tournament: ManyTablesTournamentRoom) {
212
+ if (tournament.isParticipant(this.playerId)) {
213
+ return new PrimaryButtonButtonsComponent(
214
+ new TextButtonComponent(
215
+ this.localeService.t('common.tournaments.screen.button.join.tournament', { lang: this.lang })
216
+ ).setId(AppScreeButtonIdEnum.BUTTON_MAIN_TABLES_MANY_TABLES_TOURNAMENT_JOIN)
217
+ );
218
+ }
219
+
220
+ return new FullButtonsButtonsComponent(
221
+ new TextButtonComponent(
222
+ this.localeService.t('common.tournaments.screen.button.buy.ticket', { lang: this.lang })
223
+ ).setId(AppScreeButtonIdEnum.BUTTON_MAIN_TABLES_MANY_TABLES_TOURNAMENT_BUY_TICKET),
224
+ new TextButtonComponent(
225
+ this.localeService.t('common.tournaments.screen.button.join.tournament', { lang: this.lang })
226
+ ).setId(AppScreeButtonIdEnum.BUTTON_MAIN_TABLES_MANY_TABLES_TOURNAMENT_JOIN)
227
+ );
228
+ }
107
229
  }
@@ -1,7 +1,7 @@
1
- import { Controller, Get, Headers } from '@nestjs/common';
2
- import { IAppHeaders, IBaseAppScreen } from 'jp.common.models';
1
+ import { Controller, Get, Headers, HttpCode, HttpStatus, NotImplementedException, Param, Post } from '@nestjs/common';
2
+ import { IAppHeaders } from 'jp.common.models';
3
3
 
4
- import { PlayerCheckStateDto, FindFreeTableDto } from '../../dto';
4
+ import { PlayerCheckStateDto, FindFreeTableDto, BaseAppScreenDto } from '../../dto';
5
5
 
6
6
  import { MainService } from './main.service';
7
7
 
@@ -12,27 +12,40 @@ export class MainController {
12
12
  ) { }
13
13
 
14
14
  @Get('player_check_state')
15
- checkState(@Headers() headers: IAppHeaders): Promise<PlayerCheckStateDto> {
15
+ checkState (@Headers() headers: IAppHeaders): Promise<PlayerCheckStateDto> {
16
16
  return this.mainService.playerCheckState(headers.client_auth_token, headers.client_game);
17
17
  }
18
18
 
19
19
  @Get('tables')
20
- getScreen(@Headers() headers: IAppHeaders): IBaseAppScreen {
21
- return this.mainService.getScreen(headers.client_language);
20
+ getScreen (@Headers() headers: IAppHeaders): BaseAppScreenDto {
21
+ return this.mainService.getScreen(headers.client_language, headers.client_auth_token);
22
22
  }
23
23
 
24
24
  @Get('tables/subscribe')
25
- subscribeOnTablesScreen(@Headers() headers: IAppHeaders): Promise<void> {
25
+ subscribeOnTablesScreen (@Headers() headers: IAppHeaders): Promise<void> {
26
26
  return this.mainService.subscribeOnTablesScreen(headers.client_language);
27
27
  }
28
28
 
29
29
  @Get('tables/unsubscribe')
30
- unsubscribeFromTablesScreen(@Headers() headers: IAppHeaders): Promise<void> {
30
+ unsubscribeFromTablesScreen (@Headers() headers: IAppHeaders): Promise<void> {
31
31
  return this.mainService.unsubscribeFromTablesScreen(headers.client_language);
32
32
  }
33
33
 
34
34
  @Get('find_free_table')
35
- findFreeTable(@Headers() headers: IAppHeaders): FindFreeTableDto {
36
- return this.mainService.findFreeTable(headers.client_auth_token);
35
+ findFreeTable (@Headers() headers: IAppHeaders): FindFreeTableDto {
36
+ return this.mainService.findFreeTable(headers.client_auth_token, headers.client_language);
37
+ }
38
+
39
+ @Post('many_tables_tournament/buy_ticket/:tournamentId')
40
+ @HttpCode(HttpStatus.OK)
41
+ buyTicket (
42
+ @Param('tournamentId') tournamentId: string,
43
+ @Headers() headers: IAppHeaders,
44
+ ): Promise<BaseAppScreenDto> {
45
+ return this.mainService.manyTablesTournamentbBuyTicket(
46
+ headers.client_auth_token,
47
+ headers.client_language,
48
+ tournamentId,
49
+ );
37
50
  }
38
51
  }
@@ -20,7 +20,7 @@ import { MainModuleOptions } from './main.interfaces';
20
20
  MainService,
21
21
  UsersRepository,
22
22
  ActivityLogRepository,
23
- ]
23
+ ],
24
24
  })
25
25
  export class MainModule {
26
26
  constructor(
@@ -48,7 +48,7 @@ export class MainModule {
48
48
 
49
49
  private onHandleStatusRoomChange = (event: RoomUpdateStateEvent) => {
50
50
  this.eventsBusMainTablesSubscribeService.getTablesSubscribers().forEach((subscriber: GamePlayer) => {
51
- const screen = this.mainService.getScreen(subscriber.language);
51
+ const screen = this.mainService.getScreen(subscriber.language, subscriber.id);
52
52
  subscriber.sendMessage(new MainTablesUpdateListWsEvent(event.game, screen));
53
53
  });
54
54
  }
@@ -1,8 +1,9 @@
1
1
  import { Inject, Injectable, InternalServerErrorException } from '@nestjs/common';
2
- import { AppScreenRoutesEnum, BaseAppScreen, router } from 'jp.common.models';
3
2
  import dayjs from 'dayjs';
4
3
  import isToday from 'dayjs/plugin/isToday';
5
4
  import { ActivityLogRepository, UsersRepository } from 'jp.db.schemas';
5
+ import { SimpleRoom, OneTableTournamentRoom, ManyTablesTournamentRoom } from 'jp.ms.common.engine';
6
+ import { AppScreenRoutesEnum, ErrorSnackbarComponent, AppScreenRouter } from 'jp.common.models';
6
7
 
7
8
  import { BaseAppScreenDto, PlayerCheckStateDto, FindFreeTableDto } from '../../dto';
8
9
  import { SimpleRoomsManagerService } from '../simple-rooms-manager';
@@ -10,6 +11,7 @@ import { PlayersManagerService } from '../players-manager';
10
11
  import { TournamentOneTableRoomsManagerService } from '../tournament-one-table-rooms-manager';
11
12
  import { TournamentManyTablesRoomsManagerService } from '../tournament-many-tables-rooms-manager';
12
13
  import { EventsBusMainTablesSubscribeService } from '../event-bus/events-bus.main-tables.subscribe.service';
14
+ import { ErrorCodeEnum, NotEnoughMoneyForPurchaseException, NotFoundFreeRoomForFastGameException } from '../../exception';
13
15
 
14
16
  import { MainFactoryOptions } from './main.interfaces';
15
17
  import { MAIN_OPTIONS } from './main.constants';
@@ -23,24 +25,23 @@ export class MainService {
23
25
  private readonly manyTablesRoomsManagerService: TournamentManyTablesRoomsManagerService,
24
26
  private readonly playersManager: PlayersManagerService,
25
27
  private readonly eventsBusMainTablesSubscribeService: EventsBusMainTablesSubscribeService,
26
- private readonly userRepository: UsersRepository,
28
+ private readonly usersRepository: UsersRepository,
27
29
  private readonly activityLogRepository: ActivityLogRepository,
28
30
  @Inject(MAIN_OPTIONS) private readonly options: MainFactoryOptions,
29
31
  ) {
30
32
  dayjs.extend(isToday);
31
33
  }
32
34
 
33
- getScreen (lang: string): BaseAppScreenDto {
35
+ getScreen (lang: string, clientAuthToken: string): BaseAppScreenDto {
34
36
  return new BaseAppScreenDto(
35
- new BaseAppScreen(
36
- new MainTablesListScreenView(
37
- this.options.i18n,
38
- lang,
39
- this.simpleRoomsManager.getRooms(),
40
- this.oneTableRoomsManagerService.getRooms(),
41
- this.manyTablesRoomsManagerService.getRooms(),
42
- ).build(),
43
- )
37
+ new MainTablesListScreenView(
38
+ this.options.i18n,
39
+ lang,
40
+ this.simpleRoomsManager.getRooms(),
41
+ this.oneTableRoomsManagerService.getRooms(),
42
+ this.manyTablesRoomsManagerService.getRooms(),
43
+ clientAuthToken,
44
+ ).buildBS(),
44
45
  );
45
46
  }
46
47
 
@@ -68,7 +69,7 @@ export class MainService {
68
69
  const player = this.playersManager.getPlayerById(clientAuthToken);
69
70
  let redirectUrl: string = AppScreenRoutesEnum.MENU;
70
71
 
71
- const foundUser = await this.userRepository.findById(clientAuthToken);
72
+ const foundUser = await this.usersRepository.findById(clientAuthToken);
72
73
  const isNewbie = await this.activityLogRepository.userIsNewbie(clientAuthToken)
73
74
  const last7logins = await this.activityLogRepository.findLast7DaysLogins(game, clientAuthToken);
74
75
 
@@ -76,8 +77,14 @@ export class MainService {
76
77
  throw new InternalServerErrorException();
77
78
  }
78
79
 
79
- if (player?.isPlayer() && player.tableId) {
80
- redirectUrl = router.getRoomPath(player.tableId);
80
+ if (player && (player.isPlayer() || player.isTableQueuer()) && player.tableId) {
81
+ if (player.room instanceof SimpleRoom) {
82
+ redirectUrl = AppScreenRouter.getSimpleRoomTablePath(player.tableId);
83
+ } else if (player.room instanceof OneTableTournamentRoom) {
84
+ redirectUrl = AppScreenRouter.getOneTableTournamentTablePath(player.tableId);
85
+ } else if (player.room instanceof ManyTablesTournamentRoom) {
86
+ redirectUrl = AppScreenRouter.getManyTablesTournamentTablePath(player.tableId);
87
+ }
81
88
  } else if (isNewbie) {
82
89
  redirectUrl = AppScreenRoutesEnum.WELCOME;
83
90
  } else if (dayjs(last7logins[0].date).isToday() && last7logins[0].count === 1) {
@@ -92,14 +99,41 @@ export class MainService {
92
99
  );
93
100
  }
94
101
 
95
- findFreeTable (clientAuthToken: string): FindFreeTableDto {
102
+ findFreeTable (clientAuthToken: string, lang: string): FindFreeTableDto {
96
103
  const player = this.playersManager.getPlayerById(clientAuthToken);
97
- const tableId = this.simpleRoomsManager.getFreeFastGameRoom()?.getId() ?? '';
104
+ const tableId = this.simpleRoomsManager.getFreeFastGameRoom()?.getId();
98
105
 
106
+ if (!player || !tableId) {
107
+ throw new NotFoundFreeRoomForFastGameException(new ErrorSnackbarComponent(
108
+ ErrorCodeEnum.NOT_FOUND_FREE_ROOM_FOR_FAST_GAME,
109
+ this.options.i18n.t('common.server.message.code.4003', { lang })
110
+ ));
111
+ }
99
112
 
100
113
  return FindFreeTableDto.fromEntities(
101
- tableId ? router.getRoomPath(tableId) : '',
102
- player?.id ?? '',
114
+ AppScreenRouter.getSimpleRoomTablePath(tableId),
115
+ player.id,
103
116
  );
104
117
  }
118
+
119
+ async manyTablesTournamentbBuyTicket (clientAuthToken: string, lang: string, tournamentId: string): Promise<BaseAppScreenDto> {
120
+ const player = this.playersManager.getPlayerById(clientAuthToken);
121
+ const tournament = this.manyTablesRoomsManagerService.getRoomByTableId(tournamentId);
122
+ const user = await this.usersRepository.findById(player?.id ?? '');
123
+
124
+ if (!player || !tournament || !user) {
125
+ throw new InternalServerErrorException();
126
+ }
127
+
128
+ if (user.balance < tournament.getTicketPrice()) {
129
+ throw new NotEnoughMoneyForPurchaseException(new ErrorSnackbarComponent(
130
+ ErrorCodeEnum.NOT_ENOUGH_MONEY_FOR_PURCHASE,
131
+ this.options.i18n.t('common.server.message.code.4004', { lang })
132
+ ));
133
+ }
134
+
135
+ await this.manyTablesRoomsManagerService.buyTicket(tournamentId, player);
136
+
137
+ return this.getScreen(lang, clientAuthToken);
138
+ }
105
139
  }