diff --git a/backend/database.db b/backend/database.db index 321244b..f5f73f4 100644 Binary files a/backend/database.db and b/backend/database.db differ diff --git a/backend/index.js b/backend/index.js index 106a9a1..d9423cb 100644 --- a/backend/index.js +++ b/backend/index.js @@ -19,30 +19,58 @@ app.get('/', (req, res) => { app.get('/currentRooms', (req, res) => { // req has no data // res has all room at current time + console.log("currentRooms"); let stmt = db.prepare(`SELECT * FROM TimeSlots`); let records = stmt.all(); res.status(200).json({records: records}); - console.log("currentRooms"); }); -app.get('/addTimeslot', (req, res) => { +app.post('/addTimeSlot', (req, res) => { // req has roomid userid starttime and end time // res has success or faliure + console.log("addTimeSlot"); + const body = req.body; + let roomid = parseInt(body.roomid); + let userid = parseInt(body.userid); + let stmt = db.prepare(`INSERT INTO TimeSlots (TimeStart, TimeEnd, Room) VALUES ('${body.startTime}', '${body.endTime}', ${roomid});`); + stmt.run(); + stmt = db.prepare(`UPDATE Users SET Submissions = Submissions + 1 WHERE Id=${userid};`); + stmt.run(); + res.status(200).send("added timeslot"); }); -app.get('/addRoom', (req, res) => { +app.post('/addRoom', (req, res) => { // req has userid and roomname // res has success or faliure + console.log("addRoom"); + const body = req.body; + let name = req.body.roomName.toUpperCase(); + let stmt = db.prepare(`SELECT * FROM Rooms WHERE RoomName='${name}'`); + let storedRecord = stmt.get(); + if (storedRecord) { + res.status(400).send("room already exists"); + return; + } + stmt = db.prepare(`INSERT INTO Rooms (RoomName) VALUES (${name})`); + stmt.run(); + stmt = db.prepare(`UPDATE Users SET Submissions = Submissions + 1 WHERE Id=${parseInt(body.userid)};`); + stmt.run(); + res.status(200).send("added room"); }); app.get('/getRooms', (req, res) => { // req has no data // res has success or faliure + console.log("getRooms"); + let stmt = db.prepare(`SELECT * FROM Rooms`); + let records = stmt.all(); + res.status(200).send({records: records}); }); app.post('/createUser', async (req, res) => { // req has email pass(hashed) and name // res has success or fail + console.log("sign up"); const body = req.body; let stmt = db.prepare(`SELECT * FROM Users WHERE Email='${body.email}';`); let storedRecord = stmt.get(); @@ -53,23 +81,26 @@ app.post('/createUser', async (req, res) => { const generatedHash = await bcrypt.hash(body.pass, 10); stmt = db.prepare(`INSERT INTO Users (Email, Pass, Username, Submissions) VALUES ('${body.email}', '${generatedHash}', '${body.name}', 0)`); stmt.run(); - res.status(200).send("account created"); - console.log("sign up"); + stmt = db.prepare(`SELECT Id FROM Users WHERE Email='${body.email}';`); + const uid = stmt.get(); + res.status(200).send({uid: uid}); }); app.post('/login', async (req, res) => { // req has email and pass(hashed) // res has success or fail + console.log("login"); const body = req.body; - const stmt = db.prepare(`SELECT Pass FROM Users WHERE Email='${body.email}';`); + let stmt = db.prepare(`SELECT Pass FROM Users WHERE Email='${body.email}';`); let storedHash = stmt.get(); if (!storedHash) { res.status(400).send("problem with email"); return; } if (await bcrypt.compare(body.pass, storedHash.Pass)){ - res.send(200); - console.log("login"); + stmt = db.prepare(`SELECT Id FROM Users WHERE Email='${body.email}';`); + const uid = stmt.get(); + res.status(200).send({uid: uid}); } else { res.status(400).send("incorrect password"); } diff --git a/backend/setup.js b/backend/setup.js index bc61812..402fac4 100644 --- a/backend/setup.js +++ b/backend/setup.js @@ -14,7 +14,7 @@ CREATE TABLE Users ( CREATE TABLE Rooms ( Id INTEGER PRIMARY KEY ASC AUTOINCREMENT, - RoomName TEXT + RoomName TEXT UNIQUE ); CREATE TABLE TimeSlots ( diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 098bcbf..0b602f6 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -3,6 +3,7 @@ import { onBeforeMount, ref } from 'vue'; import Login from './components/Login.vue'; import HomePage from './components/HomePage.vue'; import AddTimeSlot from './components/AddTimeSlot.vue'; +import AddRoom from './components/AddRoom.vue'; const page = ref(0); @@ -17,5 +18,6 @@ onBeforeMount(async () => { diff --git a/frontend/src/components/AddRoom.vue b/frontend/src/components/AddRoom.vue new file mode 100644 index 0000000..1c11033 --- /dev/null +++ b/frontend/src/components/AddRoom.vue @@ -0,0 +1,30 @@ + + \ No newline at end of file diff --git a/frontend/src/components/AddTimeSlot.vue b/frontend/src/components/AddTimeSlot.vue index 14d64fe..125287c 100644 --- a/frontend/src/components/AddTimeSlot.vue +++ b/frontend/src/components/AddTimeSlot.vue @@ -1,7 +1,45 @@ \ No newline at end of file diff --git a/frontend/src/components/HomePage.vue b/frontend/src/components/HomePage.vue index 01bb9f2..65870ea 100644 --- a/frontend/src/components/HomePage.vue +++ b/frontend/src/components/HomePage.vue @@ -6,8 +6,7 @@ const rooms = ref(); defineEmits(['addSlot']); onBeforeMount(async () => { const res = await fetch("http://localhost:3000/currentRooms", { - method: "GET", - headers: new Headers({'content-type': 'application/json'}) + method: "GET" }); rooms.value = await res.json(); }); @@ -19,6 +18,7 @@ onBeforeMount(async () => {

Free Rooms:

+ {{ rooms.records }}

No free rooms right now