Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions src/backend/api/managerAction.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
);
}
}
);
Expand Down
43 changes: 23 additions & 20 deletions src/backend/api/managerReport.js
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down Expand Up @@ -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());
Expand Down Expand Up @@ -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());
Expand All @@ -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);
Expand Down
45 changes: 23 additions & 22 deletions src/frontend/src/manager-pages/Inventory.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React, { useState, useEffect } from 'react';
import React, { useState, useEffect, useCallback } from 'react';
import './style.css';
import axios from "axios";

Expand All @@ -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
Expand All @@ -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 (<body class="body">
Expand Down Expand Up @@ -80,20 +81,20 @@ function Inventory () {

<div>
<h2>Update Inventory</h2>
<form onSubmit={handleSubmit} id = "form1">
<form id = "form1" onSubmit={handleSubmit}>
<label>
Ingredient ID:
<input type="text" name="ingredientid" value={formData.ingredientid} onChange={handleInputChange} />
<input type="text" name="ingredientid" id="ingredientid" />
</label>
<br />
<label>
New Current Amount:
<input type="text" name="curramount" value={formData.curramount} onChange={handleInputChange} />
<input type="text" name="curramount" id="curramount" />
</label>
<br />
<label>
New Min Amount:
<input type="text" name="minamount" value={formData.minamount} onChange={handleInputChange} />
<input type="text" name="minamount" id="minamount"/>
</label>
<br />
<button form = "form1" type="submit">Update</button>
Expand Down