using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Data.Entity; using System.Data.SQLite; using System.IO; using System.Linq; using System.Net.Http; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace AVS { class LiteDbClass { public string SERVER_URL = "https://cosmos.utopiadeals.com/cosmos/webhook/article-verification-log"; //public string SERVER_URL = "https://cosmos-jobs.utopiadeals.com/cosmos/webhook/article-verification-log"; //public string SERVER_URL = "http://192.168.91.54:8080/cosmos/webhook/article-verification-log"; public string SERVER_URL_CARTON = "https://cosmos.utopiadeals.com/cosmos/rest/carton-verification-logs"; private MainForm _mainForm; // Constructor that accepts MainForm instance public LiteDbClass(MainForm mainForm) { _mainForm = mainForm; } // Specify the folder path for the SQLite database file static string folderPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonDocuments), "AVS"); // Specify the path for the SQLite database file within the folder static string dbFileName = "AVS.db"; static string dbPath = Path.Combine(folderPath, dbFileName); private static string connectionString = $"Data Source={dbPath};Version=3;"; SQLiteConnection connection = new SQLiteConnection(connectionString); public SQLiteConnection OpenConnection() { try { // Open the SQLite connection connection.Open(); Console.WriteLine("SQLite connection opened successfully"); return connection; } catch (Exception ex) { Console.WriteLine($"Error opening SQLite connection: {ex.Message}"); return null; } } public void CloseConnection() { try { // Close the SQLite connection connection?.Close(); Console.WriteLine("SQLite connection closed successfully"); } catch (Exception ex) { Console.WriteLine($"Error closing SQLite connection: {ex.Message}"); } } public void UpdateSKURecord(string tableName, string oldSKU, string newSKU) { try { //if (!RecordExists(tableName,newSKU,null)) //{ OpenConnection(); // Create the SQL command for update string updateCommand = $"UPDATE {tableName} SET SKU = @NewSKU WHERE SKU = @OldSKU"; using (SQLiteCommand cmd = new SQLiteCommand(updateCommand, connection)) { // Set the parameters for the old and new SKUs cmd.Parameters.AddWithValue("@OldSKU", oldSKU); cmd.Parameters.AddWithValue("@NewSKU", newSKU); // Execute the command cmd.ExecuteNonQuery(); } CloseConnection(); Console.WriteLine("SKU updated successfully"); // } } catch (Exception ex) { Console.WriteLine($"Error updating SKU: {ex.Message}"); } finally { CloseConnection(); } } public void InsertRecord(string tableName, T record, string property, string property2) { try { string PropValue1 = ""; string PropValue2 = ""; PropertyInfo[] properties = typeof(T).GetProperties(); foreach (PropertyInfo prop in properties) { if (prop.Name == property) { PropValue1 = prop.GetValue(record).ToString(); } if (prop.Name == property2) { PropValue2 = prop.GetValue(record).ToString(); } } if (tableName == "DailyLogs") { OpenConnection(); // Create the SQL command for insertion // Generate column names and parameter names dynamically string columnNames = string.Join(", ", properties.Select(prop => prop.Name)); string parameterNames = string.Join(", ", properties.Select(prop => $"@{prop.Name}")); string insertCommand = $"INSERT INTO {tableName} ({columnNames}) VALUES ({parameterNames})"; using (SQLiteCommand cmd = new SQLiteCommand(insertCommand, connection)) { // Set the parameters based on the record properties foreach (PropertyInfo prop in properties) { cmd.Parameters.AddWithValue($"@{prop.Name}", prop.GetValue(record)); } // Execute the command cmd.ExecuteNonQuery(); } CloseConnection(); Console.WriteLine("Record inserted successfully"); } else { if (!RecordExists(tableName, (property, PropValue1), (property2, PropValue2))) { OpenConnection(); // Create the SQL command for insertion // Generate column names and parameter names dynamically string columnNames = string.Join(", ", properties.Select(prop => prop.Name)); string parameterNames = string.Join(", ", properties.Select(prop => $"@{prop.Name}")); string insertCommand = $"INSERT INTO {tableName} ({columnNames}) VALUES ({parameterNames})"; using (SQLiteCommand cmd = new SQLiteCommand(insertCommand, connection)) { // Set the parameters based on the record properties foreach (PropertyInfo prop in properties) { cmd.Parameters.AddWithValue($"@{prop.Name}", prop.GetValue(record)); } // Execute the command cmd.ExecuteNonQuery(); } CloseConnection(); Console.WriteLine("Record inserted successfully"); } } } catch (Exception ex) { Console.WriteLine($"Error inserting record: {ex.Message}"); } finally { CloseConnection(); } } private bool RecordExists(string tableName, params (string PropertyName, object PropertyValue)[] properties) { try { string whereClause = null; // Parameter Validation if (string.IsNullOrEmpty(tableName) || properties == null || properties.Length == 0) { throw new ArgumentNullException("tableName, record, or properties", "Table name, record, and at least one property must be provided."); } try { OpenConnection(); // Generate the WHERE clause based on the provided properties if (properties[1].PropertyName != null) { whereClause = string.Join(" AND ", properties .Where(p => p.PropertyName != null) .Select(p => $"{p.PropertyName} = @{p.PropertyName}")); } else { whereClause = string.Join("", properties .Where(p => p.PropertyName != null) .Select(p => $"{p.PropertyName} = @{p.PropertyName}")); } // Check if the combination of properties exists in the table string query = $"SELECT COUNT(*) FROM {tableName} WHERE {whereClause}"; using (SQLiteCommand cmd = new SQLiteCommand(query, connection)) { foreach (var property in properties) { if (property.PropertyName != null) { cmd.Parameters.Add(new SQLiteParameter($"@{property.PropertyName}", property.PropertyValue)); } } int count = Convert.ToInt32(cmd.ExecuteScalar()); return count > 0; } } catch (Exception ex) { Console.WriteLine($"Error checking existence: {ex.Message}"); throw; // Rethrow the exception or return false, depending on your design } finally { CloseConnection(); } } catch (Exception ex) { Console.WriteLine($"General error in SKUExists method: {ex.Message}"); return false; } } public bool CheckSkuRunning(string sku, string tableName) { try { OpenConnection(); // Check if SKU exists in the table string query = $"SELECT COUNT(*) FROM {tableName} WHERE FNSKU = @FNSKU "; using (SQLiteCommand cmd = new SQLiteCommand(query, connection)) { cmd.Parameters.AddWithValue("@FNSKU", sku); int count = Convert.ToInt32(cmd.ExecuteScalar()); return count > 0; } } catch (Exception ex) { Console.WriteLine($"Error checking SKU existence: {ex.Message}"); return false; } finally { CloseConnection(); } } public bool checkCarton(string model_no, string QR) { try { OpenConnection(); // Check if SKU exists in the table string query = $"SELECT * FROM MODELLogs WHERE QR = @QR and MODEL_NO = @MODEL_NO"; using (SQLiteCommand cmd = new SQLiteCommand(query, connection)) { cmd.Parameters.AddWithValue("@MODEL_NO", model_no); cmd.Parameters.AddWithValue("@QR", QR); int count = Convert.ToInt32(cmd.ExecuteScalar()); return count > 0; } } catch (Exception ex) { Console.WriteLine($"Error checking SKU existence: {ex.Message}"); return false; } finally { CloseConnection(); } } public int GetLastRecord() { try { OpenConnection(); // Query to get the last id from the DailyLogs table string query = "SELECT id FROM DailyLogs ORDER BY id DESC LIMIT 1;"; using (SQLiteCommand cmd = new SQLiteCommand(query, connection)) { // Execute the query and convert the result to an integer int lastId = Convert.ToInt32(cmd.ExecuteScalar()); return lastId; } } catch (Exception ex) { Console.WriteLine($"Error retrieving the last record id: {ex.Message}"); return -1; // Return a sentinel value to indicate failure } finally { CloseConnection(); } } public bool UpdateCartonValue(string cartonValue, int lastId) { try { // Get the last record ID using the existing GetLastRecord method OpenConnection(); // Query to update the carton_value for the last record string query = "UPDATE DailyLogs SET WRONG_CARTON = @cartonValue WHERE id = @id;"; using (SQLiteCommand cmd = new SQLiteCommand(query, connection)) { // Add parameters to the query cmd.Parameters.AddWithValue("@cartonValue", cartonValue); cmd.Parameters.AddWithValue("@id", lastId); // Execute the update query int rowsAffected = cmd.ExecuteNonQuery(); return rowsAffected > 0; // Return true if the update was successful } } catch (Exception ex) { Console.WriteLine($"Error updating carton value: {ex.Message}"); return false; } finally { CloseConnection(); } } public List showData() { List LogList = new List(); try { OpenConnection(); string query = "SELECT * FROM SKUlogs"; using (SQLiteCommand command = new SQLiteCommand(query, connection)) { using (SQLiteDataReader reader = command.ExecuteReader()) { while (reader.Read()) { SKULog sKULog = new SKULog { SKU = reader["SKU"] != DBNull.Value ? reader["SKU"].ToString() : string.Empty, FNSKU = reader["FNSKU"] != DBNull.Value ? reader["FNSKU"].ToString() : string.Empty, SYS_IP = reader["SYS_IP"] != DBNull.Value ? reader["SYS_IP"].ToString() : string.Empty, Title = reader["Title"] != DBNull.Value ? reader["Title"].ToString() : string.Empty, NetWeightKg = reader["NetWeightKg"] != DBNull.Value ? Convert.ToDouble(reader["NetWeightKg"]) : 0.0, Colour = reader["Colour"] != DBNull.Value ? reader["Colour"].ToString() : string.Empty, ModelNo = reader["ModelNo"] != DBNull.Value ? reader["ModelNo"].ToString() : string.Empty, Size = reader["Size"] != DBNull.Value ? reader["Size"].ToString() : string.Empty, RECORD_DATE = reader["RECORD_DATE"] != DBNull.Value ? Convert.ToDateTime(reader["RECORD_DATE"]) : DateTime.MinValue, USER_ID = reader["USER_ID"] != DBNull.Value ? reader["USER_ID"].ToString() : string.Empty, ItemsPerBox = reader["ItemsPerBox"] != DBNull.Value ? Convert.ToInt32(reader["ItemsPerBox"]) : 0, MARKET_PLACE = reader["MARKET_PLACE"] != DBNull.Value ? reader["MARKET_PLACE"].ToString() : "NA" }; LogList.Add(sKULog); } } } } catch (Exception ex) { } finally { CloseConnection(); } return LogList; } public void DeleteRow(string FNSKU, string market_place) { // Open the connection OpenConnection(); // Define the SQL query with a parameter string query = "DELETE FROM SKUlogs WHERE FNSKU = @fnsku AND(MARKET_PLACE = @MARKET_PLACE OR MARKET_PLACE IS NULL)"; // Use a using block to ensure resources are properly disposed using (SQLiteCommand cmd = new SQLiteCommand(query, connection)) // Replace 'sqliteConnection' with your actual SQLiteConnection object { // Add the parameter to avoid SQL injection cmd.Parameters.AddWithValue("@fnsku", FNSKU); cmd.Parameters.AddWithValue("@MARKET_PLACE", market_place); // Execute the query cmd.ExecuteNonQuery(); } // Close the connection CloseConnection(); } public List showModelData() { List LogList = new List(); try { OpenConnection(); string query = "SELECT MODEL_NO,QR,LIVE_WEIGHT,SYS_IP,RECORD_DATE,USER_ID , PC_NAME , MARKET_PLACE FROM MODELLogs order by RECORD_DATE desc "; using (SQLiteCommand command = new SQLiteCommand(query, connection)) { using (SQLiteDataReader reader = command.ExecuteReader()) { while (reader.Read()) { MODELLog log = new MODELLog { //CONTAINER_NO = reader["CONTAINER_NO"].ToString(), MODEL_NO = reader["MODEL_NO"].ToString(), QR = reader["QR"].ToString(), LIVE_WEIGHT = Convert.ToDecimal(reader["LIVE_WEIGHT"].ToString()), SYS_IP = reader["SYS_IP"].ToString(), RECORD_DATE = Convert.ToDateTime(reader["RECORD_DATE"]), USER_ID = reader["USER_ID"].ToString(), PC_NAME = reader["PC_NAME"].ToString(), MARKET_PLACE = reader["MARKET_PLACE"].ToString(), }; LogList.Add(log); } } } } catch (Exception ex) { } finally { CloseConnection(); } return LogList; } public int FillCounts(string fnsku, string market_place) { int totalCount = 0; try { OpenConnection(); string query; if (market_place == "NA") { query = @"SELECT COUNT(FNSKU) AS Total_item FROM DailyLogs WHERE is_weight_wrong = 0 AND is_fnsku_wrong = 0 AND FNSKU = @FNSKU AND LIVE_WEIGHT > 0.121 AND (MARKET_PLACE IS NULL OR MARKET_PLACE LIKE 'NA')"; } else { query = @"SELECT COUNT(FNSKU) AS Total_item FROM DailyLogs WHERE is_weight_wrong = 0 AND is_fnsku_wrong = 0 AND FNSKU = @FNSKU AND LIVE_WEIGHT > 0.121 AND MARKET_PLACE = @MARKET_PLACE"; } using (SQLiteCommand command = new SQLiteCommand(query, connection)) { // Add FNSKU parameter command.Parameters.AddWithValue("@FNSKU", fnsku); command.Parameters.AddWithValue("@MARKET_PLACE", market_place); using (SQLiteDataReader reader = command.ExecuteReader()) { while (reader.Read()) { totalCount = reader.GetInt32(0); } } } } catch (Exception ex) { } finally { CloseConnection(); } return totalCount; } public int FillCarton(string modelNo) { int totalCount = 0; try { OpenConnection(); string query = "SELECT COUNT(MODEL_NO) AS Total_item FROM MODELLogs WHERE MODEL_NO = @MODEL_NO and LIVE_WEIGHT > 0.121"; using (SQLiteCommand command = new SQLiteCommand(query, connection)) { // Add FNSKU parameter command.Parameters.AddWithValue("@MODEL_NO", modelNo); using (SQLiteDataReader reader = command.ExecuteReader()) { while (reader.Read()) { totalCount = reader.GetInt32(0); } } } } catch (Exception ex) { } finally { CloseConnection(); } return totalCount; } public void CheckAndCreateDb() { try { // Create the folder if it doesn't exist Directory.CreateDirectory(folderPath); // Set the connection string with the dynamic path connectionString = $"Data Source={dbPath};Version=3;"; // Check if the database file exists bool isDatabaseExists = File.Exists(dbPath); // If the database file doesn't exist, create it if (!isDatabaseExists) { SQLiteConnection.CreateFile(dbPath); Console.WriteLine("SQLite database created successfully"); } } catch (Exception ex) { Console.WriteLine($"Error creating database: {ex.Message}"); } } public void CreateSKUlogTable(string tableName, List columns) { try { OpenConnection(); // Check if table exists string tableExistsQuery = $"SELECT name FROM sqlite_master WHERE type='table' AND name='{tableName}'"; bool tableExists = false; using (SQLiteCommand checkTableCmd = new SQLiteCommand(tableExistsQuery, connection)) { using (SQLiteDataReader reader = checkTableCmd.ExecuteReader()) { tableExists = reader.HasRows; } } if (!tableExists) { // Create table if it does not exist string createTableCommand = $"CREATE TABLE {tableName} ({AVS.SKULog.GetColumnsDefinition(columns)})"; using (SQLiteCommand cmd = new SQLiteCommand(createTableCommand, connection)) { cmd.ExecuteNonQuery(); } Console.WriteLine($"Table '{tableName}' created."); } else { // Check for each column's existence and add it if it doesn't exist foreach (var column in columns) { string columnExistsQuery = $"PRAGMA table_info({tableName})"; bool columnExists = false; using (SQLiteCommand checkColumnCmd = new SQLiteCommand(columnExistsQuery, connection)) { using (SQLiteDataReader reader = checkColumnCmd.ExecuteReader()) { while (reader.Read()) { if (reader["name"].ToString() == column.Name) { columnExists = true; break; } } } } if (!columnExists) { string addColumnCommand = $"ALTER TABLE {tableName} ADD COLUMN {column.Name} {column.DataType}"; using (SQLiteCommand addColumnCmd = new SQLiteCommand(addColumnCommand, connection)) { addColumnCmd.ExecuteNonQuery(); } Console.WriteLine($"Column '{column.Name}' added to table '{tableName}'."); } } } CloseConnection(); } catch (Exception ex) { Console.WriteLine($"Error creating or modifying table: {ex.Message}"); CloseConnection(); } finally { CloseConnection(); } } public void CreateMODELlogTable(string tableName, List columns) { try { OpenConnection(); // Check if table exists string tableExistsQuery = $"SELECT name FROM sqlite_master WHERE type='table' AND name='{tableName}'"; bool tableExists = false; using (SQLiteCommand checkTableCmd = new SQLiteCommand(tableExistsQuery, connection)) { using (SQLiteDataReader reader = checkTableCmd.ExecuteReader()) { tableExists = reader.HasRows; } } if (!tableExists) { // Create table if it does not exist string createTableCommand = $"CREATE TABLE {tableName} ({AVS.MODELLog.GetColumnsDefinition(columns)})"; using (SQLiteCommand cmd = new SQLiteCommand(createTableCommand, connection)) { cmd.ExecuteNonQuery(); } Console.WriteLine($"Table '{tableName}' created."); } else { // Check for each column's existence and add it if it doesn't exist foreach (var column in columns) { string columnExistsQuery = $"PRAGMA table_info({tableName})"; bool columnExists = false; using (SQLiteCommand checkColumnCmd = new SQLiteCommand(columnExistsQuery, connection)) { using (SQLiteDataReader reader = checkColumnCmd.ExecuteReader()) { while (reader.Read()) { if (reader["name"].ToString() == column.Name) { columnExists = true; break; } } } } if (!columnExists) { string addColumnCommand = $"ALTER TABLE {tableName} ADD COLUMN {column.Name} {column.DataType}"; using (SQLiteCommand addColumnCmd = new SQLiteCommand(addColumnCommand, connection)) { addColumnCmd.ExecuteNonQuery(); } Console.WriteLine($"Column '{column.Name}' added to table '{tableName}'."); } } } CloseConnection(); } catch (Exception ex) { Console.WriteLine($"Error creating or modifying table: {ex.Message}"); CloseConnection(); } finally { CloseConnection(); } } public void CreateDailylogTable(string tableName, List columns) { try { OpenConnection(); // Check if table exists string tableExistsQuery = $"SELECT name FROM sqlite_master WHERE type='table' AND name='{tableName}'"; bool tableExists = false; using (SQLiteCommand checkTableCmd = new SQLiteCommand(tableExistsQuery, connection)) { using (SQLiteDataReader reader = checkTableCmd.ExecuteReader()) { tableExists = reader.HasRows; } } if (!tableExists) { // Create table if it does not exist string createTableCommand = $"CREATE TABLE {tableName} ({AVS.DailyLog.GetColumnsDefinition(columns)})"; using (SQLiteCommand cmd = new SQLiteCommand(createTableCommand, connection)) { cmd.ExecuteNonQuery(); } Console.WriteLine($"Table '{tableName}' created."); } else { // Check for each column's existence and add it if it doesn't exist foreach (var column in columns) { string columnExistsQuery = $"PRAGMA table_info({tableName})"; bool columnExists = false; using (SQLiteCommand checkColumnCmd = new SQLiteCommand(columnExistsQuery, connection)) { using (SQLiteDataReader reader = checkColumnCmd.ExecuteReader()) { while (reader.Read()) { if (reader["name"].ToString() == column.Name) { columnExists = true; break; } } } } if (!columnExists) { string addColumnCommand = $"ALTER TABLE {tableName} ADD COLUMN {column.Name} {column.DataType}"; using (SQLiteCommand addColumnCmd = new SQLiteCommand(addColumnCommand, connection)) { addColumnCmd.ExecuteNonQuery(); } Console.WriteLine($"Column '{column.Name}' added to table '{tableName}'."); } } } CloseConnection(); } catch (Exception ex) { Console.WriteLine($"Error creating or modifying table: {ex.Message}"); CloseConnection(); } finally { CloseConnection(); } } public async Task> GetAllLogsFromDatabaseAsyncCarton() { List logs = new List(); try { using (var command = new SQLiteCommand("SELECT * FROM MODELLogs", connection)) { using (var reader = await command.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var log = new MODELLog { QR = reader["QR"] is DBNull ? null : reader["QR"].ToString(), RECORD_DATE = reader["RECORD_DATE"] is DBNull ? DateTime.MinValue : DateTime.Parse(reader["RECORD_DATE"].ToString()), SYS_IP = reader["SYS_IP"] is DBNull ? null : reader["SYS_IP"].ToString(), USER_ID = reader["USER_ID"] is DBNull ? null : reader["USER_ID"].ToString(), LIVE_WEIGHT = reader["LIVE_WEIGHT"] is DBNull ? 0 : Convert.ToDecimal(reader["LIVE_WEIGHT"].ToString()), MODEL_NO = reader["MODEL_NO"] is DBNull ? "0" : reader["MODEL_NO"].ToString(), PC_NAME = reader["PC_NAME"] is DBNull ? "PC NAME NOT FOUND" : reader["PC_NAME"].ToString(), MARKET_PLACE = reader["MARKET_PLACE"] is DBNull ? "NA" : reader["MARKET_PLACE"].ToString(), }; logs.Add(log); } } } return logs; } catch (Exception ex) { // Handle exceptions, log them, or rethrow if needed. Console.WriteLine($"Error in GetAllLogsFromDatabaseAsync: {ex.Message}"); throw; } } public async Task> GetAllLogsFromDatabaseAsync() { List logs = new List(); try { using (var command = new SQLiteCommand("SELECT * FROM DailyLogs", connection)) { using (var reader = await command.ExecuteReaderAsync()) { while (await reader.ReadAsync()) { var log = new DailyLog { FNSKU = reader["FNSKU"] is DBNull ? null : reader["FNSKU"].ToString(), RECORD_DATE = reader["RECORD_DATE"] is DBNull ? DateTime.MinValue : DateTime.Parse(reader["RECORD_DATE"].ToString()), SYS_IP = reader["SYS_IP"] is DBNull ? null : reader["SYS_IP"].ToString(), USER_ID = reader["USER_ID"] is DBNull ? null : reader["USER_ID"].ToString(), LIVE_WEIGHT = reader["LIVE_WEIGHT"] is DBNull ? 0 : Convert.ToDecimal(reader["LIVE_WEIGHT"].ToString()), WRONG_FNSKU = reader["WRONG_FNSKU"] is DBNull ? null : reader["WRONG_FNSKU"].ToString(), IS_WEIGHT_WRONG = reader["IS_WEIGHT_WRONG"] is DBNull ? false : Convert.ToBoolean(reader["IS_WEIGHT_WRONG"]), IS_FNSKU_WRONG = reader["IS_FNSKU_WRONG"] is DBNull ? false : Convert.ToBoolean(reader["IS_FNSKU_WRONG"]), NET_WEIGHT = reader["NET_WEIGHT"] is DBNull ? 0 : Convert.ToDecimal(reader["NET_WEIGHT"].ToString()), MODEL_NO = reader["MODEL_NO"] is DBNull ? "0" : reader["MODEL_NO"].ToString(), WRONG_CARTON = reader["WRONG_CARTON"] is DBNull ? null : reader["WRONG_CARTON"].ToString(), MARKET_PLACE = reader["MARKET_PLACE"] != DBNull.Value ? reader["MARKET_PLACE"].ToString() : "NA", PC_NAME = reader["PC_NAME"] is DBNull ? null : reader["PC_NAME"].ToString(), }; logs.Add(log); } } } return logs; } catch (Exception ex) { // Handle exceptions, log them, or rethrow if needed. Console.WriteLine($"Error in GetAllLogsFromDatabaseAsync: {ex.Message}"); throw; } } public string ConvertLogsToJson(List logs) { var jsonLogs = logs.Select(log => new { log.FNSKU, log.RECORD_DATE, log.SYS_IP, log.USER_ID, log.LIVE_WEIGHT, log.WRONG_FNSKU, log.IS_WEIGHT_WRONG, log.IS_FNSKU_WRONG, log.NET_WEIGHT, log.MODEL_NO, log.WRONG_CARTON, log.MARKET_PLACE, log.PC_NAME }); return Newtonsoft.Json.JsonConvert.SerializeObject(jsonLogs, Newtonsoft.Json.Formatting.Indented); } public string ConvertLogsToJsonCarton(List logs) { var jsonLogs = logs.Select(log => new { log.MODEL_NO, log.QR, log.RECORD_DATE, log.SYS_IP, log.USER_ID, log.LIVE_WEIGHT, log.PC_NAME, log.MARKET_PLACE }); return Newtonsoft.Json.JsonConvert.SerializeObject(jsonLogs, Newtonsoft.Json.Formatting.Indented); } public void DeleteAllLogsFromDatabase() { OpenConnection(); using (var transaction = connection.BeginTransaction()) { try { using (var command = new SQLiteCommand("DELETE FROM DailyLogs", connection)) { command.ExecuteNonQuery(); } transaction.Commit(); } catch (Exception ex) { CloseConnection(); // Handle the exception, e.g., log it or throw a custom exception Console.WriteLine($"Error deleting logs: {ex.Message}"); transaction.Rollback(); throw; } finally { CloseConnection(); } } } public void DeleteAllLogsFromDatabaseCarton() { OpenConnection(); using (var transaction = connection.BeginTransaction()) { try { using (var command = new SQLiteCommand("DELETE FROM MODELLogs", connection)) { command.ExecuteNonQuery(); } transaction.Commit(); } catch (Exception ex) { CloseConnection(); // Handle the exception, e.g., log it or throw a custom exception Console.WriteLine($"Error deleting logs: {ex.Message}"); transaction.Rollback(); throw; } finally { CloseConnection(); } } } public async void postDataAsync() { HttpClient client = new HttpClient(); client.Timeout = TimeSpan.FromMinutes(5); OpenConnection(); try { List logs = await GetAllLogsFromDatabaseAsync(); if (logs.Count > 0) { CloseConnection(); string jsonData = ConvertLogsToJson(logs); // Create a StringContent object with JSON data var content = new StringContent(jsonData, Encoding.UTF8, "application/json"); // Send a POST request with the data var response = await client.PostAsync(SERVER_URL, content); if (response.IsSuccessStatusCode) { // Handle a successful response string responseString = await response.Content.ReadAsStringAsync(); DeleteAllLogsFromDatabase(); MessageBox.Show("DATA POSTED SUCCESSFULLY ! "); _mainForm.btn_post_data.Enabled = true; } else { MessageBox.Show("ERROR POSTING DATA ! "); _mainForm.btn_post_data.Enabled = true; } } else { MessageBox.Show("NO DATA FOUND ! "); _mainForm.btn_post_data.Enabled = true; } } catch (HttpRequestException ex) { // Handle exception indicating server is down or unreachable MessageBox.Show($"Error: {ex.Message}"); } } public async void postDataAsyncCarton() { HttpClient client = new HttpClient(); client.Timeout = TimeSpan.FromMinutes(5); OpenConnection(); try { List logs = await GetAllLogsFromDatabaseAsyncCarton(); if (logs.Count > 0) { CloseConnection(); string jsonData = ConvertLogsToJsonCarton(logs); // Create a StringContent object with JSON data var content = new StringContent(jsonData, Encoding.UTF8, "application/json"); // Send a POST request with the data var response = await client.PostAsync(SERVER_URL_CARTON, content); if (response.IsSuccessStatusCode) { // Handle a successful response string responseString = await response.Content.ReadAsStringAsync(); DeleteAllLogsFromDatabaseCarton(); MessageBox.Show("DATA POSTED SUCCESSFULLY ! "); _mainForm.btn_post_data.Enabled = true; } else { MessageBox.Show("ERROR POSTING DATA ! " + response.StatusCode); _mainForm.btn_post_data.Enabled = true; } } else { MessageBox.Show("NO DATA FOUND ! "); _mainForm.btn_post_data.Enabled = true; } } catch (HttpRequestException ex) { // Handle exception indicating server is down or unreachable MessageBox.Show($"Error: {ex.Message}"); } } } }