jp.ms.common.modules 1.0.28 → 1.0.30

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 (95) hide show
  1. package/dist/exception/error-code.enum.d.ts +4 -0
  2. package/dist/exception/error-code.enum.js +9 -0
  3. package/dist/exception/error-code.enum.js.map +1 -0
  4. package/dist/exception/global-exception-filter.d.ts +5 -0
  5. package/dist/exception/global-exception-filter.js +53 -0
  6. package/dist/exception/global-exception-filter.js.map +1 -0
  7. package/dist/exception/http-exception-wth-snackbar.d.ts +12 -0
  8. package/dist/exception/http-exception-wth-snackbar.js +17 -0
  9. package/dist/exception/http-exception-wth-snackbar.js.map +1 -0
  10. package/dist/exception/index.d.ts +4 -0
  11. package/dist/exception/index.js +12 -0
  12. package/dist/exception/index.js.map +1 -0
  13. package/dist/exception/not-enough-money-for-purchase.exception.d.ts +5 -0
  14. package/dist/exception/not-enough-money-for-purchase.exception.js +12 -0
  15. package/dist/exception/not-enough-money-for-purchase.exception.js.map +1 -0
  16. package/dist/exception/not-found-free-room-for-fast-game.exception.d.ts +5 -0
  17. package/dist/exception/not-found-free-room-for-fast-game.exception.js +12 -0
  18. package/dist/exception/not-found-free-room-for-fast-game.exception.js.map +1 -0
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/modules/events/events.gateway.js +1 -1
  23. package/dist/modules/events/events.gateway.js.map +1 -1
  24. package/dist/modules/main/main-tables-list-screen.view.d.ts +11 -1
  25. package/dist/modules/main/main-tables-list-screen.view.js +97 -14
  26. package/dist/modules/main/main-tables-list-screen.view.js.map +1 -1
  27. package/dist/modules/main/main.controller.d.ts +4 -3
  28. package/dist/modules/main/main.controller.js +15 -3
  29. package/dist/modules/main/main.controller.js.map +1 -1
  30. package/dist/modules/main/main.module.js +2 -2
  31. package/dist/modules/main/main.module.js.map +1 -1
  32. package/dist/modules/main/main.service.d.ts +5 -4
  33. package/dist/modules/main/main.service.js +38 -12
  34. package/dist/modules/main/main.service.js.map +1 -1
  35. package/dist/modules/many-tables-tournament/many-tables-tournament-status-screen.view.d.ts +4 -0
  36. package/dist/modules/many-tables-tournament/many-tables-tournament-status-screen.view.js +56 -4
  37. package/dist/modules/many-tables-tournament/many-tables-tournament-status-screen.view.js.map +1 -1
  38. package/dist/modules/many-tables-tournament/many-tables-tournament-tables-list-screen.view.js +3 -3
  39. package/dist/modules/many-tables-tournament/many-tables-tournament-tables-list-screen.view.js.map +1 -1
  40. package/dist/modules/many-tables-tournament/many-tables-tournament.controller.d.ts +3 -4
  41. package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js +5 -17
  42. package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js.map +1 -1
  43. package/dist/modules/many-tables-tournament/many-tables-tournament.service.d.ts +3 -4
  44. package/dist/modules/many-tables-tournament/many-tables-tournament.service.js +20 -27
  45. package/dist/modules/many-tables-tournament/many-tables-tournament.service.js.map +1 -1
  46. package/dist/modules/menu/menu.service.js +1 -2
  47. package/dist/modules/menu/menu.service.js.map +1 -1
  48. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.d.ts +1 -0
  49. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.js +18 -5
  50. package/dist/modules/one-table-tournament/one-table-tournament-status-screen.view.js.map +1 -1
  51. package/dist/modules/one-table-tournament/one-table-tournament.controller.js.map +1 -1
  52. package/dist/modules/one-table-tournament/one-table-tournament.service.js +1 -2
  53. package/dist/modules/one-table-tournament/one-table-tournament.service.js.map +1 -1
  54. package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js.map +1 -1
  55. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.module.d.ts +3 -1
  56. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.module.js +14 -3
  57. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.module.js.map +1 -1
  58. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.d.ts +4 -3
  59. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.js +49 -25
  60. package/dist/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.js.map +1 -1
  61. package/dist/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.js +9 -6
  62. package/dist/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.js.map +1 -1
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/dist/utils/game-table-result.d.ts +1 -2
  65. package/dist/utils/game-table-result.js +0 -13
  66. package/dist/utils/game-table-result.js.map +1 -1
  67. package/dist/views/tournament-buy-ticket-dialog.view.js +1 -1
  68. package/dist/views/tournament-buy-ticket-dialog.view.js.map +1 -1
  69. package/package.json +4 -4
  70. package/src/exception/error-code.enum.ts +4 -0
  71. package/src/exception/global-exception-filter.ts +50 -0
  72. package/src/exception/http-exception-wth-snackbar.ts +23 -0
  73. package/src/exception/index.ts +4 -0
  74. package/src/exception/not-enough-money-for-purchase.exception.ts +15 -0
  75. package/src/exception/not-found-free-room-for-fast-game.exception.ts +15 -0
  76. package/src/index.ts +1 -0
  77. package/src/modules/events/events.gateway.ts +1 -1
  78. package/src/modules/main/main-tables-list-screen.view.ts +177 -55
  79. package/src/modules/main/main.controller.ts +23 -10
  80. package/src/modules/main/main.module.ts +2 -2
  81. package/src/modules/main/main.service.ts +53 -19
  82. package/src/modules/many-tables-tournament/many-tables-tournament-status-screen.view.ts +97 -31
  83. package/src/modules/many-tables-tournament/many-tables-tournament-tables-list-screen.view.ts +25 -17
  84. package/src/modules/many-tables-tournament/many-tables-tournament.controller.ts +5 -14
  85. package/src/modules/many-tables-tournament/many-tables-tournament.service.ts +45 -57
  86. package/src/modules/menu/menu.service.ts +6 -9
  87. package/src/modules/one-table-tournament/one-table-tournament-status-screen.view.ts +43 -17
  88. package/src/modules/one-table-tournament/one-table-tournament.controller.ts +0 -1
  89. package/src/modules/one-table-tournament/one-table-tournament.service.ts +6 -9
  90. package/src/modules/simple-rooms-manager/simple-rooms-manager.service.ts +0 -2
  91. package/src/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.module.ts +17 -9
  92. package/src/modules/tournament-many-tables-rooms-manager/tournament-many-tables-rooms-manager.service.ts +57 -26
  93. package/src/modules/tournament-one-table-rooms-manager/tournament-one-table-rooms-manager.service.ts +10 -7
  94. package/src/utils/game-table-result.ts +1 -16
  95. package/src/views/tournament-buy-ticket-dialog.view.ts +4 -4
