From 8cde8bb8b9e8a14c29561242d5a6da406c800b5b Mon Sep 17 00:00:00 2001 From: Browdonche Date: Tue, 24 Jun 2025 17:57:06 +0100 Subject: [PATCH 1/2] Done require veriification --- .idea/.gitignore | 3 + .idea/QueueMe-App.iml | 9 + .idea/caches/deviceStreaming.xml | 787 +++++++++++++++++++++++++++++ .idea/misc.xml | 6 + .idea/modules.xml | 8 + .idea/vcs.xml | 6 + client/src/pages/StaffDashboard.js | 89 +++- 7 files changed, 907 insertions(+), 1 deletion(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/QueueMe-App.iml create mode 100644 .idea/caches/deviceStreaming.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/QueueMe-App.iml b/.idea/QueueMe-App.iml new file mode 100644 index 0000000..d6ebd48 --- /dev/null +++ b/.idea/QueueMe-App.iml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml new file mode 100644 index 0000000..8178718 --- /dev/null +++ b/.idea/caches/deviceStreaming.xml @@ -0,0 +1,787 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1945ce5 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..eaecc99 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/client/src/pages/StaffDashboard.js b/client/src/pages/StaffDashboard.js index 2d153c4..d34347b 100644 --- a/client/src/pages/StaffDashboard.js +++ b/client/src/pages/StaffDashboard.js @@ -1,4 +1,91 @@ import React from "react"; export default function StaffDashboard() { return
StaffDashboard Page
; -} \ No newline at end of file +} + +// staffDashboard.js (Express.js server + MySQL integration for QueueMe Staff Dashboard) + +const express = require('express'); +const mysql = require('mysql2'); +const cors = require('cors'); + +const app = express(); +app.use(cors()); +app.use(express.json()); + +// MySQL database connection +const db = mysql.createConnection({ + host: 'localhost', + user: 'root', + password: 'your_password', + database: 'queueme_db' +}); + +db.connect(err => { + if (err) throw err; + console.log('Connected to MySQL database.'); +}); + +// Endpoint: Get all active queues +app.get('/api/queues', (req, res) => { + const sql = `SELECT * FROM queues WHERE status = 'active' ORDER BY created_at ASC`; + db.query(sql, (err, results) => { + if (err) return res.status(500).json({ error: err.message }); + res.json(results); + }); +}); + +// Endpoint: Get queue stats for dashboard (e.g., average wait time, number of people) +app.get('/api/dashboard/stats', (req, res) => { + const sql = ` + SELECT + (SELECT COUNT(*) FROM queues WHERE status = 'active') AS active_queues, + (SELECT COUNT(*) FROM queues WHERE status = 'completed') AS completed_today, + (SELECT AVG(TIMESTAMPDIFF(MINUTE, created_at, completed_at)) FROM queues WHERE status = 'completed') AS avg_wait_time + `; + + db.query(sql, (err, stats) => { + if (err) return res.status(500).json({ error: err.message }); + res.json(stats[0]); + }); +}); + +// Endpoint: Update queue status (e.g., completed or skipped) +app.post('/api/queue/update', (req, res) => { + const { queue_id, status } = req.body; + const sql = `UPDATE queues SET status = ?, completed_at = NOW() WHERE id = ?`; + + db.query(sql, [status, queue_id], (err, result) => { + if (err) return res.status(500).json({ error: err.message }); + res.json({ message: 'Queue updated successfully.' }); + }); +}); + +// Start the server +const PORT = 5000; +app.listen(PORT, () => { + console.log(`Server running on http://localhost:${PORT}`); +}); + +/* SQL Schema Example (queueme_db) + +CREATE DATABASE queueme_db; +USE queueme_db; + +CREATE TABLE queues ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + branch VARCHAR(100), + service_type VARCHAR(100), + status ENUM('active', 'completed', 'skipped') DEFAULT 'active', + created_at DATETIME DEFAULT CURRENT_TIMESTAMP, + completed_at DATETIME NULL +); + +CREATE TABLE users ( + id INT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(100), + email VARCHAR(100) UNIQUE, + role ENUM('user', 'staff', 'admin') DEFAULT 'user' +); +*/ From f9264c07aebc5ec04fdcce93945a8b8cb3ffef63 Mon Sep 17 00:00:00 2001 From: Browdonche Date: Wed, 25 Jun 2025 10:56:30 +0100 Subject: [PATCH 2/2] Modifications had been done --- client/src/pages/StaffDashboard.js | 89 +---------------------------- server/Express.js/staffDashboard.js | 27 +++++++++ 2 files changed, 28 insertions(+), 88 deletions(-) create mode 100644 server/Express.js/staffDashboard.js diff --git a/client/src/pages/StaffDashboard.js b/client/src/pages/StaffDashboard.js index d34347b..2d153c4 100644 --- a/client/src/pages/StaffDashboard.js +++ b/client/src/pages/StaffDashboard.js @@ -1,91 +1,4 @@ import React from "react"; export default function StaffDashboard() { return
StaffDashboard Page
; -} - -// staffDashboard.js (Express.js server + MySQL integration for QueueMe Staff Dashboard) - -const express = require('express'); -const mysql = require('mysql2'); -const cors = require('cors'); - -const app = express(); -app.use(cors()); -app.use(express.json()); - -// MySQL database connection -const db = mysql.createConnection({ - host: 'localhost', - user: 'root', - password: 'your_password', - database: 'queueme_db' -}); - -db.connect(err => { - if (err) throw err; - console.log('Connected to MySQL database.'); -}); - -// Endpoint: Get all active queues -app.get('/api/queues', (req, res) => { - const sql = `SELECT * FROM queues WHERE status = 'active' ORDER BY created_at ASC`; - db.query(sql, (err, results) => { - if (err) return res.status(500).json({ error: err.message }); - res.json(results); - }); -}); - -// Endpoint: Get queue stats for dashboard (e.g., average wait time, number of people) -app.get('/api/dashboard/stats', (req, res) => { - const sql = ` - SELECT - (SELECT COUNT(*) FROM queues WHERE status = 'active') AS active_queues, - (SELECT COUNT(*) FROM queues WHERE status = 'completed') AS completed_today, - (SELECT AVG(TIMESTAMPDIFF(MINUTE, created_at, completed_at)) FROM queues WHERE status = 'completed') AS avg_wait_time - `; - - db.query(sql, (err, stats) => { - if (err) return res.status(500).json({ error: err.message }); - res.json(stats[0]); - }); -}); - -// Endpoint: Update queue status (e.g., completed or skipped) -app.post('/api/queue/update', (req, res) => { - const { queue_id, status } = req.body; - const sql = `UPDATE queues SET status = ?, completed_at = NOW() WHERE id = ?`; - - db.query(sql, [status, queue_id], (err, result) => { - if (err) return res.status(500).json({ error: err.message }); - res.json({ message: 'Queue updated successfully.' }); - }); -}); - -// Start the server -const PORT = 5000; -app.listen(PORT, () => { - console.log(`Server running on http://localhost:${PORT}`); -}); - -/* SQL Schema Example (queueme_db) - -CREATE DATABASE queueme_db; -USE queueme_db; - -CREATE TABLE queues ( - id INT AUTO_INCREMENT PRIMARY KEY, - user_id INT NOT NULL, - branch VARCHAR(100), - service_type VARCHAR(100), - status ENUM('active', 'completed', 'skipped') DEFAULT 'active', - created_at DATETIME DEFAULT CURRENT_TIMESTAMP, - completed_at DATETIME NULL -); - -CREATE TABLE users ( - id INT AUTO_INCREMENT PRIMARY KEY, - name VARCHAR(100), - email VARCHAR(100) UNIQUE, - role ENUM('user', 'staff', 'admin') DEFAULT 'user' -); -*/ +} \ No newline at end of file diff --git a/server/Express.js/staffDashboard.js b/server/Express.js/staffDashboard.js new file mode 100644 index 0000000..821498a --- /dev/null +++ b/server/Express.js/staffDashboard.js @@ -0,0 +1,27 @@ +const express = require('express'); +const mysql = require('mysql2'); +const cors = require('cors'); + +const app = express(); +app.use(cors()); +app.use(express.json()); + +// MySQL database connection +const db = mysql.createConnection({ + host: 'localhost', + user: 'root', + password: 'your_password', + database: 'queueme_db' +}); + +db.connect(err => { + if (err) throw err; + console.log('Connected to MySQL database.'); +}); + +// ...existing endpoints... + +const PORT = 5000; +app.listen(PORT, () => { + console.log(`Server running on http://localhost:${PORT}`); +}); \ No newline at end of file