From 596baff4b32e304e02ab857bc4ae7f274238562a Mon Sep 17 00:00:00 2001 From: rui hildt Date: Wed, 6 May 2020 13:17:52 +0200 Subject: [PATCH] Complete meeting endpoints --- api/models/meetingModel.js | 62 ++++++++++++++++++++++++++++++++------ api/routes/meetingRoute.js | 36 +++++++++++++++++++++- 2 files changed, 87 insertions(+), 11 deletions(-) diff --git a/api/models/meetingModel.js b/api/models/meetingModel.js index a5e4cd2..7ad1b97 100644 --- a/api/models/meetingModel.js +++ b/api/models/meetingModel.js @@ -5,7 +5,9 @@ module.exports = { getMeetingById, updateMeeting, deleteMeeting, - // getMeetingsByAccountId, + getParticipantsByMeetingId, + getPossibleDatesByMeetingId, + getAvailibilityByMeetingId, }; function addMeeting(data) { @@ -14,9 +16,9 @@ function addMeeting(data) { .returning([ 'id', 'title', - 'description', - 'start_time', - 'timezone', + 'description', + 'start_time', + 'timezone', 'duration', 'status', ]); @@ -29,9 +31,9 @@ function updateMeeting(data, id) { .returning([ 'id', 'title', - 'description', - 'start_time', - 'timezone', + 'description', + 'start_time', + 'timezone', 'duration', 'status', ]); @@ -48,10 +50,50 @@ function getMeetingById(id) { .select( 'id', 'title', - 'description', - 'start_time', - 'timezone', + 'description', + 'start_time', + 'timezone', 'duration', 'status', ); } + +function getParticipantsByMeetingId(meeting_id) { + return db('participant as p') + .select( + 'p.account_id', + 'p.meeting_id', + 'p.earliest_time', + 'p.latest_time', + 'p.quorum', + 'p.mandatory', + 'p.host', + 'p.answered', + 'p.timezone', + ) + .join('meeting as m', { 'm.id': 'p.meeting_id' }) + .where({ meeting_id }); +} + +function getPossibleDatesByMeetingId(meeting_id) { + return db('possible_date as p') + .select('p.id', 'p.meeting_id', 'p.possible_date') + .join('meeting as m', { 'm.id': 'p.meeting_id' }) + .where({ meeting_id }); +} + +function getAvailibilityByMeetingId(meeting_id) { + return db('availibility as a') + .select( + 'a.id', + 'a.meeting_id', + 'a.account_id', + 'a.possible_date_id', + 'a.preference', + 'a.start_time', + 'a.end_time', + 'a.timezone', + ) + .join('meeting as m', { 'm.id': 'a.meeting_id' }) + .where({ meeting_id }); +} diff --git a/api/routes/meetingRoute.js b/api/routes/meetingRoute.js index 6baf50c..030df66 100644 --- a/api/routes/meetingRoute.js +++ b/api/routes/meetingRoute.js @@ -40,7 +40,7 @@ router.delete('/:id', async (req, res) => { } }); -router.get('/', async (req, res) => { +router.get('/:id', async (req, res) => { const id = req.params.id; try { @@ -51,4 +51,38 @@ router.get('/', async (req, res) => { } }); + +router.get('/:id/participants', async (req, res) => { + const id = req.params.id; + + try { + const meeting = await Meeting.getParticipantsByMeetingId(id); + res.status(200).json(meeting); + } catch (error) { + res.status(500).json({ message: "Meeting doesn't exist.", error }); + } +}); + +router.get('/:id/possible-dates', async (req, res) => { + const id = req.params.id; + + try { + const meeting = await Meeting.getPossibleDatesByMeetingId(id); + res.status(200).json(meeting); + } catch (error) { + res.status(500).json({ message: "Meeting doesn't exist.", error }); + } +}); + +router.get('/:id/availibility', async (req, res) => { + const id = req.params.id; + + try { + const meeting = await Meeting.getAvailibilityByMeetingId(id); + res.status(200).json(meeting); + } catch (error) { + res.status(500).json({ message: "Meeting doesn't exist.", error }); + } +}); + module.exports = router;