Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions backend/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.vercel
4 changes: 2 additions & 2 deletions backend/drop.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,9 @@ const dotenv = require('dotenv');
const mongoose = require('mongoose');

// Replace with your MongoDB connection string
const uri = 'mongodb+srv://backendoc2002:5zneisS9SrygW9mB@pharmacy.hft0r.mongodb.net/Node-API?retryWrites=true&w=majority&appName=Pharmacy';


mongoose.connect(process.env.MONGODB_URI, { useNewUrlParser: true, useUnifiedTopology: true })
mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true })
.then(async () => {
console.log('Connected to MongoDB');
const db = mongoose.connection.db;
Expand Down
51 changes: 34 additions & 17 deletions backend/index.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
const express = require('express')
const mongoose = require('mongoose');
const cors = require('cors')
const dotenv = require('dotenv');
const employeeRoutes = require('./routes/employee.routes.js');
const orderRoutes = require('./routes/order.routes.js');
const OrderModel=require('./model/order.model.js');
const app = express()
app.use(cors())

dotenv.config();

// middleware configuration
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
Expand All @@ -23,25 +20,44 @@ app.get('/', (req, res) =>{
res.send('Hello from backend server');
});

async function upNumber(){
currentOrderNumber++;
}

mongoose.connect(process.env.MONGODB_URI)
.then(async () => {
console.log("Connected to database");

// Check the last order in the database and set currentOrderNumber
const lastOrder = await OrderModel.findOne().sort({ _id: -1 });
async function checkLastOrder(){
let lastOrder = await OrderModel.findOne().sort({ _id: -1 });
if (lastOrder) {
const lastOrderDate = new Date(lastOrder.orderDate);
const today = new Date();
if (lastOrderDate.toDateString() === today.toDateString()) {
currentOrderNumber = parseInt(lastOrder.orderID) + 1;
let lastOrderDate = new Date(lastOrder.orderDate);
let today = new Date();
let todayUTC530 = new Date(today.getTime() + (5.5 * 60 * 60 * 1000));
if (lastOrderDate.toDateString() === todayUTC530.toDateString()) {
if (currentOrderNumber - 2 === lastOrder.orderID ||
currentOrderNumber - 1 === lastOrder.orderID ||
currentOrderNumber === lastOrder.orderID) {
// Do nothing if currentOrderNumber is within the last three order IDs
} else {
await orderUpdate();
}
} else {
currentOrderNumber = 1;
}
} else {
currentOrderNumber = 1;
}
}

async function orderUpdate(){
let lastOrder = await OrderModel.findOne().sort({ _id: -1 });
currentOrderNumber = parseInt(lastOrder.orderID) + 1;
lastOrder=null;

}


mongoose.connect("mongodb+srv://backendoc2002:5zneisS9SrygW9mB@pharmacy.hft0r.mongodb.net/Node-API?retryWrites=true&w=majority&appName=Pharmacy")
.then(async () => {
console.log("Connected to database");
await checkLastOrder();
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
Expand All @@ -51,7 +67,7 @@ mongoose.connect(process.env.MONGODB_URI)
});


let currentOrderNumber = 1; // Initialize to 1 instead of 0
let currentOrderNumber;

// Reset order number at midnight
const resetOrderNumber = () => {
Expand All @@ -77,11 +93,12 @@ const scheduleReset = () => {

scheduleReset();

app.get('/api/orderNumber', (req, res) => {
app.get('/api/orderNumber', async(req, res) => {
await orderUpdate();
res.json({ currentOrderNumber });
});

app.post('/api/orderNumber/increment', (req, res) => {
currentOrderNumber += 1;
app.post('/api/orderNumber/increment', async(req, res) => {
await upNumber();
res.json({ currentOrderNumber });
});
2 changes: 1 addition & 1 deletion frontend/.env
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VITE_REACT_APP_API_BASE_URL="http://127.0.0.1:3000"
VITE_REACT_APP_API_BASE_URL=https://backend-puce-rho.vercel.app
VITE_FIREBASE_API_KEY=AIzaSyC2Z1GILEQ13_1WUjmWHVXl6X0Fh0K3XH8
VITE_FIREBASE_AUTH_DOMAIN=queue-management-87492.firebaseapp.com
VITE_FIREBASE_PROJECT_ID=queue-management-87492
Expand Down
32 changes: 18 additions & 14 deletions frontend/src/components/EmployeeInterface/EmployeeInterface.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,7 @@ const EmployeeInterface = () => {

const fetchOrderNumber = async () => {
try {
const response = await axios.get(
`${apiUrl}/api/orderNumber`
);
const response = await axios.get(`${apiUrl}/api/orderNumber`);
setCurrentOrder(response.data.currentOrderNumber);
} catch (error) {
addNotification(error.message, 'error');
Expand Down Expand Up @@ -93,43 +91,49 @@ const EmployeeInterface = () => {
window.removeEventListener("keydown", handleKeyDown);
};
}, []);
const incrementOrderNumber = async () => {
try {
setLoading(true);
const response = await axios.post(`${apiUrl}/api/orderNumber/increment`);
await fetchOrderNumber();
} catch (err) {
console.error(err);
} finally {
setLoading(false);
}
};

const handlePrintToken = async () => {
setLoading(true);
try {
setLoading(true);
const employeeIDWithPrefix = employeeID;
const checkResponse = await axios.get(
`${apiUrl}/api/employee/check/${employeeIDWithPrefix}`
);

if (!checkResponse.data.exists) {
addNotification("Invalid Employee ID", 'error');
setLoading(false);
return;
}

await fetchOrderNumber();

const timestamp = new Date();
const utc530Timestamp = new Date(timestamp.getTime() + (5.5 * 60 * 60 * 1000));
const orderData = {
orderID: currentOrder,
orderDate: timestamp.toLocaleDateString("en-CA"),
orderTime: timestamp.toLocaleTimeString("en-US"),
orderDate: utc530Timestamp.toLocaleDateString("en-CA"),
orderTime: utc530Timestamp.toLocaleTimeString("en-US"),
orderStatus: "Pending",
EmpID: employeeID
};


const orderResponse = await axios.post(`${apiUrl}/api/order`, orderData);
await axios.post(`${apiUrl}/api/order`, orderData);
addNotification("Order posted successfully", 'success');

const response = await axios.post(
`${apiUrl}/api/orderNumber/increment`
);
setCurrentOrder(response.data.currentOrderNumber);
await incrementOrderNumber();
addNotification("Order Placed Successfully", 'success');


} catch (error) {
setLoading(false);
if (error.response && error.response.status === 404) {
Expand Down