remove pager gateway

This commit is contained in:
2025-12-12 15:50:03 +03:30
parent 19787ea52c
commit f57145edc2
3 changed files with 68 additions and 72 deletions
@@ -9,29 +9,28 @@ import {
} from '@nestjs/websockets'; } from '@nestjs/websockets';
import { Server, Socket } from 'socket.io'; import { Server, Socket } from 'socket.io';
import { Logger, UseGuards, Inject, forwardRef } from '@nestjs/common'; import { Logger, UseGuards, Inject, forwardRef } from '@nestjs/common';
import { Pager } from './entities/pager.entity';
import { WsAdminAuthGuard, type AuthenticatedSocket } from './guards/ws-admin-auth.guard';
import { WsRestId } from './decorators/ws-rest-id.decorator'; import { WsRestId } from './decorators/ws-rest-id.decorator';
import { PagerService } from './providers/pager.service'; import { NotificationService } from './services/notification.service';
import { WsAdminId } from './decorators/ws-admin-id.decorator'; import { WsAdminAuthGuard, type AuthenticatedSocket } from './guards/ws-admin-auth.guard';
import { PagerStatus } from './interface/pager';
@UseGuards(WsAdminAuthGuard)
@WebSocketGateway({ @WebSocketGateway({
cors: { cors: {
origin: true, origin: true,
credentials: true, credentials: true,
connectionGuard: WsAdminAuthGuard,
}, },
namespace: '/pager', namespace: '/notifications',
}) })
export class PagerGateway implements OnGatewayConnection, OnGatewayDisconnect { export class NotificationGateway implements OnGatewayConnection, OnGatewayDisconnect {
@WebSocketServer() @WebSocketServer()
server!: Server; server!: Server;
private readonly logger = new Logger(PagerGateway.name); private readonly logger = new Logger(NotificationGateway.name);
constructor( constructor(
@Inject(forwardRef(() => PagerService)) @Inject(forwardRef(() => NotificationService))
private readonly pagerService: PagerService, private readonly notificationService: NotificationService,
) {} ) {}
handleConnection(client: Socket) { handleConnection(client: Socket) {
@@ -184,62 +183,62 @@ export class PagerGateway implements OnGatewayConnection, OnGatewayDisconnect {
} }
} }
/** // /**
* Emit pager created event to restaurant room // * Emit pager created event to restaurant room
*/ // */
emitPagerCreated(pager: Pager) { // emitPagerCreated(pager: Pager) {
const room = `restaurant:${pager.restaurant.id}`; // const room = `restaurant:${pager.restaurant.id}`;
this.server.to(room).emit('pager:created', { // this.server.to(room).emit('pager:created', {
pager: { // pager: {
id: pager.id, // id: pager.id,
tableNumber: pager.tableNumber, // tableNumber: pager.tableNumber,
message: pager.message, // message: pager.message,
status: pager.status, // status: pager.status,
createdAt: pager.createdAt, // createdAt: pager.createdAt,
user: pager.user // user: pager.user
? { // ? {
id: pager.user.id, // id: pager.user.id,
firstName: pager.user.firstName, // firstName: pager.user.firstName,
lastName: pager.user.lastName, // lastName: pager.user.lastName,
} // }
: null, // : null,
}, // },
}); // });
this.logger.log(`Emitted pager:created to room: ${room}`); // this.logger.log(`Emitted pager:created to room: ${room}`);
} // }
/** // /**
* Emit pager status updated event to both restaurant and cookie rooms // * Emit pager status updated event to both restaurant and cookie rooms
*/ // */
emitPagerStatusUpdated(pager: Pager) { // emitPagerStatusUpdated(pager: Pager) {
const restaurantRoom = `restaurant:${pager.restaurant.id}`; // const restaurantRoom = `restaurant:${pager.restaurant.id}`;
const cookieRoom = `cookie:${pager.cookieId}`; // const cookieRoom = `cookie:${pager.cookieId}`;
const pagerData = { // const pagerData = {
id: pager.id, // id: pager.id,
tableNumber: pager.tableNumber, // tableNumber: pager.tableNumber,
message: pager.message, // message: pager.message,
status: pager.status, // status: pager.status,
updatedAt: pager.updatedAt, // updatedAt: pager.updatedAt,
staff: pager.staff // staff: pager.staff
? { // ? {
id: pager.staff.id, // id: pager.staff.id,
firstName: pager.staff.firstName, // firstName: pager.staff.firstName,
lastName: pager.staff.lastName, // lastName: pager.staff.lastName,
} // }
: null, // : null,
}; // };
// Emit to restaurant room (admin/staff) // // Emit to restaurant room (admin/staff)
this.server.to(restaurantRoom).emit('pager:status:updated', { // this.server.to(restaurantRoom).emit('pager:status:updated', {
pager: pagerData, // pager: pagerData,
}); // });
this.logger.log(`Emitted pager:status:updated to room: ${restaurantRoom}`); // this.logger.log(`Emitted pager:status:updated to room: ${restaurantRoom}`);
// Emit to cookie room (public user) // // Emit to cookie room (public user)
this.server.to(cookieRoom).emit('pager:status:updated', { // this.server.to(cookieRoom).emit('pager:status:updated', {
pager: pagerData, // pager: pagerData,
}); // });
this.logger.log(`Emitted pager:status:updated to room: ${cookieRoom}`); // this.logger.log(`Emitted pager:status:updated to room: ${cookieRoom}`);
} // }
} }
+1 -3
View File
@@ -5,12 +5,10 @@ import { MikroOrmModule } from '@mikro-orm/nestjs';
import { Pager } from './entities/pager.entity'; import { Pager } from './entities/pager.entity';
import { JwtModule } from '@nestjs/jwt'; import { JwtModule } from '@nestjs/jwt';
import { RolesModule } from '../roles/roles.module'; import { RolesModule } from '../roles/roles.module';
import { PagerGateway } from './pager.gateway';
@Module({ @Module({
imports: [MikroOrmModule.forFeature([Pager]), JwtModule, RolesModule], imports: [MikroOrmModule.forFeature([Pager]), JwtModule, RolesModule],
controllers: [PagerController], controllers: [PagerController],
providers: [PagerService, PagerGateway], providers: [PagerService],
exports: [PagerGateway],
}) })
export class PagerModule {} export class PagerModule {}
+4 -5
View File
@@ -7,14 +7,13 @@ import { Pager } from '../entities/pager.entity';
import { PagerStatus } from '../interface/pager'; import { PagerStatus } from '../interface/pager';
import { ulid } from 'ulid'; import { ulid } from 'ulid';
import { Admin } from '../../admin/entities/admin.entity'; import { Admin } from '../../admin/entities/admin.entity';
import { PagerGateway } from '../pager.gateway';
@Injectable() @Injectable()
export class PagerService { export class PagerService {
constructor( constructor(
private readonly em: EntityManager, private readonly em: EntityManager,
@Inject(forwardRef(() => PagerGateway)) // @Inject(forwardRef(() => PagerGateway))
private readonly pagerGateway: PagerGateway, // private readonly pagerGateway: PagerGateway,
) {} ) {}
async create( async create(
@@ -69,7 +68,7 @@ export class PagerService {
await this.em.populate(pager, ['restaurant', 'user']); await this.em.populate(pager, ['restaurant', 'user']);
// Emit socket event for new pager // Emit socket event for new pager
this.pagerGateway.emitPagerCreated(pager); // this.pagerGateway.emitPagerCreated(pager);
return pager; return pager;
} }
@@ -107,7 +106,7 @@ export class PagerService {
await this.em.populate(pager, ['restaurant', 'staff', 'user']); await this.em.populate(pager, ['restaurant', 'staff', 'user']);
// Emit socket event for status update // Emit socket event for status update
this.pagerGateway.emitPagerStatusUpdated(pager); // this.pagerGateway.emitPagerStatusUpdated(pager);
return pager; return pager;
} }