connected guest sides
diff --git a/src/components/Modal.js b/src/components/Modal.js
index 79cb33b..2924533 100644
--- a/src/components/Modal.js
+++ b/src/components/Modal.js
@@ -24,6 +24,7 @@ const Modal = ({ shopId, isOpen, onClose, modalContent }) => {
×
{modalContent === "edit_tables" && }
+ {modalContent === "new_transaction" && }
);
diff --git a/src/components/TableMaps.js b/src/components/TableMaps.js
index 4bac910..ce8ac80 100644
--- a/src/components/TableMaps.js
+++ b/src/components/TableMaps.js
@@ -101,10 +101,10 @@ const TableCanvas = ({ shopId }) => {
context.textBaseline = "middle";
context.fillText(
table.tableId === (selectedTable?.tableId || newTable?.tableId)
- ? tableNo == 0
+ ? tableNo === 0
? "clerk"
: tableNo
- : table.tableNo == 0
+ : table.tableNo === 0
? "clerk"
: table.tableNo,
table.xposition + rectWidth / 2,
@@ -257,9 +257,9 @@ const TableCanvas = ({ shopId }) => {
const handleSetTableNo = (event) => {
const newValue = event.target.value;
// Prevent setting value to '0' or starting with '0'
- // if (newValue === "" || /^[1-9][0-9]*$/.test(newValue)) {
- setTableNo(newValue);
- // }
+ if (newValue === "" || /^[1-9][0-9]*$/.test(newValue)) {
+ setTableNo(newValue);
+ }
};
return (
@@ -333,6 +333,7 @@ const TableCanvas = ({ shopId }) => {
type="text"
placeholder="Table No"
value={tableNo}
+ disabled={tableNo === 0 ? "disabled" : ""}
onChange={handleSetTableNo}
style={{
marginRight: "10px",
@@ -376,8 +377,12 @@ const TableCanvas = ({ shopId }) => {
}}
onClick={() => handleSelect(table)}
>
- Table {table.tableNo} - Position: ({table.xposition},{" "}
- {table.yposition})
+ {
+ table.tableNo === 0
+ ? "Clerk" // Display "Clerk" if tableNo is 0
+ : `Table ${table.tableNo}` // Display "Table {tableNo}" otherwise
+ }{" "}
+ - Position: ({table.xposition}, {table.yposition})
))}
diff --git a/src/helpers/cafeHelpers.js b/src/helpers/cafeHelpers.js
index 4b45a29..133b43d 100644
--- a/src/helpers/cafeHelpers.js
+++ b/src/helpers/cafeHelpers.js
@@ -14,7 +14,55 @@ export async function getOwnedCafes(userId) {
"Content-Type": "application/json",
Authorization: `Bearer ${getAuthToken()}`,
},
- },
+ }
+ );
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch cart details");
+ }
+
+ const cafes = await response.json();
+ return cafes;
+ } catch (error) {
+ console.error("Error:", error);
+ }
+}
+
+export async function createCafe(userId) {
+ try {
+ const response = await fetch(
+ `${API_BASE_URL}/cafe/get-cafe-by-ownerId/` + userId,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${getAuthToken()}`,
+ },
+ }
+ );
+
+ if (!response.ok) {
+ throw new Error("Failed to fetch cart details");
+ }
+
+ const cafes = await response.json();
+ return cafes;
+ } catch (error) {
+ console.error("Error:", error);
+ }
+}
+
+export async function updateCafe(userId) {
+ try {
+ const response = await fetch(
+ `${API_BASE_URL}/cafe/get-cafe-by-ownerId/` + userId,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${getAuthToken()}`,
+ },
+ }
);
if (!response.ok) {
diff --git a/src/helpers/userHelpers.js b/src/helpers/userHelpers.js
index 00ca48d..6cce64c 100644
--- a/src/helpers/userHelpers.js
+++ b/src/helpers/userHelpers.js
@@ -78,7 +78,7 @@ export async function removeConnectedGuestSides(guestSideSessionId) {
body: JSON.stringify({
guestSideSessionId,
}),
- },
+ }
);
if (response.status === 200) {
const { message, guestSideList } = await response.json();
@@ -168,6 +168,66 @@ export const getAllCafeOwner = async (formData) => {
}
};
+export const createCafeOwner = async (shopId, email, username, password) => {
+ const token = getLocalStorage("auth");
+ if (token) {
+ try {
+ const response = await fetch(
+ API_BASE_URL + "/user/create-clerk/" + shopId,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify({
+ email: email,
+ username: username,
+ password: password,
+ }),
+ }
+ );
+ if (!response.ok) {
+ throw new Error(`HTTP error! status: ${response.status}`);
+ }
+ const data = await response.json();
+ return data;
+ } catch (error) {
+ console.error("Error getting clerk:", error);
+ }
+ }
+};
+
+export const deleteCafeOwner = async (shopId, email, username, password) => {
+ const token = getLocalStorage("auth");
+ if (token) {
+ try {
+ const response = await fetch(
+ API_BASE_URL + "/user/create-clerk/" + shopId,
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ Authorization: `Bearer ${token}`,
+ },
+ body: JSON.stringify({
+ email: email,
+ username: username,
+ password: password,
+ }),
+ }
+ );
+ if (!response.ok) {
+ throw new Error(`HTTP error! status: ${response.status}`);
+ }
+ const data = await response.json();
+ return data;
+ } catch (error) {
+ console.error("Error getting clerk:", error);
+ }
+ }
+};
+
export const createClerks = async (shopId, email, username, password) => {
const token = getLocalStorage("auth");
if (token) {
@@ -185,7 +245,7 @@ export const createClerks = async (shopId, email, username, password) => {
username: username,
password: password,
}),
- },
+ }
);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
diff --git a/src/pages/Dashboard.js b/src/pages/Dashboard.js
index 4631872..8452dd1 100644
--- a/src/pages/Dashboard.js
+++ b/src/pages/Dashboard.js
@@ -4,8 +4,8 @@ import Header from "../components/Header";
import { useNavigate } from "react-router-dom";
import AccountUpdateModal from "../components/AccountUpdateModal";
import { updateLocalStorage } from "../helpers/localStorageHelpers";
-import { getAllCafeOwner } from "../helpers/userHelpers";
-import { getOwnedCafes } from "../helpers/cafeHelpers";
+import { getAllCafeOwner, createCafeOwner } from "../helpers/userHelpers";
+import { getOwnedCafes, createCafe, updateCafe } from "../helpers/cafeHelpers";
import { ThreeDots } from "react-loader-spinner";
@@ -14,30 +14,32 @@ const Dashboard = ({ user, setModal }) => {
const [loading, setLoading] = useState(true);
const [isModalOpen, setIsModalOpen] = useState(false);
const [items, setItems] = useState([]);
+ const [isCreating, setIsCreating] = useState(false);
+ const [newItem, setNewItem] = useState({ name: "", type: "" });
useEffect(() => {
if (user && user.roleId === 0) {
setLoading(true);
- // Example of calling getAllCafeOwner if roleId is 0
getAllCafeOwner()
.then((data) => {
- setItems(data); // Assuming getAllCafeOwners returns an array of cafe owners
+ setItems(data);
setLoading(false);
})
.catch((error) => {
console.error("Error fetching cafe owners:", error);
+ setLoading(false);
});
}
if (user && user.roleId === 1) {
- // Example of calling getAllCafeOwner if roleId is 0
setLoading(true);
getOwnedCafes(user.userId)
.then((data) => {
- setItems(data); // Assuming getAllCafeOwners returns an array of cafe owners
+ setItems(data);
setLoading(false);
})
.catch((error) => {
- console.error("Error fetching cafe owners:", error);
+ console.error("Error fetching owned cafes:", error);
+ setLoading(false);
});
}
}, [user]);
@@ -51,6 +53,32 @@ const Dashboard = ({ user, setModal }) => {
navigate(0);
};
+ const handleCreateItem = () => {
+ if (user.roleId < 1) {
+ // Create admin functionality
+ createCafeOwner(newItem.name)
+ .then(() => {
+ setItems([...items, { name: newItem.name }]);
+ setIsCreating(false);
+ setNewItem({ name: "", type: "" });
+ })
+ .catch((error) => {
+ console.error("Error creating admin:", error);
+ });
+ } else {
+ // Create cafe functionality
+ createCafe(newItem.name)
+ .then(() => {
+ setItems([...items, { name: newItem.name }]);
+ setIsCreating(false);
+ setNewItem({ name: "", type: "" });
+ })
+ .catch((error) => {
+ console.error("Error creating cafe:", error);
+ });
+ }
+ };
+
return (
<>
{
))}
{user && user.roleId < 1 ? (
- Create Admin
+ setIsCreating(true)}
+ >
+ Create Admin
+
) : (
- Create Cafe
+ setIsCreating(true)}
+ >
+ Create Cafe
+
)}
)}
@@ -88,6 +126,20 @@ const Dashboard = ({ user, setModal }) => {
onClose={handleModalClose}
/>
)}
+
+ {isCreating && (
+
+
Create New {user.roleId < 1 ? "Admin" : "Cafe"}
+ setNewItem({ ...newItem, name: e.target.value })}
+ placeholder="Name"
+ />
+
+
+
+ )}
>
);
};