jp.ms.common.modules 1.0.23 → 1.0.25

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 (120) hide show
  1. package/dist/adapter/base-table-game-state-adapter.d.ts +3 -1
  2. package/dist/adapter/base-table-game-state-adapter.js +11 -0
  3. package/dist/adapter/base-table-game-state-adapter.js.map +1 -1
  4. package/dist/adapter/card-table-game-state-adapter.d.ts +4 -2
  5. package/dist/adapter/card-table-game-state-adapter.js +15 -4
  6. package/dist/adapter/card-table-game-state-adapter.js.map +1 -1
  7. package/dist/config/cert.js +35 -2
  8. package/dist/config/cert.js.map +1 -1
  9. package/dist/config/cors.js +34 -1
  10. package/dist/config/cors.js.map +1 -1
  11. package/dist/dto/common/find-free-table.dto.d.ts +3 -0
  12. package/dist/dto/common/find-free-table.dto.js +8 -0
  13. package/dist/dto/common/find-free-table.dto.js.map +1 -0
  14. package/dist/dto/common/index.d.ts +1 -0
  15. package/dist/dto/common/index.js +3 -1
  16. package/dist/dto/common/index.js.map +1 -1
  17. package/dist/dto/table-game/base/base-table-game-state.dto.d.ts +3 -0
  18. package/dist/dto/table-game/base/base-table-game-state.dto.js +19 -0
  19. package/dist/dto/table-game/base/base-table-game-state.dto.js.map +1 -1
  20. package/dist/dto/table-game/cards/cards-panel.dto.d.ts +2 -1
  21. package/dist/dto/table-game/cards/cards-panel.dto.js +14 -3
  22. package/dist/dto/table-game/cards/cards-panel.dto.js.map +1 -1
  23. package/dist/modules/anti-freeze-system/anti-freeze-system.module.js +4 -1
  24. package/dist/modules/anti-freeze-system/anti-freeze-system.module.js.map +1 -1
  25. package/dist/modules/anti-freeze-system/anti-freeze-system.service.js +2 -2
  26. package/dist/modules/anti-freeze-system/anti-freeze-system.service.js.map +1 -1
  27. package/dist/modules/base-achievements/base-achievements.module.d.ts +5 -3
  28. package/dist/modules/base-achievements/base-achievements.module.js +34 -25
  29. package/dist/modules/base-achievements/base-achievements.module.js.map +1 -1
  30. package/dist/modules/event-bus/events-bus.main-tables.subscribe.service.d.ts +1 -1
  31. package/dist/modules/event-bus/events-bus.main-tables.subscribe.service.js.map +1 -1
  32. package/dist/modules/logger/jp-logger.service.js +34 -1
  33. package/dist/modules/logger/jp-logger.service.js.map +1 -1
  34. package/dist/modules/main/main-tables-list-screen.view.js +1 -1
  35. package/dist/modules/main/main-tables-list-screen.view.js.map +1 -1
  36. package/dist/modules/main/main.controller.d.ts +2 -2
  37. package/dist/modules/main/main.controller.js +4 -3
  38. package/dist/modules/main/main.controller.js.map +1 -1
  39. package/dist/modules/main/main.module.js +2 -2
  40. package/dist/modules/main/main.module.js.map +1 -1
  41. package/dist/modules/main/main.service.d.ts +2 -2
  42. package/dist/modules/main/main.service.js +11 -5
  43. package/dist/modules/main/main.service.js.map +1 -1
  44. package/dist/modules/many-tables-tournament/many-tables-tournament.module.js +1 -1
  45. package/dist/modules/many-tables-tournament/many-tables-tournament.module.js.map +1 -1
  46. package/dist/modules/many-tables-tournament/many-tables-tournament.service.js +1 -1
  47. package/dist/modules/many-tables-tournament/many-tables-tournament.service.js.map +1 -1
  48. package/dist/modules/menu/menu-screen.view.d.ts +5 -3
  49. package/dist/modules/menu/menu-screen.view.js +10 -2
  50. package/dist/modules/menu/menu-screen.view.js.map +1 -1
  51. package/dist/modules/menu/menu.module.js +2 -1
  52. package/dist/modules/menu/menu.module.js.map +1 -1
  53. package/dist/modules/menu/menu.service.d.ts +3 -2
  54. package/dist/modules/menu/menu.service.js +8 -4
  55. package/dist/modules/menu/menu.service.js.map +1 -1
  56. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.d.ts +6 -1
  57. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.js +52 -3
  58. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.js.map +1 -1
  59. package/dist/modules/one-table-tournament/one-table-tournament.controller.d.ts +4 -5
  60. package/dist/modules/one-table-tournament/one-table-tournament.controller.js +8 -9
  61. package/dist/modules/one-table-tournament/one-table-tournament.controller.js.map +1 -1
  62. package/dist/modules/one-table-tournament/one-table-tournament.module.js +2 -2
  63. package/dist/modules/one-table-tournament/one-table-tournament.module.js.map +1 -1
  64. package/dist/modules/one-table-tournament/one-table-tournament.service.d.ts +6 -7
  65. package/dist/modules/one-table-tournament/one-table-tournament.service.js +10 -17
  66. package/dist/modules/one-table-tournament/one-table-tournament.service.js.map +1 -1
  67. package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.d.ts +2 -1
  68. package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js +30 -5
  69. package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js.map +1 -1
  70. package/dist/modules/support/dump.service.js +4 -1
  71. package/dist/modules/support/dump.service.js.map +1 -1
  72. package/dist/modules/support/metric.service.js +34 -1
  73. package/dist/modules/support/metric.service.js.map +1 -1
  74. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.js +33 -10
  75. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.js.map +1 -1
  76. package/dist/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.js +21 -5
  77. package/dist/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.js.map +1 -1
  78. package/dist/tsconfig.tsbuildinfo +1 -1
  79. package/dist/utils/game-table-result.d.ts +3 -2
  80. package/dist/utils/game-table-result.js +14 -1
  81. package/dist/utils/game-table-result.js.map +1 -1
  82. package/dist/views/index.d.ts +1 -0
  83. package/dist/views/index.js +3 -1
  84. package/dist/views/index.js.map +1 -1
  85. package/dist/views/simple-room-conifrm-exit-dialog.view.d.ts +4 -0
  86. package/dist/views/simple-room-conifrm-exit-dialog.view.js +11 -0
  87. package/dist/views/simple-room-conifrm-exit-dialog.view.js.map +1 -0
  88. package/dist/views/tournament-buy-ticket-dialog.view.d.ts +2 -2
  89. package/dist/views/tournament-buy-ticket-dialog.view.js +1 -1
  90. package/dist/views/tournament-buy-ticket-dialog.view.js.map +1 -1
  91. package/package.json +4 -4
  92. package/src/adapter/base-table-game-state-adapter.ts +23 -5
  93. package/src/adapter/card-table-game-state-adapter.ts +28 -4
  94. package/src/dto/common/find-free-table.dto.ts +3 -0
  95. package/src/dto/common/index.ts +1 -0
  96. package/src/dto/table-game/base/base-table-game-state.dto.ts +16 -0
  97. package/src/dto/table-game/cards/cards-panel.dto.ts +12 -3
  98. package/src/modules/anti-freeze-system/anti-freeze-system.service.ts +3 -3
  99. package/src/modules/base-achievements/base-achievements.module.ts +46 -24
  100. package/src/modules/event-bus/events-bus.main-tables.subscribe.service.ts +1 -1
  101. package/src/modules/main/main-tables-list-screen.view.ts +2 -2
  102. package/src/modules/main/main.controller.ts +4 -4
  103. package/src/modules/main/main.module.ts +5 -5
  104. package/src/modules/main/main.service.ts +20 -10
  105. package/src/modules/many-tables-tournament/many-tables-tournament.module.ts +1 -1
  106. package/src/modules/many-tables-tournament/many-tables-tournament.service.ts +2 -1
  107. package/src/modules/menu/menu-screen.view.ts +33 -11
  108. package/src/modules/menu/menu.module.ts +3 -2
  109. package/src/modules/menu/menu.service.ts +5 -2
  110. package/src/modules/one-table-tournament/one-table-tournament-status-screen.view.ts +76 -10
  111. package/src/modules/one-table-tournament/one-table-tournament.controller.ts +8 -8
  112. package/src/modules/one-table-tournament/one-table-tournament.module.ts +2 -2
  113. package/src/modules/one-table-tournament/one-table-tournament.service.ts +20 -28
  114. package/src/modules/simple-rooms-manager/simple-rooms-manager.service.ts +64 -14
  115. package/src/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.ts +42 -17
  116. package/src/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.ts +37 -15
  117. package/src/utils/game-table-result.ts +18 -3
  118. package/src/views/index.ts +2 -1
  119. package/src/views/simple-room-conifrm-exit-dialog.view.ts +21 -0
  120. package/src/views/tournament-buy-ticket-dialog.view.ts +11 -11
