diff --git a/backend/api/account/accountController.js b/backend/api/account/accountController.js index 7c35930..074f6f1 100644 --- a/backend/api/account/accountController.js +++ b/backend/api/account/accountController.js @@ -3,12 +3,13 @@ const accountService = require('./accountService'); const getAccountAllowance = async (req, res) => { try { - const username = req.body.username; - const response = await accountService.getAccountAllowance(username); - debug.info(`Account Allowance Response: ${JSON.stringify(response)}`); + // TODO: Input verification logic? + const accountName = req.params.username; + const response = await accountService.getAccountAllowance(accountName); + debug.info(`Response for getting an account's allowance: ${JSON.stringify(response)}`); + if (!response.success) res.status(500).json(response); else res.status(200).json(response); - } catch (error) { debug.error(error.stack); res.status(500).json({ message: error.message, error: error.stack }); diff --git a/backend/api/account/accountService.js b/backend/api/account/accountService.js index 43c6b5c..636ab81 100644 --- a/backend/api/account/accountService.js +++ b/backend/api/account/accountService.js @@ -5,14 +5,19 @@ const collection = require('../../db/collection'); const DOC_NAME = 'nicks-family'; const MEMBERS_SUBCOLLECTION_NAME = 'members'; -const getAccountAllowance = async (username) => { - try { - // get allowance from firestore - return { success: true, message: nodes }; - } catch (error) { - debug.error(error.stack); - throw new Error(error); +const getAccountAllowance = async (accountName) => { + const docRef = await collection.doc(DOC_NAME).collection(MEMBERS_SUBCOLLECTION_NAME).doc(accountName); + const doc = await docRef.get(); + if (!doc.exists) { + const errMsg = `Firestore document "${docName}/${subcollectionName}/${accountName}" does not exist in the families collection`; + debug.error(errMsg); + throw new Error(errMsg); } + + // TODO: Error handling? + const allowance = doc.data().allowance; + return { success: true, allowance }; + }; const getAccountBalance = async () => { diff --git a/backend/api/account/index.js b/backend/api/account/index.js index c1d2802..c8de08a 100644 --- a/backend/api/account/index.js +++ b/backend/api/account/index.js @@ -5,7 +5,7 @@ const { getAccountAllowance, payInvoice, createInvoice, getAccountBalance, getAc router.get('/account/balance', getAccountBalance); router.get('/:username/permissions', getAccountPermissions); -router.get('/allowance', getAccountAllowance); +router.get('/:username/allowance', getAccountAllowance); router.get('/payment/send', payInvoice); router.get('/payment/receive', createInvoice);