@@ -15,6 +15,7 @@ import {
15
15
  MiniCardSectionListItemComponent,
16
16
  UrlImageComponent,
17
17
  } from "jp.common.models";
18
+ import { formatChips } from "jp.common.utils";
18
19
  import { OneTableTournamentRoom, TournamentMaster } from "jp.ms.common.engine";
19
20
 
20
21
  export class OneTableTournamentStatusScreenView extends UniversalScreenView {
@@ -48,32 +49,57 @@ export class OneTableTournamentStatusScreenView extends UniversalScreenView {
48
49
  .addSection(
49
50
  new CardListSectionComponent(
50
51
  'id1',
51
- this.tournament.getParticipants().map((item) => (
52
- new MiniCardSectionListItemComponent(
53
- item.playerId,
54
- item.playerName,
55
- '',
56
- new UrlImageComponent(item.playerAvatarUrl),
57
- true,
58
- true,
59
- '',
60
- )
61
- ))
62
- ),
52
+ this.getPlayersList()
53
+ )
63
54
  );
64
55
  }
65
56
 
57
+ private getPlayersList (): Array<MiniCardSectionListItemComponent> {
58
+ if (this.tournament.getRoomMaster<TournamentMaster>().isFinish()) {
59
+ return this.tournament.getWinners().map((item) => (
60
+ new MiniCardSectionListItemComponent(
61
+ item.playerId,
62
+ item.playerName,
63
+ this.localeService.t('common.tournaments.status.screen.finish.description', {
64
+ lang: this.lang,
65
+ args: {
66
+ RANK: item.rank.toString(),
67
+ PRIZE: formatChips(item.profit, this.lang, true),
68
+ }
69
+ }),
70
+ new UrlImageComponent(item.playerAvatarUrl),
71
+ true,
72
+ true,
73
+ '',
74
+ )
75
+ ));
76
+ }
77
+
78
+ return this.tournament.getParticipants().map((item) => (
79
+ new MiniCardSectionListItemComponent(
80
+ item.playerId,
81
+ item.playerName,
82
+ '',
83
+ new UrlImageComponent(item.playerAvatarUrl),
84
+ true,
85
+ true,
86
+ '',
87
+ )
88
+ ));
89
+ }
90
+
66
91
  private getStatusHeader (): StatusHeaderSectionComponent {
67
- // TODO разобраться с участниками для туринар
68
- const foundPlayer = this.tournament.getParticipants().find((item) => item.playerId === this.playerId);
92
+ const foundPlayer = this.tournament.getParticipant(this.playerId)
69
93
 
70
94
  return new StatusHeaderSectionComponent(
71
95
  'status',
72
96
  this.getStatusDescription(),
73
97
  new IconImageComponent(this.getStatusIcon()),
74
- !foundPlayer ?
98
+ !foundPlayer && this.tournament.getRoomMaster<TournamentMaster>().isWaiting() ?
75
99
  new PrimaryButtonButtonsComponent(
76
- new TextButtonComponent('Join tournament')
100
+ new TextButtonComponent(
101
+ this.localeService.t('common.tournaments.screen.button.join.tournament', { lang: this.lang })
102
+ )
77
103
  ) : undefined,
78
104
  )
79
105
  }
