From 8131d38a6d6728d2a13545e96ac87443f7827c55 Mon Sep 17 00:00:00 2001 From: Z0mbie001 <94248812+Z0mbie001@users.noreply.github.com> Date: Mon, 4 Mar 2024 19:19:08 +0000 Subject: [PATCH] Commented code further --- Scripts/.vs/ProjectSettings.json | 3 + ...ddaf6bfc-05db-475a-a568-8558e2315e13.vsidx | Bin 0 -> 92969 bytes .../.vs/Scripts/FileContentIndex/read.lock | 0 Scripts/.vs/Scripts/v17/.wsuo | Bin 0 -> 62976 bytes Scripts/.vs/VSWorkspaceState.json | 12 ++++ Scripts/.vs/slnx.sqlite | Bin 0 -> 126976 bytes Scripts/Admin/StaffAdd.cs | 4 +- Scripts/Admin/StockItemAdd.cs | 4 ++ Scripts/Admin/StockModifyController.cs | 6 -- Scripts/Databases/DatabaseManager.cs | 57 ++++++++++++++++-- Scripts/Databases/ServerController.cs | 43 +++++++++---- Scripts/Till Functions/ClientController.cs | 1 - .../Till Functions/OrderButtonController.cs | 1 - Scripts/Till Functions/PaymentController.cs | 5 -- Scripts/Till Functions/SaveLoadController.cs | 1 - Scripts/Till Functions/StockLookup.cs | 1 - 16 files changed, 105 insertions(+), 33 deletions(-) create mode 100644 Scripts/.vs/ProjectSettings.json create mode 100644 Scripts/.vs/Scripts/FileContentIndex/ddaf6bfc-05db-475a-a568-8558e2315e13.vsidx create mode 100644 Scripts/.vs/Scripts/FileContentIndex/read.lock create mode 100644 Scripts/.vs/Scripts/v17/.wsuo create mode 100644 Scripts/.vs/VSWorkspaceState.json create mode 100644 Scripts/.vs/slnx.sqlite diff --git a/Scripts/.vs/ProjectSettings.json b/Scripts/.vs/ProjectSettings.json new file mode 100644 index 00000000..f8b48885 --- /dev/null +++ b/Scripts/.vs/ProjectSettings.json @@ -0,0 +1,3 @@ +{ + "CurrentProjectSetting": null +} \ No newline at end of file diff --git a/Scripts/.vs/Scripts/FileContentIndex/ddaf6bfc-05db-475a-a568-8558e2315e13.vsidx b/Scripts/.vs/Scripts/FileContentIndex/ddaf6bfc-05db-475a-a568-8558e2315e13.vsidx new file mode 100644 index 0000000000000000000000000000000000000000..ef310061ba8875fd6acf0368e204409aba0c748a GIT binary patch literal 92969 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