@@ -1,6 +1,6 @@
1
- import { GameMaster, TournamentMaster } from 'jp.ms.common.engine';
2
- import { GameResultRepository, TournamentManyTablesRoomsRepository, TournamentOneTableRoomsRepository, UsersRepository } from 'jp.db.schemas';
3
1
  import { Connection } from 'mongoose';
2
+ import { BaseGameEvent, GameMaster, GameTournamentPlayerLeavedTheTournamentEvent, TournamentMaster } from 'jp.ms.common.engine';
3
+ import { GameResultRepository, TournamentManyTablesRoomsRepository, TournamentOneTableRoomsRepository, UsersRepository } from 'jp.db.schemas';
4
4
  export declare function getGameTableResults(master: GameMaster): {
5
5
  gameType: string;
6
6
  gameId: string;
@@ -37,3 +37,4 @@ export declare function getGameTableResults(master: GameMaster): {
37
37
  };
38
38
  export declare function saveGameTablesResult(master: GameMaster, connection: Connection, gameResultRepository: GameResultRepository, usersRepository: UsersRepository, saveNewBalance: boolean): Promise<void>;
39
39
  export declare function saveTournamentResult(master: TournamentMaster, connection: Connection, tournamentRepository: TournamentManyTablesRoomsRepository | TournamentOneTableRoomsRepository, usersRepository: UsersRepository): Promise<void>;
40
+ export declare function isUpdateTounrmanentRoomEvent(event: BaseGameEvent): GameTournamentPlayerLeavedTheTournamentEvent | null;
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getGameTableResults = getGameTableResults;
4
4
  exports.saveGameTablesResult = saveGameTablesResult;
5
5
  exports.saveTournamentResult = saveTournamentResult;
6
+ exports.isUpdateTounrmanentRoomEvent = isUpdateTounrmanentRoomEvent;
7
+ const jp_ms_common_engine_1 = require("jp.ms.common.engine");
6
8
  function getGameTableResults(master) {
7
9
  return {
8
10
  gameType: master.getRoom().getGameType(),
@@ -72,7 +74,7 @@ async function saveTournamentResult(master, connection, tournamentRepository, us
72
74
  levelAdding: 0,
73
75
  };
74
76
  });
75
- const session = await this.connection.startSession();
77
+ const session = await connection.startSession();
76
78
  session.startTransaction();
77
79
  try {
78
80
  await usersRepository.saveGameResult(userTournamentResult);
@@ -87,4 +89,15 @@ async function saveTournamentResult(master, connection, tournamentRepository, us
87
89
  await session.endSession();
88
90
  }
89
91
  }
92
+ function isUpdateTounrmanentRoomEvent(event) {
93
+ if (event instanceof jp_ms_common_engine_1.GameTournamentPlayerJoinedTheTournamentEvent &&
94
+ event instanceof jp_ms_common_engine_1.GameTournamentPlayerLeavedTheTournamentEvent &&
95
+ event instanceof jp_ms_common_engine_1.GameTournamentCancelledEvent &&
96
+ event instanceof jp_ms_common_engine_1.GameTournamentWaitedEvent &&
97
+ event instanceof jp_ms_common_engine_1.GameTournamentStartedEvent &&
98
+ event instanceof jp_ms_common_engine_1.GameTournamentFinishedEvent) {
99
+ return event;
100
+ }
101
+ return null;
102
+ }
90
103
  //# sourceMappingURL=game-table-result.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"game-table-result.js","sourceRoot":"","sources":["../../src/utils/game-table-result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"game-table-result.js","sourceRoot":"","sources":["../../src/utils/game-table-result.ts"],"names":[],"mappings":"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"}
@@ -1 +1,2 @@
1
1
  export { TournamentBuyTicketDialogView } from './tournament-buy-ticket-dialog.view';
2
+ export { SimpleRoomConfirmExitDialogView } from './simple-room-conifrm-exit-dialog.view';
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TournamentBuyTicketDialogView = void 0;
3
+ exports.SimpleRoomConfirmExitDialogView = exports.TournamentBuyTicketDialogView = void 0;
4
4
  var tournament_buy_ticket_dialog_view_1 = require("./tournament-buy-ticket-dialog.view");
5
5
  Object.defineProperty(exports, "TournamentBuyTicketDialogView", { enumerable: true, get: function () { return tournament_buy_ticket_dialog_view_1.TournamentBuyTicketDialogView; } });
6
+ var simple_room_conifrm_exit_dialog_view_1 = require("./simple-room-conifrm-exit-dialog.view");
7
+ Object.defineProperty(exports, "SimpleRoomConfirmExitDialogView", { enumerable: true, get: function () { return simple_room_conifrm_exit_dialog_view_1.SimpleRoomConfirmExitDialogView; } });
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/views/index.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AAA3E,kJAAA,6BAA6B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/views/index.ts"],"names":[],"mappings":";;;AAAA,yFAAoF;AAA3E,kJAAA,6BAA6B,OAAA;AACtC,+FAAyF;AAAhF,uJAAA,+BAA+B,OAAA"}
@@ -0,0 +1,4 @@
1
+ import { UniversalScreenDialogView, StandardDialogComponent } from "jp.common.models";
2
+ export declare class SimpleRoomConfirmExitDialogView extends UniversalScreenDialogView {
3
+ build(): StandardDialogComponent;
4
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SimpleRoomConfirmExitDialogView = void 0;
4
+ const jp_common_models_1 = require("jp.common.models");
5
+ class SimpleRoomConfirmExitDialogView extends jp_common_models_1.UniversalScreenDialogView {
6
+ build() {
7
+ return new jp_common_models_1.StandardDialogComponent(jp_common_models_1.AppScreenDialogIdEnum.DIALOG_SIMPLE_ROOM_CONFIRM_EXIT, this.localeService.t('common.room.screen.dialog.confirm.exit.game.title', { lang: this.lang }), this.localeService.t('common.room.screen.dialog.confirm.exit.game.message', { lang: this.lang }), new jp_common_models_1.FullButtonsButtonsComponent(new jp_common_models_1.TextButtonComponent(this.localeService.t('common.room.screen.dialog.confirm.exit.game.ok', { lang: this.lang })), new jp_common_models_1.TextButtonComponent(this.localeService.t('common.room.screen.dialog.confirm.exit.game.cancel', { lang: this.lang }))));
8
+ }
9
+ }
10
+ exports.SimpleRoomConfirmExitDialogView = SimpleRoomConfirmExitDialogView;
11
+ //# sourceMappingURL=simple-room-conifrm-exit-dialog.view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-room-conifrm-exit-dialog.view.js","sourceRoot":"","sources":["../../src/views/simple-room-conifrm-exit-dialog.view.ts"],"names":[],"mappings":";;;AAAA,uDAM0B;AAE1B,MAAa,+BAAgC,SAAQ,4CAAyB;IAC1E,KAAK;QACD,OAAO,IAAI,0CAAuB,CAC9B,wCAAqB,CAAC,+BAA+B,EACrD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,mDAAmD,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAC9F,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,qDAAqD,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAChG,IAAI,8CAA2B,CAC3B,IAAI,sCAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,gDAAgD,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EACpH,IAAI,sCAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,oDAAoD,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAC3H,CACJ,CAAC;IACN,CAAC;CACJ;AAZD,0EAYC"}
@@ -1,4 +1,4 @@
1
- import { UniversalScreenDialogView, AppScreenDialog } from "jp.common.models";
1
+ import { UniversalScreenDialogView, StandardDialogComponent } from "jp.common.models";
2
2
  export declare class TournamentBuyTicketDialogView extends UniversalScreenDialogView {
3
- build(): AppScreenDialog;
3
+ build(): StandardDialogComponent;
4
4
  }
@@ -4,7 +4,7 @@ exports.TournamentBuyTicketDialogView = void 0;
4
4
  const jp_common_models_1 = require("jp.common.models");
5
5
  class TournamentBuyTicketDialogView extends jp_common_models_1.UniversalScreenDialogView {
6
6
  build() {
7
- return jp_common_models_1.AppScreenDialog.CreateStandardDialog(jp_common_models_1.AppScreenDialogIdEnum.DIALOG_TOURNAMENT_BUY_TICKET, this.localeService.t('common.rooms.screen.buyTicket.title', { lang: this.lang }), this.localeService.t('common.rooms.screen.buyTicket.description', { lang: this.lang }), jp_common_models_1.AppScreenSectionButtons.CreateFullButtonSection(jp_common_models_1.AppScreenSectionButton.CreateTextButton('Ok'), jp_common_models_1.AppScreenSectionButton.CreateTextButton('Cancel')));
7
+ return new jp_common_models_1.StandardDialogComponent(jp_common_models_1.AppScreenDialogIdEnum.DIALOG_TOURNAMENT_BUY_TICKET, this.localeService.t('common.rooms.screen.buyTicket.title', { lang: this.lang }), this.localeService.t('common.rooms.screen.buyTicket.description', { lang: this.lang }), new jp_common_models_1.FullButtonsButtonsComponent(new jp_common_models_1.TextButtonComponent(this.localeService.t('common.rooms.screen.buyTicket.button.ok', { lang: this.lang })), new jp_common_models_1.TextButtonComponent(this.localeService.t('common.rooms.screen.buyTicket.button.cancel', { lang: this.lang }))));
8
8
  }
9
9
  }
10
10
  exports.TournamentBuyTicketDialogView = TournamentBuyTicketDialogView;
@@ -1 +1 @@
1
- {"version":3,"file":"tournament-buy-ticket-dialog.view.js","sourceRoot":"","sources":["../../src/views/tournament-buy-ticket-dialog.view.ts"],"names":[],"mappings":";;;AAAA,uDAM2B;AAE3B,MAAa,6BAA8B,SAAQ,4CAAyB;IACxE,KAAK;QACD,OAAO,kCAAe,CAAC,oBAAoB,CACvC,wCAAqB,CAAC,4BAA4B,EAClD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,qCAAqC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAChF,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,2CAA2C,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EACtF,0CAAuB,CAAC,uBAAuB,CAC3C,yCAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAC7C,yCAAsB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CACpD,CACJ,CAAC;IACN,CAAC;CACJ;AAZD,sEAYC"}
1
+ {"version":3,"file":"tournament-buy-ticket-dialog.view.js","sourceRoot":"","sources":["../../src/views/tournament-buy-ticket-dialog.view.ts"],"names":[],"mappings":";;;AAAA,uDAM0B;AAE1B,MAAa,6BAA8B,SAAQ,4CAAyB;IACxE,KAAK;QACD,OAAO,IAAI,0CAAuB,CAC9B,wCAAqB,CAAC,4BAA4B,EAClD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,qCAAqC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAChF,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,2CAA2C,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EACtF,IAAI,8CAA2B,CAC3B,IAAI,sCAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,yCAAyC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,EAC7G,IAAI,sCAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,6CAA6C,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CACpH,CACJ,CAAC;IACN,CAAC;CACJ;AAZD,sEAYC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jp.ms.common.modules",
3
- "version": "1.0.23",
3
+ "version": "1.0.25",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,10 +13,10 @@
13
13
  "@nestjs/mongoose": "11.0.4",
14
14
  "@nestjs/websockets": "11.1.9",
15
15
  "dayjs": "1.11.18",
16
- "jp.common.models": "1.1.6",
16
+ "jp.common.models": "file:../jp.common.models",
17
17
  "jp.common.utils": "1.0.4",
18
- "jp.db.schemas": "2.2.2",
19
- "jp.ms.common.engine": "3.0.8",
18
+ "jp.db.schemas": "file:../jp.ms.common.schemas",
19
+ "jp.ms.common.engine": "file:../jp.ms.common.engine",
20
20
  "mongoose": "9.1.5",
21
21
  "nestjs-i18n": "10.5.1",
22
22
  "node-schedule": "2.1.1",
@@ -12,15 +12,18 @@ import {
12
12
  BaseTableGameStateSummary,
13
13
  BaseTableGameSummaryItem,
14
14
  BaseTableGameStateMovesPanel,
15
+ IAppScreenDialog,
15
16
  } from 'jp.common.models';
16
17
  import { GameMaster, GamePlayer } from 'jp.ms.common.engine';
17
- import { formatChips, getPropsFromObject } from 'jp.common.utils';
18
+ import { formatChips, getPropsFromObject, replacePattern } from 'jp.common.utils';
19
+
20
+ import { SimpleRoomConfirmExitDialogView } from '../views'
18
21
 
19
22
  export abstract class BaseTableGameStateAdapter {
20
23
  private readonly _master: GameMaster;
21
24
  private readonly _currentPlayer: GamePlayer;
22
25
 
23
- constructor (master: GameMaster, currentPlayer: GamePlayer) {
26
+ constructor(master: GameMaster, currentPlayer: GamePlayer) {
24
27
  this._master = master;
25
28
  this._currentPlayer = currentPlayer;
26
29
  }
@@ -53,6 +56,10 @@ export abstract class BaseTableGameStateAdapter {
53
56
  return this._master.getRoom().getId();
54
57
  }
55
58
 
59
+ getTableTitle (): string {
60
+ return this._master.getTable().getTitleWithNumber(this.lang);
61
+ }
62
+
56
63
  getTableId (): string {
57
64
  return this._master.getTable().getId();
58
65
  }
@@ -199,9 +206,9 @@ export abstract class BaseTableGameStateAdapter {
199
206
  summary.list.push(BaseTableGameSummaryItem.newTitleMdItem(
200
207
  'pot',
201
208
  this.t('room.screen.summary.pot', {
202
- lang: this.lang,
203
- args: { POT: formatChips(this.getMaster()?.getGameRound()?.getPot() ?? 0, this.lang, true) },
204
- },
209
+ lang: this.lang,
210
+ args: { POT: formatChips(this.getMaster()?.getGameRound()?.getPot() ?? 0, this.lang, true) },
211
+ },
205
212
  ),
206
213
  ));
207
214
 
@@ -237,6 +244,15 @@ export abstract class BaseTableGameStateAdapter {
237
244
  return summary;
238
245
  }
239
246
 
247
+ getConfirmExitDialog (): IAppScreenDialog | undefined {
248
+ if (this._currentPlayer.isPlayer()) {
249
+ return new SimpleRoomConfirmExitDialogView(
250
+ this._master.getRoom().getLocaleService(),
251
+ this.lang
252
+ ).build();
253
+ }
254
+ }
255
+
240
256
  getState (): IBaseTableGameState {
241
257
  return {
242
258
  roomId: this.getRoomId(),
@@ -249,6 +265,8 @@ export abstract class BaseTableGameStateAdapter {
249
265
  summary: this.getSummary(),
250
266
  movesPanel: this.getMovesPanel(),
251
267
  extraButtons: this.getExtraButtons(),
268
+ tableTitle: this.getTableTitle(),
269
+ confirmExitDialog: this.getConfirmExitDialog(),
252
270
  }
253
271
  }
254
272
  }
@@ -3,6 +3,8 @@ import {
3
3
  ICardPlayerState,
4
4
  CardsPanelState,
5
5
  ICardsPanelState,
6
+ ICardPairSlotState,
7
+ CardPairSlotState,
6
8
  } from 'jp.common.models';
7
9
  import { CardsGameMaster, CardsPlayer } from 'jp.ms.common.engine';
8
10
 
@@ -28,8 +30,16 @@ export abstract class CardTableGameStateAdapter extends BaseTableGameStateAdapte
28
30
  return false;
29
31
  }
30
32
 
31
- getCardsPanelBackdropVisible (): boolean {
32
- return false;
33
+ getCardsPanelEnableDragging (): boolean {
34
+ return this.getCurrentPlayer().isActivePlayer();
35
+ }
36
+
37
+ getCardsPanelDescription (): string {
38
+ if (this.getCurrentPlayer().isActivePlayer()) {
39
+ return this.t('room.screen.yours.player.turn.timeout', { lang: this.lang });
40
+ }
41
+
42
+ return '';
33
43
  }
34
44
 
35
45
  getCardsPanel (): ICardsPanelState {
@@ -37,17 +47,31 @@ export abstract class CardTableGameStateAdapter extends BaseTableGameStateAdapte
37
47
  this.getCardsPanelIsOpen(),
38
48
  this.getPlayerActions(),
39
49
  this.getPlayerCards(),
40
- this.getCardsPanelBackdropVisible(),
50
+ this.getCardsPanelEnableDragging(),
51
+ this.getCardsPanelDescription(),
41
52
  );
42
53
  }
43
54
 
55
+ getSlots (): Array<ICardPairSlotState> {
56
+ const slots = this.getMaster<CardsGameMaster>().getGameCardPairSlots().getSlots()
57
+ .map((item) => new CardPairSlotState(
58
+ item.id,
59
+ item.bottom,
60
+ item.top,
61
+ item.activated,
62
+ this.getCurrentPlayer().isActivePlayer() ? item.disabled : true,
63
+ ));
64
+
65
+ return slots;
66
+ }
67
+
44
68
  getState (): ICardTableGameState {
45
69
  return {
46
70
  ...super.getState(),
47
71
  players: this.getPlayers(),
48
72
  baseCard: this.getMaster<CardsGameMaster>().getGameBaseCard(),
49
73
  gameCards: this.getMaster<CardsGameMaster>().getGameCards(),
50
- gameCardsPair: this.getMaster<CardsGameMaster>().getGameCardPairSlots().getSlots(),
74
+ gameCardsPair: this.getSlots(),
51
75
  cardsPanel: this.getCardsPanel(),
52
76
  };
53
77
  }
@@ -0,0 +1,3 @@
1
+ import { PlayerCheckStateDto } from './player-check-state.dto';
2
+
3
+ export class FindFreeTableDto extends PlayerCheckStateDto { }
@@ -1 +1,2 @@
1
1
  export { PlayerCheckStateDto } from './player-check-state.dto';
2
+ export { FindFreeTableDto } from './find-free-table.dto';
@@ -3,6 +3,8 @@ import { IsNumber, IsString, ValidateNested } from 'class-validator';
3
3
  import { IBaseTableGameState } from 'jp.common.models';
4
4
  import { ApiProperty } from '@nestjs/swagger';
5
5
 
6
+ import { AppScreenDialogDto } from '../../app-screen/app-screen-dialog.dto';
7
+
6
8
  import { BaseTableSummaryDto } from './base-table-summary.dto';
7
9
  import { BaseTableMovesPanelDto } from './base-table-moves-panel.dto';
8
10
 
@@ -76,4 +78,18 @@ export class BaseTableGameStateDto implements IBaseTableGameState {
76
78
  @Type(() => BaseTableMovesPanelDto)
77
79
  @Expose()
78
80
  movesPanel: BaseTableMovesPanelDto;
81
+
82
+ @ApiProperty({
83
+ description: 'Table title',
84
+ required: true,
85
+ type: String,
86
+ })
87
+ @Expose()
88
+ @IsString()
89
+ tableTitle: string;
90
+
91
+ @ValidateNested()
92
+ @Type(() => AppScreenDialogDto)
93
+ @Expose()
94
+ confirmExitDialog?: AppScreenDialogDto;
79
95
  }
@@ -1,5 +1,5 @@
1
1
  import { Expose, Type } from 'class-transformer';
2
- import { IsArray, IsBoolean, ValidateNested } from 'class-validator';
2
+ import { IsArray, IsBoolean, IsString, ValidateNested } from 'class-validator';
3
3
  import { ICardsPanelState } from 'jp.common.models';
4
4
  import { ApiProperty } from '@nestjs/swagger';
5
5
 
@@ -18,13 +18,13 @@ export class CardsPanelDto implements ICardsPanelState {
18
18
  isOpen: boolean;
19
19
 
20
20
  @ApiProperty({
21
- description: 'backdropVisible',
21
+ description: 'enableDragging',
22
22
  required: true,
23
23
  type: Boolean,
24
24
  })
25
25
  @Expose()
26
26
  @IsBoolean()
27
- backdropVisible: boolean;
27
+ enableDragging: boolean;
28
28
 
29
29
  @IsArray()
30
30
  @ValidateNested({ each: true })
@@ -37,4 +37,13 @@ export class CardsPanelDto implements ICardsPanelState {
37
37
  @Type(() => CardDto)
38
38
  @Expose()
39
39
  cards: Array<CardDto>;
40
+
41
+ @ApiProperty({
42
+ description: 'description',
43
+ required: true,
44
+ type: String,
45
+ })
46
+ @Expose()
47
+ @IsString()
48
+ description: string;
40
49
  }
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@nestjs/common';
2
- import { GameRoom, ManyTablesTournamentRoom, OneTableTournamentRoom } from 'jp.ms.common.engine';
2
+ import { GameRoom, ManyTablesTournamentRoom, OneTableTournamentRoom, TournamentMaster } from 'jp.ms.common.engine';
3
3
 
4
4
  import { SimpleRoomsManagerService } from '../simple-rooms-manager/simple-rooms-manager.service';
5
5
  import { TournamentOneTableRoomsManagerService } from '../tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service';
@@ -79,10 +79,10 @@ export class AntiFreezeSystemService {
79
79
  if (item.count === checkCount) {
80
80
  if (item.room instanceof OneTableTournamentRoom) {
81
81
  const room = this.oneTableRoomsManagerService.getRoomByTableId(item.tableId);
82
- room?.getTournamentMaster().cancelTournament();
82
+ room?.getRoomMaster<TournamentMaster>().cancelTournament();
83
83
  } else if (item.room instanceof ManyTablesTournamentRoom) {
84
84
  const room = this.manyTablesRoomsManagerService.getRoomByTableId(item.tableId)
85
- room?.getTournamentMaster().cancelTournament();
85
+ room?.getRoomMaster<TournamentMaster>().cancelTournament();
86
86
  } else {
87
87
  this.simpleRoomsManagerService.getRoomByTableId(item.tableId)?.restartTable(item.tableId);
88
88
  }
@@ -9,7 +9,10 @@ import {
9
9
  UsersRepository,
10
10
  AchievementRepository,
11
11
  Achievement,
12
- AchievementSchema
12
+ AchievementSchema,
13
+ UsersAchievement,
14
+ UsersAchievementSchema,
15
+ UsersAchievementsRepository,
13
16
  } from 'jp.db.schemas';
14
17
  import {
15
18
  BaseAppEvent,
@@ -41,11 +44,13 @@ import { PlayersManagerService } from '../players-manager';
41
44
  MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
42
45
  MongooseModule.forFeature([{ name: ActivityLog.name, schema: ActivityLogSchema }]),
43
46
  MongooseModule.forFeature([{ name: Achievement.name, schema: AchievementSchema }]),
47
+ MongooseModule.forFeature([{ name: UsersAchievement.name, schema: UsersAchievementSchema }]),
44
48
  ],
45
49
  providers: [
46
50
  UsersRepository,
47
51
  ActivityLogRepository,
48
52
  AchievementRepository,
53
+ UsersAchievementsRepository,
49
54
  EventsBusAppSubscribeService,
50
55
  ],
51
56
  })
@@ -56,19 +61,21 @@ export abstract class BaseAchievementsModule {
56
61
  protected readonly usersRepository: UsersRepository,
57
62
  protected readonly activityLogRepository: ActivityLogRepository,
58
63
  protected readonly achievementRepository: AchievementRepository,
64
+ protected readonly usersAchievementRepository: UsersAchievementsRepository,
59
65
  ) {
60
66
  }
61
67
 
62
- async onModuleInit() {
68
+ async onModuleInit () {
63
69
  this.eventsBusAppSubscribeService.subscribe(this.onHandleAppEvent);
64
70
  }
65
71
 
66
- protected async onHandleAppEvent(event: BaseAppEvent) {
72
+ protected async onHandleAppEvent (event: BaseAppEvent) {
67
73
  if (event instanceof BaseUserAppEvent) {
68
74
  const userId = event.userId;
69
75
  const player = this.playersManager.getPlayerById(userId);
70
76
  const foundUser = await this.usersRepository.findById(userId);
71
77
  const allAchievements: Array<Achievement> = await this.achievementRepository.findAchievements();
78
+ const usersAchievements: Array<UsersAchievement> = await this.usersAchievementRepository.findAchivementsByUserId(userId);
72
79
 
73
80
  if (!player || !foundUser) {
74
81
  throw new InternalServerErrorException();
@@ -77,83 +84,98 @@ export abstract class BaseAchievementsModule {
77
84
  if (event instanceof UserGotNewLevelAppEvent) {
78
85
  // TODO подумать куда перенести LEVEL UP
79
86
  player.sendMessage(new SnackbarSendToPlayerWsEvent(
87
+ event.game,
80
88
  AppScreenIconEnum.ARROW_UPWARD,
81
89
  'level up',
82
90
  'buttonText'
83
91
  ));
84
92
 
85
- if (foundUser.hasNoAchievement(GotLevel3Achievement.code)) {
93
+ if (this.userHasNoAchievement(usersAchievements, GotLevel3Achievement.code)) {
86
94
  if (new GotLevel3Achievement(event.newLevel).userGotAchievement()) {
87
- this.giveAchievement(allAchievements, GotLevel3Achievement.code, userId);
95
+ this.giveAchievement(allAchievements, GotLevel3Achievement.code, foundUser, event.game);
88
96
  }
89
97
  }
90
98
 
91
- if (foundUser.hasNoAchievement(GotLevel10Achievement.code)) {
99
+ if (this.userHasNoAchievement(usersAchievements, GotLevel10Achievement.code)) {
92
100
  if (new GotLevel10Achievement(event.newLevel).userGotAchievement()) {
93
- this.giveAchievement(allAchievements, GotLevel10Achievement.code, userId);
101
+ this.giveAchievement(allAchievements, GotLevel10Achievement.code, foundUser, event.game);
94
102
  }
95
103
  }
96
104
 
97
105
  } else if (event instanceof UserPlayedTheGameAppEvent) {
98
- if (foundUser.hasNoAchievement(Playd10GamesAchievement.code)) {
106
+
107
+ if (this.userHasNoAchievement(usersAchievements, Playd10GamesAchievement.code)) {
99
108
  const playdGamesCount = await this.activityLogRepository.getUserPlayedGamesCount(userId);
100
109
 
101
110
  if (new Playd10GamesAchievement(playdGamesCount).userGotAchievement()) {
102
- this.giveAchievement(allAchievements, Playd10GamesAchievement.code, userId);
111
+ this.giveAchievement(allAchievements, Playd10GamesAchievement.code, foundUser, event.game);
103
112
  }
104
113
  }
105
114
  } else if (event instanceof UserWonTheGameAppEvent) {
106
- if (foundUser.hasNoAchievement(Won3GamesAchievement.code)) {
115
+ if (this.userHasNoAchievement(usersAchievements, Won3GamesAchievement.code)) {
107
116
  const wonGamesCount = await this.activityLogRepository.getUserWonGamesCount(userId);
108
117
 
109
118
  if (new Won3GamesAchievement(wonGamesCount).userGotAchievement()) {
110
- this.giveAchievement(allAchievements, Won3GamesAchievement.code, userId);
119
+ this.giveAchievement(allAchievements, Won3GamesAchievement.code, foundUser, event.game);
111
120
  }
112
121
  }
113
122
 
114
- if (foundUser.hasNoAchievement(Won3ProfiAchievement.code)) {
123
+ if (this.userHasNoAchievement(usersAchievements, Won3ProfiAchievement.code)) {
115
124
  const wonProfiCount = await this.activityLogRepository.getUserWonProfiCount(userId);
116
125
  if (new Won3ProfiAchievement(wonProfiCount).userGotAchievement()) {
117
- this.giveAchievement(allAchievements, Won3ProfiAchievement.code, userId);
126
+ this.giveAchievement(allAchievements, Won3ProfiAchievement.code, foundUser, event.game);
118
127
  }
119
128
  }
120
129
 
121
- if (foundUser.hasNoAchievement(EarnOneMillionAchievement.code)) {
130
+ if (this.userHasNoAchievement(usersAchievements, EarnOneMillionAchievement.code)) {
122
131
  if (new EarnOneMillionAchievement(foundUser.balance).userGotAchievement()) {
123
- this.giveAchievement(allAchievements, EarnOneMillionAchievement.code, userId);
132
+ this.giveAchievement(allAchievements, EarnOneMillionAchievement.code, foundUser, event.game);
124
133
  }
125
134
  }
126
135
  } else if (event instanceof UserWonOneTableTournamentAppEvent) {
127
- if (foundUser.hasNoAchievement(WonOneTableTournament3TimesAchievement.code)) {
136
+ if (this.userHasNoAchievement(usersAchievements, WonOneTableTournament3TimesAchievement.code)) {
128
137
  const wonFastTournamentCount = await this.activityLogRepository.getUserWonOneTableTournamentCount(userId);
129
138
  if (new WonOneTableTournament3TimesAchievement(wonFastTournamentCount).userGotAchievement()) {
130
- this.giveAchievement(allAchievements, WonOneTableTournament3TimesAchievement.code, userId);
139
+ this.giveAchievement(allAchievements, WonOneTableTournament3TimesAchievement.code, foundUser, event.game);
131
140
  }
132
141
  }
133
142
  } else if (event instanceof UserWonManyTablesTournamentAppEvent) {
134
- if (foundUser.hasNoAchievement(Take1PlaceOnManyTablesTournamentAchievement.code)) {
143
+ if (this.userHasNoAchievement(usersAchievements, Take1PlaceOnManyTablesTournamentAchievement.code)) {
135
144
  if (new Take1PlaceOnManyTablesTournamentAchievement(event.rank)) {
136
- this.giveAchievement(allAchievements, Take1PlaceOnManyTablesTournamentAchievement.code, userId);
145
+ this.giveAchievement(allAchievements, Take1PlaceOnManyTablesTournamentAchievement.code, foundUser, event.game);
137
146
  }
138
147
  }
139
148
 
140
- if (foundUser.hasNoAchievement(Take2Or3PlaceOnManyTablesTournamentAchievement.code)) {
149
+ if (this.userHasNoAchievement(usersAchievements, Take2Or3PlaceOnManyTablesTournamentAchievement.code)) {
141
150
  if (new Take2Or3PlaceOnManyTablesTournamentAchievement(event.rank)) {
142
- this.giveAchievement(allAchievements, Take2Or3PlaceOnManyTablesTournamentAchievement.code, userId);
151
+ this.giveAchievement(allAchievements, Take2Or3PlaceOnManyTablesTournamentAchievement.code, foundUser, event.game);
143
152
  }
144
153
  }
145
154
  }
146
155
  }
147
156
  }
148
157
 
149
- protected async giveAchievement(allAchievements: Array<Achievement>, achievementCode: string, userId: string) {
158
+ protected userHasNoAchievement (usersAchievements: Array<UsersAchievement>, achievementCode: string) {
159
+ return !usersAchievements.find((item) => item.achievementCode === achievementCode);
160
+ }
161
+
162
+ protected async giveAchievement (allAchievements: Array<Achievement>, achievementCode: string, user: User, game: string) {
150
163
  const foundAchievement = allAchievements.find((item) => item.code === achievementCode);
151
- const player = this.playersManager.getPlayerById(userId);
164
+ const player = this.playersManager.getPlayerById(user.userId);
152
165
 
153
166
  if (foundAchievement && player) {
154
- await this.usersRepository.addAchievement(userId, achievementCode);
167
+ await this.usersAchievementRepository.addUsersAchievement(
168
+ user.userId,
169
+ user.fullName,
170
+ foundAchievement.achievementId,
171
+ foundAchievement.title,
172
+ foundAchievement.code,
173
+ foundAchievement.prize,
174
+ '',
175
+ );
155
176
 
156
177
  player.sendMessage(new SnackbarSendToPlayerWsEvent(
178
+ game,
157
179
  AppScreenIconEnum.EMOJI_EVENTS,
158
180
  foundAchievement.title,
159
181
  foundAchievement.description
@@ -28,7 +28,7 @@ export class EventsBusMainTablesSubscribeService {
28
28
  this.roomStatesSubject.next(event);
29
29
  }
30
30
 
31
- subscribe(onHandleStatusRoomChange: () => void) {
31
+ subscribe(onHandleStatusRoomChange: (event: RoomUpdateStateEvent) => void) {
32
32
  this.roomStatesSubject.subscribe(onHandleStatusRoomChange);
33
33
  }
34
34
  }
@@ -40,7 +40,7 @@ export class MainTablesListScreenView extends UniversalScreenView {
40
40
  this.manyTablesTournamentRooms = manyTablesTournamentRooms;
41
41
  }
42
42
 
43
- build(): IAppScreen {
43
+ build (): IAppScreen {
44
44
  const oneTableTournamentsCardList = this.oneTableTournamentRooms.map((room) =>
45
45
  AppScreenSectionListItem.CreateCardListItemMini(
46
46
  room.getId(),
@@ -67,7 +67,7 @@ export class MainTablesListScreenView extends UniversalScreenView {
67
67
  const simpleRoomsTableCardList = this.simpleRooms.reduce<Array<AppScreenSectionListItem>>((result, room) => {
68
68
  const list = room.getTables().map((table) => AppScreenSectionListItem.CreateCardListItemMini(
69
69
  table.getId(),
70
- replacePattern(table.getTitle(this.lang), { NUMBER: table.getNumber().toString() }),
70
+ table.getTitleWithNumber(this.lang),
71
71
  replacePattern(table.getSubtitle(this.lang), {
72
72
  HALF_BET: table.getHalfBet().toString(),
73
73
  BET: table.getBet().toString()
@@ -1,7 +1,7 @@
1
1
  import { Controller, Get, Headers } from '@nestjs/common';
2
2
  import { IAppHeaders, IBaseAppScreen } from 'jp.common.models';
3
3
 
4
- import { PlayerCheckStateDto } from '../../dto';
4
+ import { PlayerCheckStateDto, FindFreeTableDto } from '../../dto';
5
5
 
6
6
  import { MainService } from './main.service';
7
7
 
@@ -11,7 +11,7 @@ export class MainController {
11
11
  private readonly mainService: MainService,
12
12
  ) { }
13
13
 
14
- @Get('player/check/state')
14
+ @Get('player_check_state')
15
15
  checkState(@Headers() headers: IAppHeaders): Promise<PlayerCheckStateDto> {
16
16
  return this.mainService.playerCheckState(headers.client_auth_token, headers.client_game);
17
17
  }
@@ -31,8 +31,8 @@ export class MainController {
31
31
  return this.mainService.unsubscribeFromTablesScreen(headers.client_language);
32
32
  }
33
33
 
34
- @Get('findFreeTable')
35
- findFreeTable(@Headers() headers: IAppHeaders) {
34
+ @Get('find_free_table')
35
+ findFreeTable(@Headers() headers: IAppHeaders): FindFreeTableDto {
36
36
  return this.mainService.findFreeTable(headers.client_auth_token);
37
37
  }
38
38
  }