@@ -92,7 +118,7 @@ export class OneTableTournamentStatusScreenView extends UniversalScreenView {
92
118
 
93
119
  private getStatusDescription (): string {
94
120
  if (this.tournament.getRoomMaster<TournamentMaster>().isCancelled()) {
95
- return this.localeService.t('common.tournaments.status.2', { lang: this.lang });
121
+ return this.localeService.t('common.tournaments.status.4', { lang: this.lang });
96
122
  } else if (this.tournament.getRoomMaster<TournamentMaster>().isFinish()) {
97
123
  return this.localeService.t('common.tournaments.status.3', { lang: this.lang });
98
124
  } else if (this.tournament.getRoomMaster<TournamentMaster>().isWaiting()) {
@@ -2,7 +2,6 @@ import { Body, Controller, Get, Param, Post, Headers, HttpStatus, HttpCode } fro
2
2
  import { IAppHeaders, IBaseAppScreen, IBaseMoveData, IBaseTableGameState } from 'jp.common.models';
3
3
 
4
4
  import { OneTableTournamentService } from './one-table-tournament.service';
5
- import { JoinTournamentDto } from '../../dto/common/join-tournament.dto';
6
5
 
7
6
  @Controller('tournament/one_table')
8
7
  export class OneTableTournamentController {
@@ -1,6 +1,5 @@
1
1
  import { Inject, Injectable, InternalServerErrorException } from '@nestjs/common';
2
2
  import {
3
- BaseAppScreen,
4
3
  IAppHeaders,
5
4
  IBaseAppScreen,
6
5
  IBaseMoveData,
@@ -32,14 +31,12 @@ export class OneTableTournamentService {
32
31
  }
33
32
 
34
33
  return new BaseAppScreenDto(
35
- new BaseAppScreen(
36
- new OneTableTournamentStatusScreenView(
37
- this.options.i18n,
38
- lang,
39
- tournament,
40
- playerId,
41
- ).build()
42
- )
34
+ new OneTableTournamentStatusScreenView(
35
+ this.options.i18n,
36
+ lang,
37
+ tournament,
38
+ playerId,
39
+ ).buildBS()
43
40
  );
44
41
  }
45
42
 
@@ -147,8 +147,6 @@ export class SimpleRoomsManagerService {
147
147
  localeService: this.options.i18n,
148
148
  startStrategy: new MinPlayersStartStrategy(),
149
149
  onRoomEvent: this.handleRoomEvent,
150
- // onRoomTableGameFinished: this.handleRoomTableGameFinished,
151
- // onRoomStatusUpdated: this.handleRoomStatusUpdated,
152
150
  } as GameRoomConfig;
153
151
  }
154
152
 
@@ -1,4 +1,4 @@
1
- import { DynamicModule, Global, Module, Provider } from '@nestjs/common';
1
+ import { DynamicModule, Global, Inject, Module, Provider } from '@nestjs/common';
2
2
  import { MongooseModule } from '@nestjs/mongoose';
3
3
  import {
4
4
  TournamentManyTablesRoom,
@@ -10,32 +10,37 @@ import {
10
10
  GameResult,
11
11
  GameResultSchema,
12
12
  GameResultRepository,
13
+ Purchase,
14
+ PurchaseSchema,
15
+ PurchaseRepository,
13
16
  } from 'jp.db.schemas';
14
17
 
15
18
  import { TournamentManyTablesRoomsManagerService } from './tournament-many-tables-rooms-manager.service';
16
- import {
17
- TournamentManyTablesRoomsManagerOptions,
18
- } from './tournament-many-tables-rooms-manager.interfaces';
19
+ import { TournamentManyTablesRoomsManagerOptions } from './tournament-many-tables-rooms-manager.interfaces';
19
20
  import { TOURNAMENT_MANY_TABLES_ROOMS_MANAGER_OPTIONS } from './tournament-many-tables-rooms-manager.constants';
21
+ import { TournamentManyTablesRoomsFactoryOptions } from './tournament-many-tables-rooms-manager.interfaces';
20
22
 
21
23
  @Global()
22
24
  @Module({
23
25
  imports: [
24
- MongooseModule.forFeature([{name: TournamentManyTablesRoom.name, schema: TournamentManyTablesRoomSchema}]),
25
- MongooseModule.forFeature([{name: User.name, schema: UserSchema}]),
26
- MongooseModule.forFeature([{name: GameResult.name, schema: GameResultSchema}]),
26
+ MongooseModule.forFeature([{ name: TournamentManyTablesRoom.name, schema: TournamentManyTablesRoomSchema }]),
27
+ MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),
28
+ MongooseModule.forFeature([{ name: Purchase.name, schema: PurchaseSchema }]),
29
+ MongooseModule.forFeature([{ name: GameResult.name, schema: GameResultSchema }]),
27
30
  ],
28
31
  providers: [
29
32
  TournamentManyTablesRoomsRepository,
30
33
  UsersRepository,
31
34
  TournamentManyTablesRoomsManagerService,
32
35
  GameResultRepository,
36
+ PurchaseRepository,
33
37
  ],
34
38
  exports: [TournamentManyTablesRoomsManagerService],
35
39
  })
36
40
  export class TournamentManyTablesRoomsManagerModule {
37
- constructor (
41
+ constructor(
38
42
  private readonly managerService: TournamentManyTablesRoomsManagerService,
43
+ @Inject(TOURNAMENT_MANY_TABLES_ROOMS_MANAGER_OPTIONS) private readonly options: TournamentManyTablesRoomsFactoryOptions,
39
44
  ) {
40
45
  }
41
46
 
@@ -54,7 +59,10 @@ export class TournamentManyTablesRoomsManagerModule {
54
59
  }
55
60
 
56
61
  async onModuleInit () {
57
- await this.managerService.runDailyTournamentJob();
62
+ const dailyTournamentScheduleJobEnabled = this.options.configService.get<string>('DAILY_TOURNAMENT_SCHEDULE_JOB_ENABLED');
63
+ if (dailyTournamentScheduleJobEnabled === 'true') {
64
+ await this.managerService.runDailyTournamentJob();
65
+ }
58
66
  await this.managerService.hydrateTournamentsFromDB();
59
67
  }
60
68
  }
@@ -1,4 +1,8 @@
1
- import { Inject, Injectable } from '@nestjs/common';
1
+ import { InjectConnection } from '@nestjs/mongoose';
2
+ import { Connection } from 'mongoose';
3
+ import dayjs from 'dayjs';
4
+ import schedule, { Job } from 'node-schedule';
5
+ import { Inject, Injectable, InternalServerErrorException } from '@nestjs/common';
2
6
  import {
3
7
  BaseGameEvent,
4
8
  GameMaster,
@@ -18,15 +22,11 @@ import {
18
22
  } from 'jp.ms.common.engine';
19
23
  import {
20
24
  GameResultRepository,
25
+ PurchaseRepository,
21
26
  TournamentManyTablesRoomDocument,
22
27
  TournamentManyTablesRoomsRepository,
23
28
  UsersRepository
24
29
  } from 'jp.db.schemas';
25
- import { InjectConnection } from '@nestjs/mongoose';
26
- import { Connection } from 'mongoose';
27
- import dayjs from 'dayjs';
28
- import schedule from 'node-schedule';
29
- import { Job } from 'node-schedule';
30
30
 
31
31
  import { saveGameTablesResult, saveTournamentResult } from '../../utils/game-table-result';
32
32
  import { JpLoggerService } from '../logger';
@@ -42,12 +42,13 @@ import { TournamentManyTablesRoomsFactoryOptions } from './tournament-many-table
42
42
  @Injectable()
43
43
  export class TournamentManyTablesRoomsManagerService {
44
44
  private readonly rooms: Map<string, ManyTablesTournamentRoom>;
45
- private createDailyTournamentJob: Job;
45
+ private createDailyTournamentJob: Job | null;
46
46
 
47
47
  constructor(
48
48
  private readonly tournamentRepository: TournamentManyTablesRoomsRepository,
49
49
  private readonly usersRepository: UsersRepository,
50
50
  private readonly gameResultRepository: GameResultRepository,
51
+ private readonly purchaseRepository: PurchaseRepository,
51
52
  private readonly eventsBusMainTablesSubscribeService: EventsBusMainTablesSubscribeService,
52
53
  private readonly eventsBusManyTablesTournamentSubscribeService: EventsBusManyTablesTournamentSubscribeService,
53
54
  @Inject(TOURNAMENT_MANY_TABLES_ROOMS_MANAGER_OPTIONS) private readonly options: TournamentManyTablesRoomsFactoryOptions,
@@ -55,6 +56,7 @@ export class TournamentManyTablesRoomsManagerService {
55
56
  @Inject() private readonly logger: JpLoggerService,
56
57
  ) {
57
58
  this.rooms = new Map<string, ManyTablesTournamentRoom>();
59
+ this.createDailyTournamentJob = null;
58
60
  }
59
61
 
60
62
  get gameType () {
@@ -89,7 +91,7 @@ export class TournamentManyTablesRoomsManagerService {
89
91
  }
90
92
 
91
93
  async hydrateTournamentsFromDB () {
92
- const templates = await this.tournamentRepository.findTournaments(this.gameType);
94
+ const templates = await this.tournamentRepository.findActualTournaments(this.gameType);
93
95
  templates.forEach((item) => {
94
96
  this.addRoom(this.options.createTournamentRoom(
95
97
  this.manyTablesTournamentDocumentToTournamentRoom(item)
@@ -134,18 +136,47 @@ export class TournamentManyTablesRoomsManagerService {
134
136
  }
135
137
 
136
138
  async buyTicket (tournamentId: string, player: GamePlayer) {
137
- // TODO списать деньги у игрока
138
- await this.tournamentRepository.addPlayerToParticipants(tournamentId, {
139
- playerId: player.id,
140
- playerAvatarUrl: player.avatarUrl,
141
- playerName: player.avatarUrl,
142
- });
139
+ const tournament = this.getRoomById(tournamentId);
140
+ const user = await this.usersRepository.findById(player.id);
141
+
142
+ if (!tournament || !user) {
143
+ throw new InternalServerErrorException();
144
+ }
145
+
146
+ const session = await this.connection.startSession();
147
+ session.startTransaction();
148
+
149
+ try {
150
+ player.decreaseBalance(tournament.getTicketPrice());
151
+ tournament.addParticipant(player);
152
+ this.purchaseRepository.addManyTablesTournamentTicketPurchase(
153
+ player.id,
154
+ player.fullName,
155
+ tournamentId,
156
+ tournament.getTicketPrice(),
157
+ tournament.getGameType(),
158
+ )
159
+ this.usersRepository.subtractFromBalance(player.id, tournament.getTicketPrice());
160
+
161
+ await this.tournamentRepository.addPlayerToParticipants(tournamentId, {
162
+ playerId: player.id,
163
+ playerAvatarUrl: player.avatarUrl,
164
+ playerName: player.fullName,
165
+ });
166
+
167
+ await session.commitTransaction();
168
+ } catch (error) {
169
+ await session.abortTransaction();
170
+ throw error;
171
+ } finally {
172
+ await session.endSession();
173
+ }
143
174
  }
144
175
 
145
176
  private manyTablesTournamentDocumentToTournamentRoom (tournamentDocument: TournamentManyTablesRoomDocument): ManyTablesTournamentRoomConfig {
146
177
  const restartGameTimeout = this.options.configService.get<number>('RESTART_GAME_TIMEOUT') || 0;
147
178
  const playersTurnTimeout = this.options.configService.get<number>('PLAYERS_TURN_TIMEOUT') || 0;
148
- const minPlayersForMergeTables = this.options.configService.get<number>('TOURNAMENT_MANY_TABLES_MIN_PLAYERS_FOR_MERGE_TABLES') || 0;
179
+ const minPlayersForMergeTables = this.options.configService.get<string>('TOURNAMENT_MANY_TABLES_MIN_PLAYERS_FOR_MERGE_TABLES');
149
180
 
150
181
  return {
151
182
  id: tournamentDocument.tournamentId,
@@ -163,21 +194,21 @@ export class TournamentManyTablesRoomsManagerService {
163
194
  scheduleDate: tournamentDocument.scheduleDate,
164
195
  turnTimeout: playersTurnTimeout,
165
196
  restartTimeout: restartGameTimeout,
166
- minPlayersForMergeTables: minPlayersForMergeTables,
197
+ minPlayersForMergeTables: parseInt(minPlayersForMergeTables ?? '0', 10),
167
198
  localeService: this.options.i18n,
168
199
  startStrategy: new NoStartStrategy(),
169
200
  onRoomEvent: this.handleRoomEvent,
170
- onRoomTableGameFinished: this.handleRoomTableGameFinished,
171
- onTournamentRoomStarted: this.handleTournamentRoomStarted,
172
- onTournamentRoomFinished: this.handleTournamentRoomFinished,
173
- onTournamentRoomCancelled: this.handleTournamentRoomCancelled,
174
- onRoomStatusUpdated: this.handleRoomStatusUpdated,
175
201
  tournamentPrizeTable: this.options.tournamentPrizeTable,
176
202
  tournamentInitialStatus: tournamentDocument.status,
203
+ tournamentWinners: tournamentDocument.winners,
204
+ maxParticipants: tournamentDocument.maxParticipants,
205
+ participants: tournamentDocument.participants,
177
206
  } as ManyTablesTournamentRoomConfig;
178
207
  }
179
208
 
180
209
  private handleRoomEvent = (event: BaseGameEvent) => {
210
+ this.logger.log(event.toLog());
211
+
181
212
  if (event instanceof GameTableFinishedEvent) {
182
213
  this.handleRoomTableGameFinished(event.master!!);
183
214
  } else if (event instanceof GameTournamentStartedEvent) {
@@ -187,11 +218,11 @@ export class TournamentManyTablesRoomsManagerService {
187
218
  } else if (event instanceof GameTournamentFinishedEvent) {
188
219
  this.handleTournamentRoomFinished(event.room.getRoomMaster());
189
220
  } else if (
190
- event instanceof GameTournamentPlayerJoinedTheTournamentEvent &&
191
- event instanceof GameTournamentPlayerLeavedTheTournamentEvent &&
192
- event instanceof GameTournamentCancelledEvent &&
193
- event instanceof GameTournamentWaitedEvent &&
194
- event instanceof GameTournamentStartedEvent &&
221
+ event instanceof GameTournamentPlayerJoinedTheTournamentEvent ||
222
+ event instanceof GameTournamentPlayerLeavedTheTournamentEvent ||
223
+ event instanceof GameTournamentCancelledEvent ||
224
+ event instanceof GameTournamentWaitedEvent ||
225
+ event instanceof GameTournamentStartedEvent ||
195
226
  event instanceof GameTournamentFinishedEvent
196
227
  ) {
197
228
  this.handleRoomStatusUpdated(new RoomUpdateStateEvent(event.gameType, event.roomId));
@@ -25,7 +25,7 @@ import { InjectConnection } from '@nestjs/mongoose';
25
25
  import { Connection } from 'mongoose';
26
26
 
27
27
  import { JpLoggerService } from '../logger/jp-logger.service';
28
- import { isUpdateTounrmanentRoomEvent, saveGameTablesResult, saveTournamentResult } from '../../utils/game-table-result';
28
+ import { saveGameTablesResult, saveTournamentResult } from '../../utils/game-table-result';
29
29
  import { EventsBusMainTablesSubscribeService, EventsBusOneTableTournamentSubscribeService } from '../event-bus';
30
30
 
31
31
  import { TOURNAMENT_ONE_TABLE_ROOMS_MANAGER_OPTIONS } from './tournament-one-table-rooms-manager.constants';
@@ -87,7 +87,7 @@ export class TournamentOneTableRoomsManagerService {
87
87
  }
88
88
 
89
89
  async hydrateTournamentsFromDB () {
90
- const templates = await this.tournamentRepository.findTournaments(this.gameType);
90
+ const templates = await this.tournamentRepository.findActualTournaments(this.gameType);
91
91
  templates.forEach((item) => {
92
92
  this.addRoom(this.options.createTournamentRoom(
93
93
  this.oneTableTournamentDocumentToTournamentRoom(item)
@@ -119,6 +119,9 @@ export class TournamentOneTableRoomsManagerService {
119
119
  onRoomEvent: this.handleRoomEvent,
120
120
  tournamentPrizeTable: this.options.tournamentPrizeTable,
121
121
  tournamentInitialStatus: tournamentDocument.status,
122
+ tournamentWinners: tournamentDocument.winners,
123
+ maxParticipants: tournamentDocument.maxParticipants,
124
+ participants: tournamentDocument.participants,
122
125
  } as TournamentRoomConfig;
123
126
  }
124
127
 
@@ -134,11 +137,11 @@ export class TournamentOneTableRoomsManagerService {
134
137
  } else if (event instanceof GameTournamentFinishedEvent) {
135
138
  this.handleTournamentRoomFinished(event.room.getRoomMaster());
136
139
  } else if (
137
- event instanceof GameTournamentPlayerJoinedTheTournamentEvent &&
138
- event instanceof GameTournamentPlayerLeavedTheTournamentEvent &&
139
- event instanceof GameTournamentCancelledEvent &&
140
- event instanceof GameTournamentWaitedEvent &&
141
- event instanceof GameTournamentStartedEvent &&
140
+ event instanceof GameTournamentPlayerJoinedTheTournamentEvent ||
141
+ event instanceof GameTournamentPlayerLeavedTheTournamentEvent ||
142
+ event instanceof GameTournamentCancelledEvent ||
143
+ event instanceof GameTournamentWaitedEvent ||
144
+ event instanceof GameTournamentStartedEvent ||
142
145
  event instanceof GameTournamentFinishedEvent
143
146
  ) {
144
147
  this.handleRoomStatusUpdated(new RoomUpdateStateEvent(event.gameType, event.roomId));
@@ -1,11 +1,11 @@
1
1
  import { Connection } from 'mongoose';
2
- import { BaseGameEvent, GameMaster, GameTournamentCancelledEvent, GameTournamentFinishedEvent, GameTournamentPlayerJoinedTheTournamentEvent, GameTournamentPlayerLeavedTheTournamentEvent, GameTournamentStartedEvent, GameTournamentWaitedEvent, RoomUpdateStateEvent, TournamentMaster } from 'jp.ms.common.engine';
3
2
  import {
4
3
  GameResultRepository,
5
4
  TournamentManyTablesRoomsRepository,
6
5
  TournamentOneTableRoomsRepository,
7
6
  UsersRepository
8
7
  } from 'jp.db.schemas';
8
+ import { GameMaster, TournamentMaster } from 'jp.ms.common.engine';
9
9
 
10
10
  export function getGameTableResults (master: GameMaster) {
11
11
  return {
@@ -108,18 +108,3 @@ export async function saveTournamentResult (
108
108
  await session.endSession();
109
109
  }
110
110
  }
111
-
112
- export function isUpdateTounrmanentRoomEvent (event: BaseGameEvent) {
113
- if (
114
- event instanceof GameTournamentPlayerJoinedTheTournamentEvent &&
115
- event instanceof GameTournamentPlayerLeavedTheTournamentEvent &&
116
- event instanceof GameTournamentCancelledEvent &&
117
- event instanceof GameTournamentWaitedEvent &&
118
- event instanceof GameTournamentStartedEvent &&
119
- event instanceof GameTournamentFinishedEvent
120
- ) {
121
- return event
122
- }
123
-
124
- return null;
125
- }
@@ -10,11 +10,11 @@ export class TournamentBuyTicketDialogView extends UniversalScreenDialogView {
10
10
  build () {
11
11
  return new StandardDialogComponent(
12
12
  AppScreenDialogIdEnum.DIALOG_TOURNAMENT_BUY_TICKET,
13
- this.localeService.t('common.rooms.screen.buyTicket.title', { lang: this.lang }),
14
- this.localeService.t('common.rooms.screen.buyTicket.description', { lang: this.lang }),
13
+ this.localeService.t('common.rooms.screen.dialog.buy.ticket.title', { lang: this.lang }),
14
+ this.localeService.t('common.rooms.screen.dialog.buy.ticket.description', { lang: this.lang }),
15
15
  new FullButtonsButtonsComponent(
16
- new TextButtonComponent(this.localeService.t('common.rooms.screen.buyTicket.button.ok', { lang: this.lang })),
17
- new TextButtonComponent(this.localeService.t('common.rooms.screen.buyTicket.button.cancel', { lang: this.lang })),
16
+ new TextButtonComponent(this.localeService.t('common.rooms.screen.dialog.buy.ticket.ok', { lang: this.lang })),
17
+ new TextButtonComponent(this.localeService.t('common.rooms.screen.dialog.buy.ticket.cancel', { lang: this.lang })),
18
18
  ),
19
19
  );
20
20
  }