@@ -7,6 +7,8 @@ import { ussdRouter } from "./delivery/ussd.js";
77import { smsRouter } from "./routes/sms.js" ;
88import { voiceRouter } from "./routes/voice.js" ;
99import { usersRouter } from "./routes/users.js" ;
10+ import { User } from "./models/User.js" ;
11+ import { Notification } from "./models/Notification.js" ;
1012
1113export const app = express ( ) ;
1214
@@ -26,9 +28,54 @@ app.use("/voice", voiceRouter);
2628
2729app . use ( "/api/alerts" , alertsRouter ) ;
2830app . use ( "/api/bulletins" , bulletinsRouter ) ;
29-
3031app . use ( "/api/users" , usersRouter ) ;
3132
33+ // 1. Fetch all registered beneficiaries
34+ app . get ( "/api/users" , async ( req , res ) => {
35+ try {
36+ const users = await User . findAll ( {
37+ order : [ [ "createdAt" , "DESC" ] ] ,
38+ } ) ;
39+
40+ return res . status ( 200 ) . json ( {
41+ success : true ,
42+ data : users ,
43+ } ) ;
44+ } catch ( error ) {
45+ console . error ( "[Admin] Error fetching users:" , error ) ;
46+ return res . status ( 500 ) . json ( { error : "Failed to retrieve users" } ) ;
47+ }
48+ } ) ;
49+
50+ // 2. Fetch all alert dispatch logs
51+ app . get ( "/api/logs" , async ( req , res ) => {
52+ try {
53+ const logs = await Notification . findAll ( {
54+ order : [ [ "updatedAt" , "DESC" ] ] ,
55+ } ) ;
56+
57+ // Map the database model keys to match the frontend table schema
58+ const formattedLogs = logs . map ( ( log ) => ( {
59+ timestamp : log . updatedAt || log . createdAt ,
60+ alertKey : log . hazardType
61+ ? `${ log . hazardType } -${ log . location } `
62+ : "Manual-Alert" ,
63+ phone : log . phoneNumber ,
64+ smsSent : log . smsSent ,
65+ callAttempts : log . callAttempts ,
66+ callAnswered : log . callAnswered ,
67+ } ) ) ;
68+
69+ return res . status ( 200 ) . json ( {
70+ success : true ,
71+ data : formattedLogs ,
72+ } ) ;
73+ } catch ( error ) {
74+ console . error ( "[Admin] Error fetching logs:" , error ) ;
75+ return res . status ( 500 ) . json ( { error : "Failed to retrieve dispatch logs" } ) ;
76+ }
77+ } ) ;
78+
3279// Fallback for unmatched routes
3380app . use ( ( req , res ) => {
3481 res . status ( 404 ) . json ( { error : "Not found" } ) ;
0 commit comments