using Edge.Core.IndustryStandardInterface.Pump; using Microsoft.Data.SqlClient; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Data; namespace EagleStar_Pump { internal class SqlClientHelper { public static List ReadTransactionData(PumpGroupConfiguration appConfig, ILogger logger, ref int fid) { string queryString = "select top 1 FID, FFuelTradeID, FFipID, FNozzleID, FPrice, FDueAmount, FDueVolume, FTotalAmount" + $", FTotalVolume, FTradeTime from TFuelTradeRecord where FNozzleID>0 and FID>{fid}"; var dataList = new List(); try { using (var connection = new SqlConnection(appConfig.DatabaseConnectionString)) { if (connection.State != ConnectionState.Open) connection.Open(); using (var command = new SqlCommand(queryString, connection)) { using (var reader = command.ExecuteReader()) { while (reader.Read()) { var nz = new LogicalNozzle(int.Parse(reader["FFipID"].ToString()), 0, byte.Parse(reader["FNozzleID"].ToString()), null); var trx = new FdcTransaction() { SequenceNumberGeneratedOnPhysicalPump = int.Parse(reader["FFuelTradeID"].ToString()), Nozzle = nz, Price = (int)(decimal.Parse(reader["FPrice"].ToString()) * (decimal)Math.Pow(10, appConfig.PriceDecimalDigits)), Amount = (int)(decimal.Parse(reader["FDueAmount"].ToString()) * (decimal)Math.Pow(10, appConfig.AmountDecimalDigits)), Volumn = (int)(decimal.Parse(reader["FDueVolume"].ToString()) * (decimal)Math.Pow(10, appConfig.VolumeDecimalDigits)), AmountTotalizer = (int)(decimal.Parse(reader["FTotalAmount"].ToString()) * (decimal)Math.Pow(10, appConfig.AmountDecimalDigits)), VolumeTotalizer = (int)(decimal.Parse(reader["FTotalVolume"].ToString()) * (decimal)Math.Pow(10, appConfig.VolumeTotalizerDecimalDigits)), SaleEndTime = DateTime.Parse(reader["FTradeTime"].ToString()), Finished = true }; dataList.Add(trx); int flag = int.Parse(reader["FID"].ToString()); if (flag > fid) fid = flag; logger.LogTrace($"FID {fid}, SequenceNumber {trx.SequenceNumberGeneratedOnPhysicalPump}, PumpId {trx.Nozzle.PumpId}, LogicalId {trx.Nozzle.LogicalId}" + $", Price {trx.Price}, Amount {trx.Amount}, Volumn {trx.Volumn}, AmountTotalizer {trx.AmountTotalizer}, VolumeTotalizer {trx.VolumeTotalizer}" + $", SaleEndTime {trx.SaleEndTime}"); } } } } } catch (Exception ex) { logger.LogError($"ReadTransactionData error, exception detail: {ex}"); } return dataList; } } }