jp.ms.common.modules 1.0.43 → 1.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/rooms-manager.service.d.ts +61 -0
- package/dist/common/rooms-manager.service.js +148 -0
- package/dist/common/rooms-manager.service.js.map +1 -0
- package/dist/common/tournament-rooms-manager.service.d.ts +10 -0
- package/dist/common/tournament-rooms-manager.service.js +66 -0
- package/dist/common/tournament-rooms-manager.service.js.map +1 -0
- package/dist/dto/games/fool/fool-table.dto.d.ts +0 -1
- package/dist/dto/games/fool/fool-table.dto.js +0 -10
- package/dist/dto/games/fool/fool-table.dto.js.map +1 -1
- package/dist/exception/global-exception-filter.d.ts +2 -0
- package/dist/exception/global-exception-filter.js +23 -17
- package/dist/exception/global-exception-filter.js.map +1 -1
- package/dist/modules/anti-freeze-system/anti-freeze-system.service.d.ts +3 -0
- package/dist/modules/anti-freeze-system/anti-freeze-system.service.js +33 -23
- package/dist/modules/anti-freeze-system/anti-freeze-system.service.js.map +1 -1
- package/dist/modules/base-achievements/base-achievements.constants.d.ts +1 -0
- package/dist/modules/base-achievements/base-achievements.constants.js +5 -0
- package/dist/modules/base-achievements/base-achievements.constants.js.map +1 -0
- package/dist/modules/base-achievements/base-achievements.interfaces.d.ts +15 -0
- package/dist/modules/base-achievements/base-achievements.interfaces.js +3 -0
- package/dist/modules/base-achievements/base-achievements.interfaces.js.map +1 -0
- package/dist/modules/base-achievements/base-achievements.module.d.ts +29 -7
- package/dist/modules/base-achievements/base-achievements.module.js +166 -76
- package/dist/modules/base-achievements/base-achievements.module.js.map +1 -1
- package/dist/modules/base-achievements/index.d.ts +2 -0
- package/dist/modules/base-achievements/index.js +3 -1
- package/dist/modules/base-achievements/index.js.map +1 -1
- package/dist/modules/event-bus/events-bus.app.subscribe.service.d.ts +3 -3
- package/dist/modules/event-bus/events-bus.app.subscribe.service.js.map +1 -1
- package/dist/modules/index.d.ts +1 -1
- package/dist/modules/index.js +4 -3
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/main/main.service.js +8 -6
- package/dist/modules/main/main.service.js.map +1 -1
- package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js +1 -1
- package/dist/modules/many-tables-tournament/many-tables-tournament.controller.js.map +1 -1
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.d.ts +1 -0
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.js +4 -0
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.js.map +1 -1
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.d.ts +7 -5
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.js +58 -38
- package/dist/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.js.map +1 -1
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.d.ts +1 -0
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.js +4 -0
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.js.map +1 -1
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.d.ts +7 -5
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.js +55 -35
- package/dist/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.js.map +1 -1
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.interfaces.d.ts +1 -0
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.module.js +4 -0
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.module.js.map +1 -1
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.d.ts +7 -5
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js +53 -20
- package/dist/modules/simple-rooms-manager/simple-rooms-manager.service.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/views/achievement-snackbar.view.d.ts +8 -0
- package/dist/views/achievement-snackbar.view.js +26 -0
- package/dist/views/achievement-snackbar.view.js.map +1 -0
- package/dist/views/base-table.view.d.ts +13 -0
- package/dist/views/base-table.view.js +34 -0
- package/dist/views/base-table.view.js.map +1 -0
- package/dist/views/index.d.ts +3 -0
- package/dist/views/index.js +7 -1
- package/dist/views/index.js.map +1 -1
- package/dist/views/level-up-snackbar.view.d.ts +7 -0
- package/dist/views/level-up-snackbar.view.js +26 -0
- package/dist/views/level-up-snackbar.view.js.map +1 -0
- package/package.json +5 -5
- package/src/common/rooms-manager.service.ts +250 -0
- package/src/common/tournament-rooms-manager.service.ts +121 -0
- package/src/dto/games/fool/fool-table.dto.ts +0 -8
- package/src/exception/global-exception-filter.ts +34 -20
- package/src/modules/anti-freeze-system/anti-freeze-system.service.ts +48 -35
- package/src/modules/base-achievements/base-achievements.constants.ts +1 -0
- package/src/modules/base-achievements/base-achievements.interfaces.ts +22 -0
- package/src/modules/base-achievements/base-achievements.module.ts +347 -234
- package/src/modules/base-achievements/index.ts +5 -0
- package/src/modules/event-bus/events-bus.app.subscribe.service.ts +5 -5
- package/src/modules/index.ts +6 -1
- package/src/modules/main/main.service.ts +7 -5
- package/src/modules/many-tables-tournament/many-tables-tournament.controller.ts +1 -1
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.interfaces.ts +1 -0
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.module.ts +7 -0
- package/src/modules/many-tables-tournament-rooms-manager/many-tables-tournament-rooms-manager.service.ts +89 -41
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.interfaces.ts +1 -0
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.ts +7 -0
- package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.ts +89 -40
- package/src/modules/simple-rooms-manager/simple-rooms-manager.interfaces.ts +1 -0
- package/src/modules/simple-rooms-manager/simple-rooms-manager.module.ts +7 -0
- package/src/modules/simple-rooms-manager/simple-rooms-manager.service.ts +79 -33
- package/src/views/achievement-snackbar.view.ts +38 -0
- package/src/views/base-table.view.ts +57 -0
- package/src/views/index.ts +3 -0
- package/src/views/level-up-snackbar.view.ts +38 -0
- package/dist/utils/date.d.ts +0 -2
- package/dist/utils/date.js +0 -11
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/game-table-result.d.ts +0 -40
- package/dist/utils/game-table-result.js +0 -152
- package/dist/utils/game-table-result.js.map +0 -1
- package/src/utils/date.ts +0 -7
- package/src/utils/game-table-result.ts +0 -190
|
@@ -106,18 +106,20 @@ export class MainService {
|
|
|
106
106
|
if (
|
|
107
107
|
player &&
|
|
108
108
|
(player.isPlayer() || player.isTableQueuer()) &&
|
|
109
|
-
player.tableId
|
|
109
|
+
player.tableId &&
|
|
110
|
+
player.room
|
|
110
111
|
) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
} else if (player.room instanceof OneTableTournamentRoom) {
|
|
112
|
+
const roomName = player.room.constructor.name;
|
|
113
|
+
if (roomName.includes(OneTableTournamentRoom.name)) {
|
|
114
114
|
redirectUrl = AppScreenRouter.getOneTableTournamentTablePath(
|
|
115
115
|
player.tableId,
|
|
116
116
|
);
|
|
117
|
-
} else if (
|
|
117
|
+
} else if (roomName.includes(ManyTablesTournamentRoom.name)) {
|
|
118
118
|
redirectUrl = AppScreenRouter.getManyTablesTournamentTablePath(
|
|
119
119
|
player.tableId,
|
|
120
120
|
);
|
|
121
|
+
} else if (roomName.includes(SimpleRoom.name)) {
|
|
122
|
+
redirectUrl = AppScreenRouter.getSimpleRoomTablePath(player.tableId);
|
|
121
123
|
}
|
|
122
124
|
} else if (isNewbie) {
|
|
123
125
|
redirectUrl = AppScreenRoutesEnum.WELCOME;
|
|
@@ -149,7 +149,7 @@ export class ManyTablesTournamentController {
|
|
|
149
149
|
return this.tournamentService.removeTournament(tournamentId);
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
@Post('
|
|
152
|
+
@Post('buy_ticket/:tournamentId')
|
|
153
153
|
@HttpCode(HttpStatus.OK)
|
|
154
154
|
buyTicket(
|
|
155
155
|
@Param('tournamentId') tournamentId: string,
|
|
@@ -22,6 +22,9 @@ import {
|
|
|
22
22
|
Rating,
|
|
23
23
|
RatingSchema,
|
|
24
24
|
RatingRepository,
|
|
25
|
+
ActivityLog,
|
|
26
|
+
ActivityLogRepository,
|
|
27
|
+
ActivityLogSchema,
|
|
25
28
|
} from 'jp.db.schemas';
|
|
26
29
|
|
|
27
30
|
import { ManyTablesTournamentRoomsManagerService } from './many-tables-tournament-rooms-manager.service';
|
|
@@ -46,6 +49,9 @@ import { ManyTablesTournamentRoomsFactoryOptions } from './many-tables-tournamen
|
|
|
46
49
|
{ name: GameResult.name, schema: GameResultSchema },
|
|
47
50
|
]),
|
|
48
51
|
MongooseModule.forFeature([{ name: Rating.name, schema: RatingSchema }]),
|
|
52
|
+
MongooseModule.forFeature([
|
|
53
|
+
{ name: ActivityLog.name, schema: ActivityLogSchema },
|
|
54
|
+
]),
|
|
49
55
|
],
|
|
50
56
|
providers: [
|
|
51
57
|
ManyTablesTournamentRoomsRepository,
|
|
@@ -54,6 +60,7 @@ import { ManyTablesTournamentRoomsFactoryOptions } from './many-tables-tournamen
|
|
|
54
60
|
GameResultRepository,
|
|
55
61
|
PurchaseRepository,
|
|
56
62
|
RatingRepository,
|
|
63
|
+
ActivityLogRepository,
|
|
57
64
|
],
|
|
58
65
|
exports: [ManyTablesTournamentRoomsManagerService],
|
|
59
66
|
})
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
BaseGameEvent,
|
|
12
12
|
GameMaster,
|
|
13
13
|
GamePlayer,
|
|
14
|
+
GamePlayerMovedOnTheTableEvent,
|
|
14
15
|
GameTableFinishedEvent,
|
|
15
16
|
GameTournamentCancelledEvent,
|
|
16
17
|
GameTournamentFinishedEvent,
|
|
@@ -32,26 +33,25 @@ import {
|
|
|
32
33
|
ManyTablesTournamentRoomsRepository,
|
|
33
34
|
UsersRepository,
|
|
34
35
|
RatingRepository,
|
|
36
|
+
ActivityLogRepository,
|
|
35
37
|
} from 'jp.db.schemas';
|
|
38
|
+
import { getHours, getMinutes } from 'jp.common.utils';
|
|
36
39
|
|
|
37
|
-
import {
|
|
38
|
-
saveGameTablesResultForTournamentRoom,
|
|
39
|
-
saveTournamentResult,
|
|
40
|
-
} from '../../utils/game-table-result';
|
|
41
40
|
import { JpLoggerService } from '../logger';
|
|
42
|
-
import { getHours, getMinutes } from '../../utils/date';
|
|
43
41
|
import { ManyTablesTournamentCreateDto } from '../../dto/common/many-tables-tournament-create.dto';
|
|
44
42
|
import { ManyTablesTournamentUpdateDto } from '../../dto/common/many-tables-tournament-update.dto';
|
|
45
43
|
import {
|
|
44
|
+
EventsBusAppSubscribeService,
|
|
46
45
|
EventsBusMainTablesSubscribeService,
|
|
47
46
|
EventsBusManyTablesTournamentSubscribeService,
|
|
48
47
|
} from '../event-bus';
|
|
48
|
+
import { TournamentRoomsManagerService } from '../../common/tournament-rooms-manager.service';
|
|
49
49
|
|
|
50
50
|
import { MANY_TABLES_TOURNAMENT_ROOMS_MANAGER_OPTIONS } from './many-tables-tournament-rooms-manager.constants';
|
|
51
51
|
import { ManyTablesTournamentRoomsFactoryOptions } from './many-tables-tournament-rooms-manager.interfaces';
|
|
52
52
|
|
|
53
53
|
@Injectable()
|
|
54
|
-
export class ManyTablesTournamentRoomsManagerService {
|
|
54
|
+
export class ManyTablesTournamentRoomsManagerService extends TournamentRoomsManagerService {
|
|
55
55
|
private readonly rooms: Map<string, ManyTablesTournamentRoom>;
|
|
56
56
|
private createDailyTournamentJob: Job | null;
|
|
57
57
|
|
|
@@ -61,13 +61,16 @@ export class ManyTablesTournamentRoomsManagerService {
|
|
|
61
61
|
private readonly gameResultRepository: GameResultRepository,
|
|
62
62
|
private readonly purchaseRepository: PurchaseRepository,
|
|
63
63
|
private readonly ratingRepository: RatingRepository,
|
|
64
|
+
private readonly activityLogRepository: ActivityLogRepository,
|
|
64
65
|
private readonly eventsBusMainTablesSubscribeService: EventsBusMainTablesSubscribeService,
|
|
65
66
|
private readonly eventsBusManyTablesTournamentSubscribeService: EventsBusManyTablesTournamentSubscribeService,
|
|
67
|
+
private readonly eventsBusAppSubscribeService: EventsBusAppSubscribeService,
|
|
66
68
|
@Inject(MANY_TABLES_TOURNAMENT_ROOMS_MANAGER_OPTIONS)
|
|
67
69
|
private readonly options: ManyTablesTournamentRoomsFactoryOptions,
|
|
68
70
|
@InjectConnection() private readonly connection: Connection,
|
|
69
71
|
@Inject() private readonly logger: JpLoggerService,
|
|
70
72
|
) {
|
|
73
|
+
super();
|
|
71
74
|
this.rooms = new Map<string, ManyTablesTournamentRoom>();
|
|
72
75
|
this.createDailyTournamentJob = null;
|
|
73
76
|
}
|
|
@@ -213,6 +216,7 @@ export class ManyTablesTournamentRoomsManagerService {
|
|
|
213
216
|
rulesType: tournamentDocument.rulesType,
|
|
214
217
|
deckType: tournamentDocument.deckType,
|
|
215
218
|
tableSize: tournamentDocument.tableSize,
|
|
219
|
+
tableType: tournamentDocument.tableType,
|
|
216
220
|
bet: tournamentDocument.bet,
|
|
217
221
|
ticketPrice: tournamentDocument.ticketPrice,
|
|
218
222
|
title: tournamentDocument.title,
|
|
@@ -238,47 +242,80 @@ export class ManyTablesTournamentRoomsManagerService {
|
|
|
238
242
|
private handleRoomEvent = (event: BaseGameEvent) => {
|
|
239
243
|
this.logger.log(event.toLog());
|
|
240
244
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
245
|
+
switch (event.constructor.name) {
|
|
246
|
+
case GameTableFinishedEvent.name: {
|
|
247
|
+
void this.handleRoomTableGameFinished(
|
|
248
|
+
event as GameTableFinishedEvent,
|
|
249
|
+
this.connection,
|
|
250
|
+
this.gameResultRepository,
|
|
251
|
+
this.usersRepository,
|
|
252
|
+
this.activityLogRepository,
|
|
253
|
+
this.eventsBusAppSubscribeService,
|
|
254
|
+
this.options.levelUpBonus,
|
|
255
|
+
);
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
case GamePlayerMovedOnTheTableEvent.name: {
|
|
259
|
+
this.handleRoomTableGamePlayerMoved(
|
|
260
|
+
event as GamePlayerMovedOnTheTableEvent,
|
|
261
|
+
this.eventsBusAppSubscribeService,
|
|
262
|
+
);
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
case GameTournamentStartedEvent.name: {
|
|
266
|
+
void this.handleTournamentRoomStarted(
|
|
267
|
+
event as GameTournamentStartedEvent,
|
|
268
|
+
);
|
|
269
|
+
this.handleRoomStatusUpdated(event as GameTournamentStartedEvent);
|
|
270
|
+
break;
|
|
271
|
+
}
|
|
272
|
+
case GameTournamentCancelledEvent.name: {
|
|
273
|
+
void this.handleTournamentRoomCancelled(
|
|
274
|
+
event as GameTournamentCancelledEvent,
|
|
275
|
+
);
|
|
276
|
+
this.handleRoomStatusUpdated(event as GameTournamentCancelledEvent);
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
case GameTournamentFinishedEvent.name: {
|
|
280
|
+
void this.handleTournamentRoomFinished(
|
|
281
|
+
event as GameTournamentFinishedEvent,
|
|
282
|
+
);
|
|
283
|
+
this.handleRoomStatusUpdated(event as GameTournamentFinishedEvent);
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
case GameTournamentPlayerJoinedTheTournamentEvent.name:
|
|
287
|
+
case GameTournamentPlayerLeavedTheTournamentEvent.name:
|
|
288
|
+
case GameTournamentWaitedEvent.name: {
|
|
289
|
+
this.handleRoomStatusUpdated(
|
|
290
|
+
event as
|
|
291
|
+
| GameTournamentPlayerJoinedTheTournamentEvent
|
|
292
|
+
| GameTournamentPlayerLeavedTheTournamentEvent
|
|
293
|
+
| GameTournamentCancelledEvent,
|
|
294
|
+
);
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
260
297
|
}
|
|
261
298
|
};
|
|
262
299
|
|
|
263
|
-
private
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
this.gameResultRepository,
|
|
268
|
-
this.usersRepository,
|
|
269
|
-
);
|
|
270
|
-
};
|
|
271
|
-
|
|
272
|
-
private handleTournamentRoomStarted = async (master: TournamentMaster) => {
|
|
300
|
+
private handleTournamentRoomStarted = async (
|
|
301
|
+
event: GameTournamentStartedEvent,
|
|
302
|
+
) => {
|
|
303
|
+
const master = event.room.getRoomMaster<TournamentMaster>();
|
|
273
304
|
await this.tournamentRepository.startTournament(master.getTournamentId());
|
|
274
305
|
};
|
|
275
306
|
|
|
276
|
-
private handleTournamentRoomCancelled = async (
|
|
307
|
+
private handleTournamentRoomCancelled = async (
|
|
308
|
+
event: GameTournamentStartedEvent,
|
|
309
|
+
) => {
|
|
310
|
+
const master = event.room.getRoomMaster<TournamentMaster>();
|
|
277
311
|
await this.tournamentRepository.cancelTournament(master.getTournamentId());
|
|
278
312
|
};
|
|
279
313
|
|
|
280
|
-
private handleTournamentRoomFinished = async (
|
|
281
|
-
|
|
314
|
+
private handleTournamentRoomFinished = async (
|
|
315
|
+
event: GameTournamentFinishedEvent,
|
|
316
|
+
) => {
|
|
317
|
+
const master = event.room.getRoomMaster<TournamentMaster>();
|
|
318
|
+
await this.saveTournamentResult(
|
|
282
319
|
master,
|
|
283
320
|
this.connection,
|
|
284
321
|
this.tournamentRepository,
|
|
@@ -287,9 +324,20 @@ export class ManyTablesTournamentRoomsManagerService {
|
|
|
287
324
|
);
|
|
288
325
|
};
|
|
289
326
|
|
|
290
|
-
private handleRoomStatusUpdated = (
|
|
291
|
-
|
|
292
|
-
|
|
327
|
+
private handleRoomStatusUpdated = (
|
|
328
|
+
event:
|
|
329
|
+
| GameTournamentPlayerJoinedTheTournamentEvent
|
|
330
|
+
| GameTournamentPlayerLeavedTheTournamentEvent
|
|
331
|
+
| GameTournamentCancelledEvent
|
|
332
|
+
| GameTournamentWaitedEvent
|
|
333
|
+
| GameTournamentStartedEvent
|
|
334
|
+
| GameTournamentFinishedEvent,
|
|
335
|
+
) => {
|
|
336
|
+
const updateEvent = new RoomUpdateStateEvent(event.gameType, event.roomId);
|
|
337
|
+
this.eventsBusMainTablesSubscribeService.pushNewRoomState(updateEvent);
|
|
338
|
+
this.eventsBusManyTablesTournamentSubscribeService.pushNewRoomState(
|
|
339
|
+
updateEvent,
|
|
340
|
+
);
|
|
293
341
|
};
|
|
294
342
|
|
|
295
343
|
private createDailyTournament = async (dailyTournamentTime: string) => {
|
package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.module.ts
CHANGED
|
@@ -13,6 +13,9 @@ import {
|
|
|
13
13
|
Rating,
|
|
14
14
|
RatingSchema,
|
|
15
15
|
RatingRepository,
|
|
16
|
+
ActivityLog,
|
|
17
|
+
ActivityLogRepository,
|
|
18
|
+
ActivityLogSchema,
|
|
16
19
|
} from 'jp.db.schemas';
|
|
17
20
|
|
|
18
21
|
import { OneTableTournamentRoomsManagerService } from './one-table-tournament-rooms-manager.service';
|
|
@@ -33,6 +36,9 @@ import { ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS } from './one-table-tourname
|
|
|
33
36
|
{ name: GameResult.name, schema: GameResultSchema },
|
|
34
37
|
]),
|
|
35
38
|
MongooseModule.forFeature([{ name: Rating.name, schema: RatingSchema }]),
|
|
39
|
+
MongooseModule.forFeature([
|
|
40
|
+
{ name: ActivityLog.name, schema: ActivityLogSchema },
|
|
41
|
+
]),
|
|
36
42
|
],
|
|
37
43
|
providers: [
|
|
38
44
|
OneTableTournamentRoomsRepository,
|
|
@@ -40,6 +46,7 @@ import { ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS } from './one-table-tourname
|
|
|
40
46
|
OneTableTournamentRoomsManagerService,
|
|
41
47
|
GameResultRepository,
|
|
42
48
|
RatingRepository,
|
|
49
|
+
ActivityLogRepository,
|
|
43
50
|
],
|
|
44
51
|
exports: [OneTableTournamentRoomsManagerService],
|
|
45
52
|
})
|
package/src/modules/one-table-tournament-rooms-manager/one-table-tournament-rooms-manager.service.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Inject, Injectable } from '@nestjs/common';
|
|
|
2
2
|
import {
|
|
3
3
|
BaseGameEvent,
|
|
4
4
|
GameMaster,
|
|
5
|
+
GamePlayerMovedOnTheTableEvent,
|
|
5
6
|
GameTableFinishedEvent,
|
|
6
7
|
GameTournamentCancelledEvent,
|
|
7
8
|
GameTournamentFinishedEvent,
|
|
@@ -17,6 +18,7 @@ import {
|
|
|
17
18
|
TournamentRoomConfig,
|
|
18
19
|
} from 'jp.ms.common.engine';
|
|
19
20
|
import {
|
|
21
|
+
ActivityLogRepository,
|
|
20
22
|
GameResultRepository,
|
|
21
23
|
OneTableTournamentRoomDocument,
|
|
22
24
|
OneTableTournamentRoomsRepository,
|
|
@@ -28,19 +30,17 @@ import { Connection } from 'mongoose';
|
|
|
28
30
|
|
|
29
31
|
import { JpLoggerService } from '../logger/jp-logger.service';
|
|
30
32
|
import {
|
|
31
|
-
|
|
32
|
-
saveTournamentResult,
|
|
33
|
-
} from '../../utils/game-table-result';
|
|
34
|
-
import {
|
|
33
|
+
EventsBusAppSubscribeService,
|
|
35
34
|
EventsBusMainTablesSubscribeService,
|
|
36
35
|
EventsBusOneTableTournamentSubscribeService,
|
|
37
36
|
} from '../event-bus';
|
|
37
|
+
import { TournamentRoomsManagerService } from '../../common/tournament-rooms-manager.service';
|
|
38
38
|
|
|
39
39
|
import { ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS } from './one-table-tournament-rooms-manager.constants';
|
|
40
40
|
import { OneTableTournamentRoomsFactoryOptions } from './one-table-tournament-rooms-manager.interfaces';
|
|
41
41
|
|
|
42
42
|
@Injectable()
|
|
43
|
-
export class OneTableTournamentRoomsManagerService {
|
|
43
|
+
export class OneTableTournamentRoomsManagerService extends TournamentRoomsManagerService {
|
|
44
44
|
private readonly rooms: Map<string, OneTableTournamentRoom>;
|
|
45
45
|
|
|
46
46
|
constructor(
|
|
@@ -48,13 +48,16 @@ export class OneTableTournamentRoomsManagerService {
|
|
|
48
48
|
private readonly usersRepository: UsersRepository,
|
|
49
49
|
private readonly gameResultRepository: GameResultRepository,
|
|
50
50
|
private readonly ratingRepository: RatingRepository,
|
|
51
|
+
private readonly activityLogRepository: ActivityLogRepository,
|
|
51
52
|
private readonly eventsBusMainTablesSubscribeService: EventsBusMainTablesSubscribeService,
|
|
52
53
|
private readonly eventsBusOneTableTournamentSubscribeService: EventsBusOneTableTournamentSubscribeService,
|
|
54
|
+
private readonly eventsBusAppSubscribeService: EventsBusAppSubscribeService,
|
|
53
55
|
@Inject(ONE_TABLE_TOURNAMENT_ROOMS_MANAGER_OPTIONS)
|
|
54
56
|
private readonly options: OneTableTournamentRoomsFactoryOptions,
|
|
55
57
|
@InjectConnection() private readonly connection: Connection,
|
|
56
58
|
@Inject() private readonly logger: JpLoggerService,
|
|
57
59
|
) {
|
|
60
|
+
super();
|
|
58
61
|
this.rooms = new Map<string, OneTableTournamentRoom>();
|
|
59
62
|
}
|
|
60
63
|
|
|
@@ -119,6 +122,7 @@ export class OneTableTournamentRoomsManagerService {
|
|
|
119
122
|
rulesType: tournamentDocument.rulesType,
|
|
120
123
|
deckType: tournamentDocument.deckType,
|
|
121
124
|
tableSize: tournamentDocument.tableSize,
|
|
125
|
+
tableType: tournamentDocument.tableType,
|
|
122
126
|
bet: tournamentDocument.bet,
|
|
123
127
|
ticketPrice: tournamentDocument.ticketPrice,
|
|
124
128
|
title: tournamentDocument.title,
|
|
@@ -142,40 +146,67 @@ export class OneTableTournamentRoomsManagerService {
|
|
|
142
146
|
private handleRoomEvent = (event: BaseGameEvent) => {
|
|
143
147
|
this.logger.log(event.toLog());
|
|
144
148
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
149
|
+
switch (event.constructor.name) {
|
|
150
|
+
case GameTableFinishedEvent.name: {
|
|
151
|
+
void this.handleRoomTableGameFinished(
|
|
152
|
+
event as GameTableFinishedEvent,
|
|
153
|
+
this.connection,
|
|
154
|
+
this.gameResultRepository,
|
|
155
|
+
this.usersRepository,
|
|
156
|
+
this.activityLogRepository,
|
|
157
|
+
this.eventsBusAppSubscribeService,
|
|
158
|
+
this.options.levelUpBonus,
|
|
159
|
+
);
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
case GamePlayerMovedOnTheTableEvent.name: {
|
|
163
|
+
this.handleRoomTableGamePlayerMoved(
|
|
164
|
+
event as GamePlayerMovedOnTheTableEvent,
|
|
165
|
+
this.eventsBusAppSubscribeService,
|
|
166
|
+
);
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
case GameTournamentStartedEvent.name: {
|
|
170
|
+
void this.handleTournamentRoomStarted(
|
|
171
|
+
event as GameTournamentStartedEvent,
|
|
172
|
+
);
|
|
173
|
+
this.handleRoomStatusUpdated(event as GameTournamentStartedEvent);
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
case GameTournamentCancelledEvent.name: {
|
|
177
|
+
void this.handleTournamentRoomCancelled(
|
|
178
|
+
event as GameTournamentCancelledEvent,
|
|
179
|
+
);
|
|
180
|
+
this.handleRoomStatusUpdated(event as GameTournamentCancelledEvent);
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
case GameTournamentFinishedEvent.name: {
|
|
184
|
+
void this.handleTournamentRoomFinished(
|
|
185
|
+
event as GameTournamentFinishedEvent,
|
|
186
|
+
);
|
|
187
|
+
this.handleRoomStatusUpdated(event as GameTournamentFinishedEvent);
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
case GameTournamentPlayerJoinedTheTournamentEvent.name:
|
|
191
|
+
case GameTournamentPlayerLeavedTheTournamentEvent.name:
|
|
192
|
+
case GameTournamentWaitedEvent.name: {
|
|
193
|
+
this.handleRoomStatusUpdated(
|
|
194
|
+
event as
|
|
195
|
+
| GameTournamentPlayerJoinedTheTournamentEvent
|
|
196
|
+
| GameTournamentPlayerLeavedTheTournamentEvent
|
|
197
|
+
| GameTournamentCancelledEvent,
|
|
198
|
+
);
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
164
201
|
}
|
|
165
202
|
};
|
|
166
203
|
|
|
167
|
-
private
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
this.connection,
|
|
171
|
-
this.gameResultRepository,
|
|
172
|
-
this.usersRepository,
|
|
173
|
-
);
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
private handleTournamentRoomStarted = async (master: TournamentMaster) => {
|
|
204
|
+
private handleTournamentRoomStarted = async (
|
|
205
|
+
event: GameTournamentStartedEvent,
|
|
206
|
+
) => {
|
|
177
207
|
const session = await this.connection.startSession();
|
|
178
208
|
session.startTransaction();
|
|
209
|
+
const master = event.room.getRoomMaster<TournamentMaster>();
|
|
179
210
|
|
|
180
211
|
try {
|
|
181
212
|
await this.tournamentRepository.startTournament(
|
|
@@ -201,12 +232,19 @@ export class OneTableTournamentRoomsManagerService {
|
|
|
201
232
|
}
|
|
202
233
|
};
|
|
203
234
|
|
|
204
|
-
private handleTournamentRoomCancelled = async (
|
|
235
|
+
private handleTournamentRoomCancelled = async (
|
|
236
|
+
event: GameTournamentCancelledEvent,
|
|
237
|
+
) => {
|
|
238
|
+
const master = event.room.getRoomMaster<TournamentMaster>();
|
|
205
239
|
await this.tournamentRepository.cancelTournament(master.getTournamentId());
|
|
206
240
|
};
|
|
207
241
|
|
|
208
|
-
private handleTournamentRoomFinished = async (
|
|
209
|
-
|
|
242
|
+
private handleTournamentRoomFinished = async (
|
|
243
|
+
event: GameTournamentFinishedEvent,
|
|
244
|
+
) => {
|
|
245
|
+
const master = event.room.getRoomMaster<TournamentMaster>();
|
|
246
|
+
|
|
247
|
+
await this.saveTournamentResult(
|
|
210
248
|
master,
|
|
211
249
|
this.connection,
|
|
212
250
|
this.tournamentRepository,
|
|
@@ -215,8 +253,19 @@ export class OneTableTournamentRoomsManagerService {
|
|
|
215
253
|
);
|
|
216
254
|
};
|
|
217
255
|
|
|
218
|
-
private handleRoomStatusUpdated = (
|
|
219
|
-
|
|
220
|
-
|
|
256
|
+
private handleRoomStatusUpdated = (
|
|
257
|
+
event:
|
|
258
|
+
| GameTournamentPlayerJoinedTheTournamentEvent
|
|
259
|
+
| GameTournamentPlayerLeavedTheTournamentEvent
|
|
260
|
+
| GameTournamentCancelledEvent
|
|
261
|
+
| GameTournamentWaitedEvent
|
|
262
|
+
| GameTournamentStartedEvent
|
|
263
|
+
| GameTournamentFinishedEvent,
|
|
264
|
+
) => {
|
|
265
|
+
const updateEvent = new RoomUpdateStateEvent(event.gameType, event.roomId);
|
|
266
|
+
this.eventsBusMainTablesSubscribeService.pushNewRoomState(updateEvent);
|
|
267
|
+
this.eventsBusOneTableTournamentSubscribeService.pushNewRoomState(
|
|
268
|
+
updateEvent,
|
|
269
|
+
);
|
|
221
270
|
};
|
|
222
271
|
}
|
|
@@ -13,6 +13,9 @@ import {
|
|
|
13
13
|
Rating,
|
|
14
14
|
RatingSchema,
|
|
15
15
|
RatingRepository,
|
|
16
|
+
ActivityLog,
|
|
17
|
+
ActivityLogSchema,
|
|
18
|
+
ActivityLogRepository,
|
|
16
19
|
} from 'jp.db.schemas';
|
|
17
20
|
|
|
18
21
|
import { SimpleRoomsManagerService } from './simple-rooms-manager.service';
|
|
@@ -30,12 +33,16 @@ import { SIMPLE_ROOMS_MANAGER_OPTIONS } from './simple-rooms-manager.constants';
|
|
|
30
33
|
{ name: GameResult.name, schema: GameResultSchema },
|
|
31
34
|
]),
|
|
32
35
|
MongooseModule.forFeature([{ name: Rating.name, schema: RatingSchema }]),
|
|
36
|
+
MongooseModule.forFeature([
|
|
37
|
+
{ name: ActivityLog.name, schema: ActivityLogSchema },
|
|
38
|
+
]),
|
|
33
39
|
],
|
|
34
40
|
providers: [
|
|
35
41
|
SimpleRoomsRepository,
|
|
36
42
|
UsersRepository,
|
|
37
43
|
GameResultRepository,
|
|
38
44
|
RatingRepository,
|
|
45
|
+
ActivityLogRepository,
|
|
39
46
|
SimpleRoomsManagerService,
|
|
40
47
|
],
|
|
41
48
|
exports: [SimpleRoomsManagerService],
|