Q9YX$PR)CT# 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 literal 0 HcmV?d00001 diff --git a/Scripts/Admin/StaffAdd.cs b/Scripts/Admin/StaffAdd.cs index 77472228..759634c4 100644 --- a/Scripts/Admin/StaffAdd.cs +++ b/Scripts/Admin/StaffAdd.cs @@ -22,13 +22,15 @@ public void ConfirmInputs() DateTime dobDT; DateTime startDT; DateTime endDT; + // Validate that none of the data fields are left blank if(idInput.text == "" || firstNameInput.text == "" || lastNameInput.text == "" || dateOfBirthInput.text == "" || startDateInput.text == "" || endDateInput.text == "" || permissionsLevelInput.text == "") { return; - }else if(!DateTime.TryParse(dateOfBirthInput.text, out dobDT) || !DateTime.TryParse(startDateInput.text, out startDT) || !DateTime.TryParse(endDateInput.text, out endDT)) + }else if(!DateTime.TryParse(dateOfBirthInput.text, out dobDT) || !DateTime.TryParse(startDateInput.text, out startDT) || !DateTime.TryParse(endDateInput.text, out endDT)) // Validate that a correct date has been entered { return; } + // Format a server query with the data and add the the send queue string q_toSend = "&STAFFWR|" + idInput.text + "|" + firstNameInput.text + "|" + lastNameInput.text + "|" + dobDT.ToString("s") + "|" + startDT.ToString("s") + "|" + endDT.ToString("s") + "|" + permissionsLevelInput.text; FindObjectOfType().instance.toSend.AddLast(q_toSend); CloseWindow(); diff --git a/Scripts/Admin/StockItemAdd.cs b/Scripts/Admin/StockItemAdd.cs index d8be4416..91d9f804 100644 --- a/Scripts/Admin/StockItemAdd.cs +++ b/Scripts/Admin/StockItemAdd.cs @@ -14,14 +14,18 @@ public class StockItemAdd : MonoBehaviour //Activated when the confirm button is pressed public void OnConfirmButtonPress() { + // Validate that none of the inputs are left blank if(idInput.text == "" || nameInput.text == "" || priceInput.text == "" || typeInput.text == "") { Debug.LogWarning("Missing data, cannot send request"); return; } + // Format a query for the server and add it to the send queue string q_toSend = "&STOCKWR|" + idInput.text + "|" + nameInput.text + "|" + priceInput.text + "|" + typeInput.text; FindObjectOfType().toSend.AddLast(q_toSend); + + //Reset the input fields idInput.text = ""; nameInput.text = ""; priceInput.text = ""; diff --git a/Scripts/Admin/StockModifyController.cs b/Scripts/Admin/StockModifyController.cs index d4b4118b..85641b6c 100644 --- a/Scripts/Admin/StockModifyController.cs +++ b/Scripts/Admin/StockModifyController.cs @@ -26,12 +26,6 @@ void Start() client = FindObjectOfType(); } - // Update is called once per frame - void Update() - { - - } - //Run when a UI button is pressed public void ConfirmButtonPress() { diff --git a/Scripts/Databases/DatabaseManager.cs b/Scripts/Databases/DatabaseManager.cs index 6b4b1e75..aa85ff3a 100644 --- a/Scripts/Databases/DatabaseManager.cs +++ b/Scripts/Databases/DatabaseManager.cs @@ -40,8 +40,7 @@ IDbConnection OpenConenctionToDB() { //formats the database's location string connection = "URI=file:" + Application.persistentDataPath + "/Babyy_Database.db"; - //Debug.Log("Database Location : " + Application.persistentDataPath + "/Babyy_Database.db"); //For displaying the current path of the database file - + //Opens the databse conneciton IDbConnection dbConnection = new SqliteConnection(connection); dbConnection.Open(); @@ -67,6 +66,7 @@ void CreateStockTable() //create a command IDbCommand dbCommand; dbCommand = dbcon.CreateCommand(); + //create the SQL command and execute it string q_createTable = "CREATE TABLE IF NOT EXISTS stock_table (id INTEGER PRIMARY KEY, name VARCHAR(255), price FLOAT, type INTEGER);"; dbCommand.CommandText = q_createTable; @@ -79,9 +79,11 @@ public List ReadValuesInStockTable(long id, string itemName) //creates a temp list to store values and a temp string List items = new(); string tempIdString; + //create a command and reader IDbCommand cmnd_read = dbcon.CreateCommand(); IDataReader reader; + //check to see if id is its defult value/formats the id as a string if (id == 0) { @@ -91,10 +93,12 @@ public List ReadValuesInStockTable(long id, string itemName) { tempIdString = id.ToString(); } + //create the SQL command and execute it string q_readTable = "SELECT * FROM stock_table WHERE id LIKE '" + tempIdString + "' AND name LIKE '%" + itemName + "%' ORDER BY id ASC"; cmnd_read.CommandText = q_readTable; reader = cmnd_read.ExecuteReader(); + //while the reader is recieveing data from the database while (reader.Read()) { @@ -105,6 +109,7 @@ public List ReadValuesInStockTable(long id, string itemName) int typeRead = Convert.ToInt32(reader[3]); items.Add(new Item(idRead, nameRead, priceRead, typeRead)); } + //return all the items return items; } @@ -119,6 +124,7 @@ public List ReadValuesInStockTable(long id, string itemName) //Inserts values Into the stock table public void InsertValueIntoStockTable(long id, string itemName, float price, int type) { + //Create a command and execute it IDbCommand cmnd_insert = dbcon.CreateCommand(); string q_insertTable = "INSERT OR REPLACE Into stock_table (id, name, price, type) VALUES (" + id + ", '" + itemName + "', " + price + ", " + type + ");"; cmnd_insert.CommandText = q_insertTable; @@ -130,6 +136,8 @@ public void InsertValueIntoStockTable(long id, string itemName, float price, int public void DeleteValueInStockTable(long id) { Item item = ReadValuesInStockTable(id, "")[0]; + + //Create a command and execute it IDbCommand cmnd_delete = dbcon.CreateCommand(); DeleteValueInCatStockTable(id); string q_deleteItem = "DELETE FROM stock_table WHERE id = " + id + ";"; @@ -142,6 +150,8 @@ public void DeleteValueInStockTable(long id) public void DeleteValueInCatStockTable(long id) { Item item = ReadValuesInStockTable(id, "")[0]; + + //Create a command and execute it IDbCommand cmnd_delete = dbcon.CreateCommand(); string q_deleteItem = "DELETE FROM categoryItem_table WHERE itemID = " + id + ";"; cmnd_delete.CommandText = q_deleteItem; @@ -149,8 +159,9 @@ public void DeleteValueInCatStockTable(long id) } //create the catagory table - void CreateCategoryTable() + void CreateCategoryTable() { + //Create a command and execute it IDbCommand dbCommand; dbCommand = dbcon.CreateCommand(); string q_createTable = "CREATE TABLE IF NOT EXISTS category_table (id INTEGER PRIMARY KEY, name VARCHAR(255), color VARCHAR(255));"; @@ -162,11 +173,15 @@ void CreateCategoryTable() public List ReadValuesInCategoryTable(int id) { List categories = new(); + + //Create a command and execute it IDbCommand cmnd_read = dbcon.CreateCommand(); IDataReader reader; string q_readTable = "SELECT * FROM category_table WHERE id LIKE '%" + id + "' ORDER BY id ASC;"; cmnd_read.CommandText = q_readTable; reader = cmnd_read.ExecuteReader(); + + //While the reader is recieving data from the database while (reader.Read()) { int catIDRead = Convert.ToInt32(reader[0]); @@ -180,6 +195,7 @@ public List ReadValuesInCategoryTable(int id) //Inserts values Into the category table public void InsertValuesIntoCategoryTable(int id, string categoryName, UnityEngine.Color categoryColour) { + //Create a command and execute it IDbCommand cmnd_insert = dbcon.CreateCommand(); string q_insertTable = "INSERT OR REPLACE Into category_table (id, name, colour) VALUES (" + id + ", '" + categoryName + "', '" + ColorUtility.ToHtmlStringRGB(categoryColour).ToString() + "');"; cmnd_insert.CommandText = q_insertTable; @@ -189,6 +205,7 @@ public void InsertValuesIntoCategoryTable(int id, string categoryName, UnityEngi //Creates the cateogry item Table void CreateCategoryItemTable() { + //Create a command and execute it IDbCommand dbCommand = dbcon.CreateCommand(); string q_createTable = "CREATE TABLE IF NOT EXISTS categoryItem_table (categoryID INTEGER, itemID INTEGER, itemPos INTEGER, PRIMARY KEY(categoryID, itemID) CONSTRAINT itemID FOREIGN KEY (itemID) REFERENCES stock_table (id)) ON DELETE CASCADE;"; dbCommand.CommandText = q_createTable; @@ -199,11 +216,15 @@ void CreateCategoryItemTable() public List> ReadValuesInCategoryItemTable(int categoryID) { List> items = new(); + + //Create a command and execute it IDbCommand cmnd_read = dbcon.CreateCommand(); IDataReader reader; string q_readTable = "SELECT itemID, itemPos FROM categoryItem_table WHERE categoryID LIKE '" + categoryID + "';"; cmnd_read.CommandText = q_readTable; reader = cmnd_read.ExecuteReader(); + + //While the reader is recieving data from the database while (reader.Read()) { long itemIdRead = Convert.ToInt64(reader[0]); @@ -216,6 +237,7 @@ public List> ReadValuesInCategoryItemTable(int categoryI //Inserts values Into the category item table public void InsertValuesIntoCategoryItemsTable(int categoryID, long itemID, int itemPos) { + //Create a command and execute it IDbCommand cmnd_insert = dbcon.CreateCommand(); string q_insertTable = "INSERT OR REPLACE Into categoryItem_table (categoryId, itemID, itemPos) VALUES (" + categoryID + ", " + itemID + ", " + itemPos + ");"; cmnd_insert.CommandText = q_insertTable; @@ -225,6 +247,7 @@ public void InsertValuesIntoCategoryItemsTable(int categoryID, long itemID, int //creates the staff table void CreateStaffTable() { + //Create a command and execute it IDbCommand dbCommand = dbcon.CreateCommand(); string q_createTable = "CREATE TABLE IF NOT EXISTS staff_table (staffID INTEGER PRIMARY KEY, lastName VARCHAR(255), firstName VARCHAR(255), dateOfBirth VARCHAR(255), startDate VARCHAR(255), endDate VARCHAR(255), permissionsLv INTEGER);"; dbCommand.CommandText = q_createTable; @@ -235,11 +258,15 @@ void CreateStaffTable() public List ReadStaffMembersInTable(int staffID, string staffLastName, string staffFirstName) { List data = new(); + + //Create a command and execute it IDbCommand cmnd_read = dbcon.CreateCommand(); IDataReader reader; string q_readTable = "SELECT * FROM staff_table WHERE staffID = " + staffID.ToString() + " AND lastName LIKE '%" + staffLastName + "%' AND firstName LIKE '%" + staffFirstName + "%';"; cmnd_read.CommandText = q_readTable; reader = cmnd_read.ExecuteReader(); + + //While the reader is recieving data from the database while (reader.Read()) { int staffIDRead = Convert.ToInt32(reader[0]); @@ -257,6 +284,7 @@ public List ReadStaffMembersInTable(int staffID, string staffLastNa //Inserts values Into the staff table public void InsertValuesIntoStaffTable(StaffMember staffMemberToAdd) { + //Create a command and execute it IDbCommand cmnd_insert = dbcon.CreateCommand(); string q_insertTable = "INSERT OR REPLACE Into staff_table (staffID, lastName, firstName, dateOfBirth, startDate, endDate, permissionsLv) VALUES (" + staffMemberToAdd.staffID.ToString() + ", '" + staffMemberToAdd.lastName + "', '" + staffMemberToAdd.firstName + "', '" + staffMemberToAdd.dateOfBirth.ToString("s") + "', '" + staffMemberToAdd.startDate.ToString("s") + "', '" + staffMemberToAdd.endDate.ToString("s") + "', " + staffMemberToAdd.permissionLevel.ToString() + ");"; cmnd_insert.CommandText = q_insertTable; @@ -266,6 +294,7 @@ public void InsertValuesIntoStaffTable(StaffMember staffMemberToAdd) //Creates the transaction table void CreateTransactionTable() { + //Create a command and execute it IDbCommand dbCommand = dbcon.CreateCommand(); string q_createTable = "CREATE TABLE IF NOT EXISTS transaction_table (transactionID INTEGER PRIMARY KEY, transactionDateTime VARCHAR(255), transactionTotal FLOAT, paymentType INTEGER, staffID INTEGER);"; dbCommand.CommandText = q_createTable; @@ -276,11 +305,15 @@ void CreateTransactionTable() public List ReadValuesFromTransactionTable(long transID, DateTime transDateTime, int staffIDToFind, float transTotal) { List data = new(); + + //Create a command and execute it IDbCommand cmnd_read = dbcon.CreateCommand(); IDataReader reader; string q_readTable = "SELECT * FROM transaction_table WHERE transID Like '%" + transID.ToString() + "%' AND transactionDateTime LIKE '%" + transDateTime.ToString("s") + "%' OR transactionTotal = " + transTotal + " AND staffID LIKE '%" + staffIDToFind.ToString() + "%';"; cmnd_read.CommandText = q_readTable; reader = cmnd_read.ExecuteReader(); + + //While the reader is recieving data from the database while (reader.Read()) { long transIDRead = Convert.ToInt64(reader[0]); @@ -296,6 +329,7 @@ public List ReadValuesFromTransactionTable(long transID, DateTime t //Inserts values Into the transaction table public void InsertValuesIntoTransTable(long transID, DateTime transDateTime, float transTotal, int payType, int staffID) { + //Create a command and execute it IDbCommand cmnd_insert = dbcon.CreateCommand(); string q_insertTable = "INSERT OR REPLACE Into transaction_table (transactionID, transactionDateTime, transactionTotal, paymentType, staffID) VALUES (" + transID.ToString() + ", '" + transDateTime.ToString("s") + "', '" + transTotal.ToString() + "', " + payType.ToString() + ", " + staffID + ");"; cmnd_insert.CommandText = q_insertTable; @@ -305,6 +339,7 @@ public void InsertValuesIntoTransTable(long transID, DateTime transDateTime, flo //creeates the transaction item table void CreateTransactionItemTable() { + //Create a command and execute it IDbCommand dbCommand = dbcon.CreateCommand(); string q_createTable = "CREATE TABLE IF NOT EXISTS transactionItem_table (transactionID INTEGER, itemID INTEGER, quantity INTEGER, price FLOAT, PRIMARY KEY(transactionID, itemID) CONSTRAINT itemID FOREIGN KEY (itemID) REFERENCES legacy_stock_table (id));"; dbCommand.CommandText = q_createTable; @@ -315,11 +350,15 @@ void CreateTransactionItemTable() public List<(Item, int)> ReadValuesFromTransactionItemTable(long transID) { List<(Item, int)> data = new(); + + //Create a command and execute it IDbCommand cmnd_read = dbcon.CreateCommand(); IDataReader reader; string q_readTable = "SELECT * FROM transactionItem_table WHERE transID LIKE '%" + transID.ToString() + "%';"; cmnd_read.CommandText = q_readTable; reader = cmnd_read.ExecuteReader(); + + //While the reader is recieveing data from the database while (reader.Read()) { Item item = new(Convert.ToInt32(reader[1]), "", Convert.ToInt32(reader[3]), 0); @@ -332,6 +371,7 @@ void CreateTransactionItemTable() //Inserts values Into the transaction item table public void InsertValuesIntoTransItemTable(long transID, long itemID, int quantity, float price) { + //Create a command and execute it IDbCommand cmnd_insert = dbcon.CreateCommand(); string q_insertTable = "INSERT OR REPLACE Into transactionItem_table (transactionID, itemID, quantity, price) VALUES (" + transID.ToString() + ", " + itemID.ToString() + ", " + quantity.ToString() + ", " + price.ToString() + ");"; cmnd_insert.CommandText = q_insertTable; @@ -341,9 +381,10 @@ public void InsertValuesIntoTransItemTable(long transID, long itemID, int quanti //Create a legacy table for stock items void CreateLegacyStockTable() { - //create a command + //Create a command and execute it IDbCommand dbCommand; dbCommand = dbcon.CreateCommand(); + //create the SQL command and execute it string q_createTable = "CREATE TABLE IF NOT EXISTS legacy_stock_table (id INTEGER PRIMARY KEY, name VARCHAR(255), price FLOAT, type INTEGER);"; dbCommand.CommandText = q_createTable; @@ -353,13 +394,14 @@ void CreateLegacyStockTable() //Reads values in the legacy stock table public List ReadValuesInLegacyStockTable(long id, string itemName) { - //Debug.Log("Requesting Read Values From Stock Table"); //creates a temp list to store values and a temp string List items = new(); string tempIdString; + //create a command and reader IDbCommand cmnd_read = dbcon.CreateCommand(); IDataReader reader; + //check to see if id == 0 if (id == 0) { @@ -369,11 +411,12 @@ public List ReadValuesInLegacyStockTable(long id, string itemName) { tempIdString = id.ToString(); } + //create the SQL command and execute it string q_readTable = "SELECT * FROM legacy_stock_table WHERE id = '" + tempIdString + "' AND name LIKE '%" + itemName + "%' ORDER BY id ASC"; cmnd_read.CommandText = q_readTable; reader = cmnd_read.ExecuteReader(); - //Debug.Log(q_readTable); + //while the reader is recieveing data from the database while (reader.Read()) { @@ -384,6 +427,7 @@ public List ReadValuesInLegacyStockTable(long id, string itemName) int typeRead = Convert.ToInt32(reader[3]); items.Add(new Item(idRead, nameRead, priceRead, typeRead)); } + //return all the items return items; } @@ -392,6 +436,7 @@ public List ReadValuesInLegacyStockTable(long id, string itemName) //Inserts values Into the legacy stock table public void InsertValueIntoLegacyStockTable(long id, string itemName, float price, int type) { + //Create a command and execute it IDbCommand cmnd_insert = dbcon.CreateCommand(); string q_insertTable = "INSERT OR REPLACE INTO legacy_stock_table (id, name, price, type) VALUES (" + id + ", '" + itemName + "', " + price + ", " + type + ");"; cmnd_insert.CommandText = q_insertTable; diff --git a/Scripts/Databases/ServerController.cs b/Scripts/Databases/ServerController.cs index c95a3c8a..4be5cd16 100644 --- a/Scripts/Databases/ServerController.cs +++ b/Scripts/Databases/ServerController.cs @@ -23,67 +23,88 @@ void Start() //Processes a stock lookup request public void StockLookupRequest(ServerClient client, long id, string itemName) { - //reads stock items from the database + //Reads stock items from the database List data = dbManager.instance.ReadValuesInStockTable(id, itemName); - //Debug.Log("Length of data: " + data.Count); - //cycle through each item + + //Cycle through each item foreach (Item item in data) { - //send each item to the client that requested the lookup + //Send each item to the client that requested the lookup string toSend = "%STOCKLURT|" + item.id.ToString() + "|" + item.name + "|" + item.price.ToString() + "|" + item.type.ToString(); server.instance.ToSend.AddLast((toSend, client)); } - //send the closing statement for the request + + //Send the closing statement for the request server.instance.ToSend.AddLast(("%STOCKLURT|~END", client)); } //Processes a category request public void CategoryRequest(ServerClient client, int id) { + //Reads the categories from the database List data = dbManager.instance.ReadValuesInCategoryTable(id); + + //cycle through each piece of data foreach(Category cat in data) { + //Send each piece of data to the client that requested the lookup string catColour = UnityEngine.ColorUtility.ToHtmlStringRGBA(cat.categoryColour); string toSend = "%CATEGORYRT|" + cat.categoryID + "|" + cat.categoryName + "|" + catColour; server.instance.ToSend.AddLast((toSend, client)); } + + //Send the closing statement for the request server.instance.ToSend.AddLast(("%CATEGORYRT|~END", client)); } //Processes a category item request public void CategoryItemRequest(ServerClient client, int id) { + //Reads the category items from the database List> data = dbManager.instance.ReadValuesInCategoryItemTable(id); //ID, Pos + + //Cycle through each piece of data foreach(KeyValuePair kvp in data) { + //Send each piece of data to the client that requested the lookup string toSend = "%CATEGORYITEMRT|" + kvp.Key.ToString() + "|" + kvp.Value.ToString(); server.instance.ToSend.AddLast((toSend, client)); } + + //Send the closing statement for the request server.instance.ToSend.AddLast(("%CATEGORYITEMRT|~END", client)); } //Processes a request for category item data public void CategoryItemDataRequest(ServerClient client, long id) { + //Reads the category items from the database List data = dbManager.instance.ReadValuesInStockTable(id, ""); + + //Cycle through each piece of data foreach(Item item in data) { + //Send each piece of data to the client that requested the lookup string toSend = "%CATEGORYITEMNAMERT|" + item.id + "|" + item.name + "|" + item.price + "|" + item.type; server.instance.ToSend.AddLast((toSend, client)); } - //server.instance.toSend.AddLast(("%CATEGORYITEMNAMERT|~END", client)); - } //Processes a staff login request public void StaffLoginRequest(ServerClient client, int staffID) { + //Reads the category items from the database List data = dbManager.instance.ReadStaffMembersInTable(staffID, "", ""); - foreach(StaffMember sm in data) + + //Cycle through each piece of data + foreach (StaffMember sm in data) { + //Send each piece of data to the client that requested the lookup string toSend = "%STAFFLOGINRT|" + sm.staffID.ToString() + "|" + sm.lastName + "|" + sm.firstName + "|" + sm.dateOfBirth + "|" + sm.startDate + "|" + sm.endDate + "|" + sm.permissionLevel.ToString(); server.instance.ToSend.AddLast((toSend, client)); } + + //Send the closing statement for the request server.instance.ToSend.AddLast(("%STAFFLOGINRT|~END", client)); } @@ -91,20 +112,21 @@ public void StaffLoginRequest(ServerClient client, int staffID) public void WriteTransactionData(ServerClient client, Transaction transToAdd) { dbManager.instance.InsertValuesIntoTransTable(transToAdd.transactionID, transToAdd.transactionDateTime, transToAdd.transactionAmount, transToAdd.paymentType, transToAdd.staffID); - //server.instance.toSend.AddLast(("%TRANSACTIONWRITERT|~COMPLETE", client)); } //Processes a transaction item write request public void WriteTransactionItemData(ServerClient client, long transId, long itemID, int quantity, float itemPrice) { dbManager.instance.InsertValuesIntoTransItemTable(transId, itemID, quantity, itemPrice); - //server.instance.toSend.AddLast(("%TRANSACTIONWRITERT|~COMPLETE", client)); } //Processes an authorising staff member request public void AuthStaffMemberData(ServerClient client, int idToSearch) { + //Reads the category items from the database List data = dbManager.instance.ReadStaffMembersInTable(idToSearch, "", ""); + + //Send the data to the client that requested the lookup string toSend = "%AUTHSTAFFRT|" + data[0].staffID.ToString() + "|" + data[0].lastName + "|" + data[0].firstName + "|" + data[0].dateOfBirth + "|" + data[0].startDate + "|" + data[0].endDate + "|" + data[0].permissionLevel.ToString(); server.instance.ToSend.AddLast((toSend, client)); } @@ -113,7 +135,6 @@ public void AuthStaffMemberData(ServerClient client, int idToSearch) public void WriteStockItem(ServerClient client, long id, string name, float price, int type) { dbManager.instance.InsertValueIntoStockTable(id, name, price, type); - } //Processes a write staff member request diff --git a/Scripts/Till Functions/ClientController.cs b/Scripts/Till Functions/ClientController.cs index 0d84bd46..0040eb1b 100644 --- a/Scripts/Till Functions/ClientController.cs +++ b/Scripts/Till Functions/ClientController.cs @@ -74,7 +74,6 @@ public void CalculateSubTotal() { orderSubTotal += kvp.Key.price * kvp.Value; } - //orderSubTotal = (float)(System.Math.Round(orderSubTotal, 3)); subTotalText.text = "Sub-Total: £" + orderSubTotal.ToString("0.00"); } diff --git a/Scripts/Till Functions/OrderButtonController.cs b/Scripts/Till Functions/OrderButtonController.cs index 9322afe2..7fc97bb1 100644 --- a/Scripts/Till Functions/OrderButtonController.cs +++ b/Scripts/Till Functions/OrderButtonController.cs @@ -34,7 +34,6 @@ public void UpdateButton() if(clientController.instance.selectedItem == item) { gameObject.GetComponent().color = new Color(210, 210, 210); - //gameObject.GetComponent