From 34c6a43fdc898c86977b751e919eb2cb3f85a7e8 Mon Sep 17 00:00:00 2001 From: grimhilt Date: Wed, 29 Mar 2023 16:48:28 +0200 Subject: [PATCH] get members --- back/controllers/members.js | 17 +++++++++++++++++ back/db/api.js | 17 ++++++++++++++++- back/routes/mail.js | 5 +++++ front/src/store/store.js | 18 +++++++++++++++++- 4 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 back/controllers/members.js diff --git a/back/controllers/members.js b/back/controllers/members.js new file mode 100644 index 0000000..ab44c9b --- /dev/null +++ b/back/controllers/members.js @@ -0,0 +1,17 @@ +const statusCode = require("../utils/statusCodes").statusCodes; +const { getMembers } = require("../db/api.js"); +const { logger } = require("../system/Logger"); + +async function members(body, res) { + const { roomId } = body; + getMembers(roomId).then((addresses) => { + res.status(statusCode.OK).json(addresses); + }).catch((err) => { + logger.error(err) + res.status(statusCode.INTERNAL_SERVER_ERROR); + }); +} + +module.exports = { + members, +}; diff --git a/back/db/api.js b/back/db/api.js index 5a25060..68da6d4 100644 --- a/back/db/api.js +++ b/back/db/api.js @@ -97,9 +97,24 @@ async function getMessages(roomId) { return await execQueryAsync(query, values); } +async function getMembers(roomId) { + const query = ` + SELECT + address.address_id, + address.address_name, + address.email + FROM app_room_member + INNER JOIN address ON address.address_id = app_room_member.member_id + WHERE app_room_member.room_id = ? + `; + const values = [roomId]; + return await execQueryAsync(query, values); +} + module.exports = { registerAccount, getAccounts, getRooms, - getMessages + getMessages, + getMembers }; diff --git a/back/routes/mail.js b/back/routes/mail.js index 67bceb4..6337951 100644 --- a/back/routes/mail.js +++ b/back/routes/mail.js @@ -33,6 +33,11 @@ router.get("/:roomId/messages", async (req, res) => { await messages(req.params, res); }); +router.get("/:roomId/members", async (req, res) => { + const { roomId } = req.params; + await members(req.params, res); +}); + /** * Register a new mailbox inside the app */ diff --git a/front/src/store/store.js b/front/src/store/store.js index 7c8b3fc..b11a2e0 100644 --- a/front/src/store/store.js +++ b/front/src/store/store.js @@ -6,7 +6,7 @@ import Account from "./models/Account"; const store = createStore({ state() { return { - rooms: [new Room({id:12, user: "user", roomName: "room name", mailbboxId:2})], + rooms: [new Room({ id: 12, user: "user", roomName: "room name", mailbboxId: 2 })], messages: [], accounts: [new Account(0, "ALL")], activeAccount: 0, @@ -44,6 +44,12 @@ const store = createStore({ }); room.messagesFetched = true; }, + addAddress(state, payload) { + // todo add if not exist + payload.addresses.forEach((address) => { + state.addresses.push(address); + }); + }, }, getters: { rooms: (state) => () => { @@ -83,6 +89,7 @@ const store = createStore({ }, fetchMessages: async (context, data) => { if (!data.room || data.room?.fetched == false) { + store.dispatch("fetchAddress", { roomId: data.roomId }); API.getMessages(data.roomId) .then((res) => { context.commit("addMessages", { messages: res.data, roomId: data.roomId }); @@ -92,6 +99,15 @@ const store = createStore({ }); } }, + fetchRoomMembers: async (context, data) => { + API.getMembers(data.roomId) + .then((res) => { + context.commit("addAddress", { addresses: res.data, roomId: data.roomId }); + }) + .catch((err) => { + console.log(err); + }); + }, }, });