Skip to content

Commit 6ea45da

Browse files
Merge pull request #358 from Data-Research-Analysis/DRA-272-Build-Admin-Dashboard
DRA-272-Build-Admin-Dashboard
2 parents bc36b42 + 3e389e5 commit 6ea45da

11 files changed

Lines changed: 1496 additions & 9 deletions

File tree

backend/src/drivers/SocketIODriver.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { Server as HTTPServer } from "http";
22
import { Server, Socket } from "socket.io";
33
import { UtilityService } from "../services/UtilityService.js";
44
import { TokenProcessor } from "../processors/TokenProcessor.js";
5+
import { AppDataSource } from "../datasources/PostgresDS.js";
6+
import { EUserType } from "../types/EUserType.js";
57

68
export class SocketIODriver {
79

@@ -120,6 +122,23 @@ export class SocketIODriver {
120122
});
121123
}
122124

125+
// Allow admin users to join the admin-dashboard room for real-time stats
126+
socket.on('join-admin-room', async () => {
127+
if (!userId) return;
128+
try {
129+
const user = await AppDataSource.manager.findOne(
130+
(await import('../models/DRAUsersPlatform.js')).DRAUsersPlatform,
131+
{ where: { id: userId } }
132+
);
133+
if (user && user.user_type === EUserType.ADMIN) {
134+
socket.join('admin-dashboard');
135+
console.log(`[Socket.IO] Admin user ${userId} joined admin-dashboard room`);
136+
}
137+
} catch (err) {
138+
console.error('[Socket.IO] Error joining admin room:', err);
139+
}
140+
});
141+
123142
// Handle disconnection
124143
socket.on("disconnect", () => {
125144
const userId = (socket as any).userId;
@@ -184,5 +203,12 @@ export class SocketIODriver {
184203
});
185204
}
186205

187-
206+
/**
207+
* Emit an event to all sockets in a named room.
208+
*/
209+
public emitToRoom(room: string, event: string, data: any): void {
210+
if (!this.io) return;
211+
this.io.to(room).emit(event, data);
212+
}
213+
188214
}

backend/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import user_subscriptions from './routes/admin/user_subscriptions.js';
4444
import platform_settings from './routes/admin/platform-settings.js';
4545
import account_cancellations from './routes/admin/account-cancellations.js';
4646
import admin_project_members from './routes/admin/project_members.js';
47+
import admin_stats from './routes/admin/stats.js';
4748
import public_article from './routes/article.js';
4849
import sitemap from './routes/sitemap.js';
4950
import subscription from './routes/subscription.js';
@@ -243,6 +244,7 @@ app.use('/admin/subscription-tiers', admin_subscription_tiers);
243244
app.use('/admin/platform-settings', platform_settings);
244245
app.use('/admin/account-cancellations', account_cancellations);
245246
app.use('/admin/projects', admin_project_members);
247+
app.use('/admin/stats', admin_stats);
246248
app.use('/article', public_article);
247249
app.use('/sitemap.txt', sitemap);
248250
app.use('/subscription', subscription);

0 commit comments

Comments
 (0)