diff --git a/nusmoney_backend/routes/accounts.js b/nusmoney_backend/routes/accounts.js index 898b8d9..79439c7 100644 --- a/nusmoney_backend/routes/accounts.js +++ b/nusmoney_backend/routes/accounts.js @@ -8,7 +8,7 @@ const connection = require("../connection"); }); */ /* -AddUser() +AddAccount() POST route for /accounts with body = { "id":598, @@ -22,8 +22,8 @@ AddUser() router.post("/", (request, response) => { console.log(request.body); // - connection.query(`INSERT INTO accounts(user_id, acct_type, acct_number, balance, date_created, max_limit) - VALUES (${request.body.userid},'${request.body.type}', '${request.body.account_no}', ${request.body.balance}, ${request.body.date}, ${request.body.max_limit})`, + connection.query(`INSERT INTO accounts(user_id, acct_type, acct_number, balance, max_limit) + VALUES (${request.body.userid},'${request.body.type}', '${request.body.account_no}', ${request.body.balance}, ${request.body.max_limit})`, (err, result) => { if (err) { response.send("Some record error occur"); @@ -39,7 +39,7 @@ router.post("/", (request, response) => { router.get("/", (request, response) => { console.log(request.body); // - strQuery = "SELECT * FROM accounts"; + strQuery = "SELECT * FROM accounts"; if (request.body.limit > 0) { strQuery += ` LIMIT ${request.body.limit}` } @@ -55,4 +55,124 @@ router.get("/", (request, response) => { }); }); +// DeleteAccount() +// DELETE route for /accounts query +router.delete("/", (request, response) => { + console.log(request.body); + // + strQuery = `DELETE FROM accounts WHERE acct_number = '${request.body.account_no}'`; + console.log(strQuery); + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// GetAccountById() +// GET route for /accounts/id query (AddUser) +router.get("/id", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT * FROM accounts WHERE user_id = ${request.body.id}`; + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// GetAccountByName() +// GET route for /accounts/name query +router.get("/name", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT u.name, a.* FROM accounts AS a + INNER JOIN users AS u + ON u.user_id = a.user_id + WHERE u.name = '${request.body.name}'`; + console.log(strQuery); + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// UpdateAccountBalance() +// PUT route for /accounts query +router.put("/name", (request, response) => { + console.log(request.body); + // + strQuery = `UPDATE accounts SET balance = ${request.body.balance} WHERE acct_number = ${request.body.account_no})`; + console.log(strQuery); + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// GetHighestBalance() +// GET route for /accounts/highest query +router.get("/highest", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT u.user_id, u.name, SUM(a.balance) AS total FROM accounts AS a + INNER JOIN users AS u + ON a.user_id = u.user_id + GROUP BY a.user_id + ORDER BY total DESC + LIMIT 1`; + console.log(strQuery); + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// GetLowestBalance() +// GET route for /accounts/lowest query +router.get("/lowest", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT u.user_id, u.name, SUM(a.balance) AS total FROM accounts AS a + INNER JOIN users AS u + ON a.user_id = u.user_id + GROUP BY a.user_id + ORDER BY total ASC + LIMIT 1`; + console.log(strQuery); + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + module.exports = router; diff --git a/nusmoney_backend/routes/messages.js b/nusmoney_backend/routes/messages.js index fea7078..125e9ec 100644 --- a/nusmoney_backend/routes/messages.js +++ b/nusmoney_backend/routes/messages.js @@ -2,28 +2,12 @@ const express = require('express'); const router = express.Router(); const connection = require("../connection"); -/* GET users listing. */ -/* router.get('/', function(req, res, next) { - res.send('respond with a resource'); -}); */ - -/* -AddUser() - POST route for /accounts - with body = { - "id":598, - "type": "saving", - "account_no": "111222333", - "balance": "500", - "date" : "2020-09-11", - "max_limit": "10000" -} -*/ +// add message router.post("/", (request, response) => { console.log(request.body); // - connection.query(`INSERT INTO messages (user_id, id, date, remark) - VALUES (${request.body.userid}, ${request.body.id}, ${request.body.date}, ${request.body.remark})`, + connection.query(`INSERT INTO messages (user_id, date, remark) + VALUES (${request.body.id}, NOW(), '${request.body.message}')`, (err, result) => { if (err) { response.send("Some record error occur"); @@ -34,7 +18,22 @@ router.post("/", (request, response) => { }); }); -// ShowAccounts() +// delete message +router.delete("/", (request, response) => { + console.log(request.body); + // + connection.query(`DELETE FROM messages WHERE id = ${request.body.message_id}`, + (err, result) => { + if (err) { + response.send("Some record error occur"); + } + else { + response.send(result); + } + }); +}); + +// ShowMessages() // GET route for /messages query (AddUser) router.get("/", (request, response) => { console.log(request.body); diff --git a/nusmoney_backend/routes/transactions.js b/nusmoney_backend/routes/transactions.js index cbac34b..4df419e 100644 --- a/nusmoney_backend/routes/transactions.js +++ b/nusmoney_backend/routes/transactions.js @@ -2,27 +2,11 @@ const express = require('express'); const router = express.Router(); const connection = require("../connection"); -/* GET users listing. */ -/* router.get('/', function(req, res, next) { - res.send('respond with a resource'); -}); */ - -/* -AddUser() - POST route for /accounts - with body = { - "id":598, - "type": "saving", - "account_no": "111222333", - "balance": "500", - "date" : "2020-09-11", - "max_limit": "10000" -} -*/ +// add a transaction router.post("/", (request, response) => { console.log(request.body); // - connection.query(`INSERT INTO transactions (acct_number, id, date, type, amount) + connection.query(`INSERT INTO transactions (acct_number, date, type, amount) VALUES ('${request.body.account_no}', ${request.body.date}, '${request.body.type}', ${request.body.amount})`, (err, result) => { if (err) { @@ -34,8 +18,23 @@ router.post("/", (request, response) => { }); }); -// ShowAccounts() -// GET route for /accounts query (AddUser) +// delete a transaction +router.delete("/", (request, response) => { + console.log(request.body); + // + connection.query(`DELETE FROM transactions WHERE id = ${request.body.id}`, + (err, result) => { + if (err) { + response.send("Some record error occur"); + } + else { + response.send(result); + } + }); +}); + +// ShowTransactions() +// GET route for /transactions query (AddUser) router.get("/", (request, response) => { console.log(request.body); // @@ -55,4 +54,118 @@ router.get("/", (request, response) => { }); }); +// GetTransactionByAccount +// GET route for /transactions query (AddUser) +router.get("/account", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT * FROM transactions WHERE acct_number = '${request.body.account_no}'`; + + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// GetTransactionByUserId +// GET route for /transactions query (AddUser) +router.get("/id", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT a.user_id, t.* FROM transactions AS t + INNER JOIN accounts AS a + ON a.acct_number = t.acct_number + WHERE t.acct_number + IN (SELECT acct_number FROM accounts WHERE user_id = ${request.body.id})`; + + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// GetUsersAverageMonthly +// GET route for /transactions query (AddUser) +router.get("/useravemonthly", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT a.user_id, t.date, AVG(t.amount) + FROM transactions AS t + INNER JOIN accounts AS a + ON a.acct_number = t.acct_number + GROUP BY a.user_id, MONTH(t.date), YEAR(date) + ORDER BY a.user_id`; + + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// GetTopSpender +// GET route for /transactions query (AddUser) +router.get("/top", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT a.user_id, u.name, a.acct_number, t.date, COUNT(a.user_id) as cmonth + FROM transactions AS t + INNER JOIN accounts AS a + ON a.acct_number = t.acct_number + INNER JOIN users AS u + ON u.user_id = a.user_id + GROUP BY a.user_id, MONTH(t.date), YEAR(t.date) + ORDER BY cmonth DESC + LIMIT 1`; + + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + +// GetTypeSpending +// GET route for /transactions query +router.get("/type", (request, response) => { + console.log(request.body); + // + strQuery = `SELECT t1.user_id, t1.ttype, MAX(t1.ctype) + FROM (SELECT a.user_id, a.acct_number, t.date, t.type as ttype, COUNT(t.type) as ctype + FROM transactions AS t + INNER JOIN accounts AS a + ON a.acct_number = t.acct_number + GROUP BY a.user_id, t.type + ORDER BY a.user_id) as t1 + GROUP BY t1.user_id`; + + connection.query(strQuery, + (err, result) => { + if (err) { + response.send("Some error occur"); + } + else { + response.send(result); + } + }); +}); + module.exports = router;