diff --git a/src/backend/api/managerAction.js b/src/backend/api/managerAction.js index 393d11e..0c57055 100644 --- a/src/backend/api/managerAction.js +++ b/src/backend/api/managerAction.js @@ -21,11 +21,14 @@ const updateInventory = (request, response) => { if (error) { response.status(404).json("Error update inventory item"); } else { - pool.query("SELECT * from inventory", (error, results) => { - if (error) { - response.status(404).json(error.toString()); - } else response.status(200).json(results.rows); - }); + pool.query( + "SELECT * from inventory ORDER BY ingredientid", + (error, results) => { + if (error) { + response.status(404).json(error.toString()); + } else response.status(200).json(results.rows); + } + ); } } ); diff --git a/src/backend/api/managerReport.js b/src/backend/api/managerReport.js index 1290967..aa7efd1 100644 --- a/src/backend/api/managerReport.js +++ b/src/backend/api/managerReport.js @@ -21,13 +21,13 @@ const getSalesReport = (request, response) => { let endTime = request.query["end"] + " 23:59:59"; pool.query( 'SELECT menuitems.menuitemid as "id", menuitems.name as "Menu Item", COUNT(1) as "Quantity Sold" , ROUND(CAST(SUM(orderlineitems.menuprice) AS numeric), 2) as "Sales"\n' + - "FROM orderlineitems \n" + - "JOIN menuitems ON orderlineitems.menuitemID = menuitems.menuItemID JOIN orders ON orderlineitems.orderID = orders.orderID \n" + - "WHERE orders.ordertime BETWEEN '" + - startTime + - "' AND '" + - endTime + - "' GROUP BY menuitems.menuitemid", + "FROM orderlineitems \n" + + "JOIN menuitems ON orderlineitems.menuitemID = menuitems.menuItemID JOIN orders ON orderlineitems.orderID = orders.orderID \n" + + "WHERE orders.ordertime BETWEEN '" + + startTime + + "' AND '" + + endTime + + "' GROUP BY menuitems.menuitemid", (error, results) => { if (error) { response.status(404).json(error.toString()); @@ -61,10 +61,10 @@ const getExcessReport = (request, response) => { let formattedDateTime = year + "-" + month + "-" + date + " 23:59:59"; pool.query( "select t2.ingredientid, t1.soldqty, t2.name, t2.currAmount, t2.unit, t2.minAmount, t2.cost from (select it.ingredientid, sum(it.qty) as soldqty from inventorytransactions as it where it.ordertime between '" + - startDate + - "' AND '" + - formattedDateTime + - "' group by it.ingredientid) t1 RIGHT JOIN (select i.ingredientID, i.name, i.currAmount, i.unit, i.minAmount, i.cost from inventory as i) t2 ON t1.ingredientID = t2.ingredientID WHERE (t1.soldqty < (t2.currAmount + t1.soldqty) * 0.1) or (soldqty is NULL);", + startDate + + "' AND '" + + formattedDateTime + + "' group by it.ingredientid) t1 RIGHT JOIN (select i.ingredientID, i.name, i.currAmount, i.unit, i.minAmount, i.cost from inventory as i) t2 ON t1.ingredientID = t2.ingredientID WHERE (t1.soldqty < (t2.currAmount + t1.soldqty) * 0.1) or (soldqty is NULL);", (error, results) => { if (error) { response.status(404).json(error.toString()); @@ -97,10 +97,10 @@ const getSalesFrequentlyTogetherReport = (request, response) => { let endTime = request.query["end"] + " 23:59:59"; pool.query( "select t1.firstitem, t1.seconditem, t1.concat as menuitemstogether, COUNT(t1.concat) from (SELECT a.menuitemid as firstitem, b.menuitemid as seconditem, a.orderid, CONCAT(a.menuitemid, ' ', b.menuitemid) FROM orderlineitems a JOIN orderlineitems b ON a.orderid = b.orderid and a.menuitemid < b.menuitemid) t1 INNER JOIN (select orders.ordertime, orders.orderid from orders where orders.ordertime between '" + - startTime + - "' AND '" + - endTime + - "' group by orders.orderid) t2 ON t1.orderid = t2.orderid GROUP BY t1.firstitem, t1.seconditem, t1.concat ORDER BY COUNT(t1.concat) DESC;", + startTime + + "' AND '" + + endTime + + "' group by orders.orderid) t2 ON t1.orderid = t2.orderid GROUP BY t1.firstitem, t1.seconditem, t1.concat ORDER BY COUNT(t1.concat) DESC;", (error, results) => { if (error) { response.status(404).json(error.toString()); @@ -111,11 +111,14 @@ const getSalesFrequentlyTogetherReport = (request, response) => { }; const getInventoryReport = (request, response) => { - pool.query("SELECT * from inventory", (error, results) => { - if (error) { - response.status(404).json(error.toString()); - } else response.status(200).json(results.rows); - }); + pool.query( + "SELECT * from inventory ORDER BY ingredientid", + (error, results) => { + if (error) { + response.status(404).json(error.toString()); + } else response.status(200).json(results.rows); + } + ); }; router.get("/x-report", getXReport); diff --git a/src/frontend/src/manager-pages/Inventory.jsx b/src/frontend/src/manager-pages/Inventory.jsx index 19c6db6..4ceed12 100644 --- a/src/frontend/src/manager-pages/Inventory.jsx +++ b/src/frontend/src/manager-pages/Inventory.jsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import React, { useState, useEffect, useCallback } from 'react'; import './style.css'; import axios from "axios"; @@ -9,7 +9,6 @@ import axios from "axios"; */ function Inventory () { const [data, setData] = useState([]); - const [formData, setFormData] = useState({ingredientid: null, curramount: null, minamount: null}); useEffect(() => { axios @@ -20,28 +19,30 @@ function Inventory () { .catch((error) => { console.log(error); }); - }, []); + }, [data]); - const handleInputChange = (event) => { - const target = event.target; - const value = target.value; - const name = target.name; - setFormData({...formData, [name]: value}); - } + const handleSubmit = (e) => { + e.preventDefault(); + const { ingredientid, minamount, curramount } = e.target.elements; + console.log({ingredientid: ingredientid.value, minamount: minamount.value , curramount: curramount.value}); - const handleSubmit = (event,ingredientid,curramount,minamount) => { - event.preventDefault(); - var raw = JSON.stringify({ - "ingredientid": new Number(ingredientid), - "curramount": new Number(curramount), - "minamount": new Number(minamount) + const raw = JSON.stringify({ + ingredientid: ingredientid.value, + minamount: minamount.value, + curramount: curramount.value, }); var requestOptions = { - method: 'POST', - body: raw + headers: { + "Content-type": "application/json; charset=UTF-8", + }, + method: "POST", + body: raw, }; - fetch('https://revs-grill-backend.onrender.com/manager/action/update-inventory',requestOptions) + console.log(requestOptions.body); + fetch('https://revs-grill-backend.onrender.com/manager/action/update-inventory', requestOptions) + .then(response => response.json()) + .then(data => setData(data)); } return (
@@ -80,20 +81,20 @@ function Inventory () {