From acbc90f2ec572cd1e3bdfb8c7a2f0244da33039b Mon Sep 17 00:00:00 2001 From: JanefrancessC Date: Thu, 18 Jan 2024 17:58:14 +0000 Subject: [PATCH 1/4] resolved conflicts while merging --- server/api.js | 2 ++ server/controllers/dataAccess.js | 15 +++++++++++++++ server/controllers/deskStatus.js | 11 +++++++++++ 3 files changed, 28 insertions(+) create mode 100644 server/controllers/deskStatus.js diff --git a/server/api.js b/server/api.js index b39e916..208ae9b 100644 --- a/server/api.js +++ b/server/api.js @@ -7,6 +7,7 @@ import { viewBookings } from "./controllers/viewBookings.js"; import { getDepartments } from "./controllers/getDepartments.js"; import {getDesks } from "./controllers/getDesks.js" import { cancelBooking } from "./controllers/cancelBooking.js"; +import { deskStatus } from "./controllers/deskStatus.js"; const router = Router(); @@ -21,6 +22,7 @@ router.post("/bookings", auth, createBooking); router.get("/bookings", auth, viewBookings); router.get("/departments", getDepartments); router.get("/desks", getDesks); +router.get("/desk/status", deskStatus) router.delete("/bookings/:bookingId", auth, cancelBooking); export default router; diff --git a/server/controllers/dataAccess.js b/server/controllers/dataAccess.js index cbcd644..14b4390 100644 --- a/server/controllers/dataAccess.js +++ b/server/controllers/dataAccess.js @@ -137,4 +137,19 @@ export const getUserBookings = async (userId) => { })); }; +// desks status +export const getDeskStatus = async () => { + try { + const deskStatusResult = await db.query(` + SELECT d.desk_id, + COALESCE(b.reservation_date IS NULL, false) AS is_available + FROM desks d + LEFT JOIN bookings b ON d.desk_id = b.desk_id + `); + return deskStatusResult.rows; + } catch (error) { + console.error({ error: "Unable to retrieve desk status" }); + } +}; + export { checkAvailability, saveBooking }; diff --git a/server/controllers/deskStatus.js b/server/controllers/deskStatus.js new file mode 100644 index 0000000..cba0e79 --- /dev/null +++ b/server/controllers/deskStatus.js @@ -0,0 +1,11 @@ +import { getDeskStatus } from "./dataAccess"; + +export const deskStatus = async(req, res) => { + try { + const deskStatusDetails = await getDeskStatus() + res.status(200).json(deskStatusDetails) + } catch (error) { + console.error(error); + res.status(500).json({ error: "Server error" }); + } +}; \ No newline at end of file From 9b7423ae1860bf2b468f82b7323f35161c4e8054 Mon Sep 17 00:00:00 2001 From: JanefrancessC Date: Thu, 18 Jan 2024 18:30:42 +0000 Subject: [PATCH 2/4] desk status --- server/controllers/dataAccess.js | 1 - 1 file changed, 1 deletion(-) diff --git a/server/controllers/dataAccess.js b/server/controllers/dataAccess.js index 14b4390..1397aab 100644 --- a/server/controllers/dataAccess.js +++ b/server/controllers/dataAccess.js @@ -8,7 +8,6 @@ import { formatDate, formatTime } from "./validators.js"; * @returns {string|null} - The desk ID if found, otherwise null. */ const getDeskId = async (deskName) => { - console.log("deskName", deskName); try { const result = await db.query( "SELECT desk_id FROM public.desks WHERE desk_name = $1", From 57d19f2aa676ec8a8944c3924f4d00fa8280b94f Mon Sep 17 00:00:00 2001 From: JanefrancessC Date: Thu, 18 Jan 2024 19:13:52 +0000 Subject: [PATCH 3/4] desk query --- server/controllers/dataAccess.js | 17 ++++++++++------- server/controllers/deskStatus.js | 3 ++- server/controllers/viewBookings.js | 3 --- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/server/controllers/dataAccess.js b/server/controllers/dataAccess.js index 1397aab..bcaddb6 100644 --- a/server/controllers/dataAccess.js +++ b/server/controllers/dataAccess.js @@ -137,14 +137,17 @@ export const getUserBookings = async (userId) => { }; // desks status -export const getDeskStatus = async () => { +export const getDeskStatus = async (date) => { try { - const deskStatusResult = await db.query(` - SELECT d.desk_id, - COALESCE(b.reservation_date IS NULL, false) AS is_available - FROM desks d - LEFT JOIN bookings b ON d.desk_id = b.desk_id - `); + const deskStatusResult = await db.query( + ` + SELECT d.*, + CASE WHEN b.booking_id IS NULL THEN 'Available' ELSE 'Booked' END AS status + FROM desks d + LEFT JOIN bookings b ON d.desk_id = b.desk_id AND b.reservation_date = $1 + `, + [date] + ); return deskStatusResult.rows; } catch (error) { console.error({ error: "Unable to retrieve desk status" }); diff --git a/server/controllers/deskStatus.js b/server/controllers/deskStatus.js index cba0e79..1baec80 100644 --- a/server/controllers/deskStatus.js +++ b/server/controllers/deskStatus.js @@ -2,7 +2,8 @@ import { getDeskStatus } from "./dataAccess"; export const deskStatus = async(req, res) => { try { - const deskStatusDetails = await getDeskStatus() + const { date } = req.body; + const deskStatusDetails = await getDeskStatus(date) res.status(200).json(deskStatusDetails) } catch (error) { console.error(error); diff --git a/server/controllers/viewBookings.js b/server/controllers/viewBookings.js index 4d75df8..7f7ad8d 100644 --- a/server/controllers/viewBookings.js +++ b/server/controllers/viewBookings.js @@ -19,9 +19,6 @@ export const viewBookings = async (req, res) => { } - if (bookingDetails.length === 0) { - res.status(404).json({ message: "No bookings found" }) - } res.json(bookingDetails); } catch (error) { console.error(error); From 2a81b2e889ac15f9ed2d308c8a90da8bd4c40f12 Mon Sep 17 00:00:00 2001 From: JanefrancessC Date: Thu, 18 Jan 2024 19:37:47 +0000 Subject: [PATCH 4/4] desk status endpoint --- package-lock.json | 14 -------------- server/controllers/dataAccess.js | 2 +- 2 files changed, 1 insertion(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8bd530b..3ddca7e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6571,20 +6571,6 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", diff --git a/server/controllers/dataAccess.js b/server/controllers/dataAccess.js index bcaddb6..a6e4880 100644 --- a/server/controllers/dataAccess.js +++ b/server/controllers/dataAccess.js @@ -142,7 +142,7 @@ export const getDeskStatus = async (date) => { const deskStatusResult = await db.query( ` SELECT d.*, - CASE WHEN b.booking_id IS NULL THEN 'Available' ELSE 'Booked' END AS status + CASE WHEN b.booking_id IS NULL THEN 'Open' ELSE 'Closed' END AS status FROM desks d LEFT JOIN bookings b ON d.desk_id = b.desk_id AND b.reservation_date = $1 `,