using System; using System.Collections.Generic; using Wayne.FDCPOSLibrary; using Wayne.FDCPOSLibrary.Configuration; using Wayne.Lib.Log; namespace Wayne.ForecourtControl.Fusion { public class FUSIONConfig { #region Fields private FUSIONForecourtControl forecourtControl; private IFSFSockets clientSocket; protected Dictionary serviceRequestClientList; private readonly DebugLogger debugLogger; #endregion #region Construction public FUSIONConfig(int deviceId) { if (FUSIONFactory.fusionForecourtControlList.ContainsKey(deviceId)) { this.forecourtControl = (FUSIONForecourtControl)(FUSIONFactory.fusionForecourtControlList[deviceId]); clientSocket = this.forecourtControl.manager.ifsfManager.clientSocket; debugLogger = forecourtControl.manager.ifsfManager.DebugLogger; serviceRequestClientList = new Dictionary(); } } #endregion private void DebugLog(string s) { if (debugLogger.IsActive()) debugLogger.Add(s); } #region Events public event EventHandler OnConfigurationChanged; internal void FireOnConfigurationChanged() { if (this.OnConfigurationChanged != null) { this.OnConfigurationChanged(this, EventArgs.Empty); } } #endregion #region Config Start public void ConfigStart(EventHandler requestCompleted, object userToken, object src) { try { // create XML ServiceRequest object ServiceRequestConfigStart SvRes = new ServiceRequestConfigStart(); SvRes.ApplicationSender = this.clientSocket.applicationSender; SvRes.WorkstationID = this.clientSocket.workstationID; ServiceRequestConfigStart.ServiceRequestPOSdataConfigStart posDataElem = new ServiceRequestConfigStart.ServiceRequestPOSdataConfigStart(); posDataElem.POSTimeStamp = DateTime.Now.ToString(FDCConvert.DateFormat); if (FDCGlobal.ConfigVersion >= FDCConfigVersion.V0200) posDataElem.InterfaceVersion = FDCGlobal.ConfigVersionToString(); ServiceRequestConfigStart.ServiceRequestPOSdataConfigStart[] posDataArray = { posDataElem }; SvRes.POSdata = posDataArray; clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); } catch (Exception ex) { DebugLog("ConfigStart Exception! " + ex.ToString()); } } public void ConfigStartResp(int requestId, string sOverallResult, ServiceResponseConfigStart sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("ConfigStartResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("ConfigStartResp Exception! " + ex.ToString()); } } #endregion #region Config End public void ConfigEnd(EventHandler requestCompleted, object userToken, object src) { try { // create XML ServiceRequest object ServiceRequestConfigEnd SvRes = new ServiceRequestConfigEnd(); SvRes.ApplicationSender = this.clientSocket.applicationSender; SvRes.WorkstationID = this.clientSocket.workstationID; ServiceRequestConfigEnd.ServiceRequestPOSdataConfigEnd posDataElem = new ServiceRequestConfigEnd.ServiceRequestPOSdataConfigEnd(); posDataElem.POSTimeStamp = DateTime.Now.ToString(FDCConvert.DateFormat); ServiceRequestConfigEnd.ServiceRequestPOSdataConfigEnd[] posDataArray = { posDataElem }; SvRes.POSdata = posDataArray; clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 60000); } catch (Exception ex) { DebugLog("ConfigEnd Exception! " + ex.ToString()); } } public void ConfigEndResp(int requestId, string sOverallResult, ServiceResponseConfigEnd sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("ConfigEndResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("ConfigEndResp Exception! " + ex.ToString()); } } #endregion #region Products public bool AddProduct(int productId, string name) { try { DebugLog("AddProduct init"); ServiceRequestDefProducts SvRes = null; string key = "DefProducts"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefProducts)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefProducts(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefProducts") { DebugLog(string.Format("SvRes.RequestType={0} != DefProducts", SvRes.RequestType)); return false; } } ServiceRequestDefProducts.ServiceRequestPOSdataDefProducts POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefProducts.ServiceRequestPOSdataDefProducts[] POSDataArray = null; POSDataElem = new ServiceRequestDefProducts.ServiceRequestPOSdataDefProducts(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefProducts.DefProductsProduct product = null; if (POSDataElem.Product != null) { foreach (ServiceRequestDefProducts.DefProductsProduct productTemp in POSDataElem.Product) if (productTemp.Id == Convert.ToString(productId)) product = productTemp; } if (product == null && productId > 0) { product = new ServiceRequestDefProducts.DefProductsProduct(); product.Id = Convert.ToString(productId); product.Name = name; ServiceRequestDefProducts.DefProductsProduct[] productArray = POSDataElem.Product; IFSFManager.ArrayResize(ref productArray, (productArray != null) ? productArray.Length + 1 : 1); productArray[productArray.Length - 1] = product; POSDataElem.Product = productArray; } DebugLog("AddProduct end"); return true; } catch (Exception ex) { DebugLog("AddProduct Exception! " + ex.ToString()); } return false; } public bool AddProductSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddProductSend init"); ServiceRequestDefProducts SvRes = null; string key = "DefProducts"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefProducts)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddProductSend end"); return true; } } catch (Exception ex) { DebugLog("AddProductSend Exception! " + ex.ToString()); } return false; } public void DefProductsResp(int requestId, string sOverallResult, ServiceResponseDefProducts sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefProductsResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefProductsResp Exception! " + ex.ToString()); } } #endregion #region Grades public bool AddGrade(int gradeId, string name) { return InternalAddGrade(gradeId, name, null, null, null, null, null); } public bool AddGrade(int gradeId, string name, string unitOfMeasure) { return InternalAddGrade(gradeId, name, null, null, null, null, unitOfMeasure); } public bool AddGrade(int gradeId, string name, int productHighId, int productHighPerc, int productLowId, int productLowPerc, string unitOfMeasure) { return InternalAddGrade(gradeId, name, productHighId, productHighPerc, productLowId, productLowPerc, unitOfMeasure); } private bool InternalAddGrade(int gradeId, string name, int? productHighId, int? productHighPerc, int? productLowId, int? productLowPerc, string unitOfMeasure) { try { DebugLog("InternalAddGrade init"); ServiceRequestDefGrades SvRes = null; string key = "DefGrades"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefGrades)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefGrades(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefGrades" && SvRes.RequestType != "DefGrade") { DebugLog(string.Format("SvRes.RequestType={0} != DefGrades", SvRes.RequestType)); return false; } } ServiceRequestDefGrades.ServiceRequestPOSdataDefGrades POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefGrades.ServiceRequestPOSdataDefGrades[] POSDataArray = null; POSDataElem = new ServiceRequestDefGrades.ServiceRequestPOSdataDefGrades(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefGrades.DefGradesGrade grade = null; if (POSDataElem.Grade != null) { foreach (ServiceRequestDefGrades.DefGradesGrade gradeTemp in POSDataElem.Grade) if (gradeTemp.Id == Convert.ToString(gradeId)) grade = gradeTemp; } if (grade == null && gradeId > 0) { grade = new ServiceRequestDefGrades.DefGradesGrade(); grade.Id = Convert.ToString(gradeId); if (name != null) grade.Name = name; if (productHighId != null) grade.ProductHighId = Convert.ToString((int)productHighId); if (productHighPerc != null) grade.ProductHighPerc = Convert.ToString((int)productHighPerc); if (productLowId != null) grade.ProductLowId = Convert.ToString((int)productLowId); if (productLowPerc != null) grade.ProductLowPerc = Convert.ToString((int)productLowPerc); if (!String.IsNullOrEmpty(unitOfMeasure)) { var upperCaseUnitName = unitOfMeasure.ToUpper(); // Fusion only allows the following units // TODO: Change this to be more flexible if (upperCaseUnitName == "KG") grade.UnitOfMeasure = "kg"; else if (upperCaseUnitName.StartsWith("LIT") || upperCaseUnitName.StartsWith("LTR")) grade.UnitOfMeasure = "liters"; else if (upperCaseUnitName == "M3") grade.UnitOfMeasure = "M3"; else if (upperCaseUnitName.StartsWith("GAL")) grade.UnitOfMeasure = "gallons"; } ServiceRequestDefGrades.DefGradesGrade[] gradeArray = POSDataElem.Grade; IFSFManager.ArrayResize(ref gradeArray, (gradeArray != null) ? gradeArray.Length + 1 : 1); gradeArray[gradeArray.Length - 1] = grade; POSDataElem.Grade = gradeArray; } DebugLog("InternalAddGrade end"); return true; } catch (Exception ex) { DebugLog("InternalAddGrade Exception! " + ex.ToString()); } return false; } public bool AddGradeSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddGradeSend init"); ServiceRequestDefGrades SvRes = null; string key = "DefGrades"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefGrades)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddGradeSend end"); return true; } } catch (Exception ex) { DebugLog("AddGradeSend Exception! " + ex.ToString()); } return false; } public bool AddAssignGradePar(int gradeId, string gradeName) { try { DebugLog("AddAssignGradePar init"); ServiceRequestAssignGradePars SvRes = null; string key = "AssignGradePars"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestAssignGradePars)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestAssignGradePars(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "AssignGradePars") { DebugLog(string.Format("SvRes.RequestType={0} != AssignGradePars", SvRes.RequestType)); return false; } } ServiceRequestAssignGradePars.ServiceRequestPOSdataAssignGradePars POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestAssignGradePars.ServiceRequestPOSdataAssignGradePars[] POSDataArray = null; POSDataElem = new ServiceRequestAssignGradePars.ServiceRequestPOSdataAssignGradePars(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestAssignGradePars.AssignGradeParsGrade grade = null; if (POSDataElem.Grade != null) { foreach (ServiceRequestAssignGradePars.AssignGradeParsGrade gradeTemp in POSDataElem.Grade) if (gradeTemp.Id == Convert.ToString(gradeId)) grade = gradeTemp; } if (grade == null && gradeId > 0) { grade = new ServiceRequestAssignGradePars.AssignGradeParsGrade(); grade.Id = Convert.ToString(gradeId); grade.Name = gradeName; ServiceRequestAssignGradePars.AssignGradeParsGrade[] gradeArray = POSDataElem.Grade; IFSFManager.ArrayResize(ref gradeArray, (gradeArray != null) ? gradeArray.Length + 1 : 1); gradeArray[gradeArray.Length - 1] = grade; POSDataElem.Grade = gradeArray; } DebugLog("AddAssignGradePar end"); return true; } catch (Exception ex) { DebugLog("AddAssignGradePar Exception! " + ex.ToString()); } return false; } public bool AddAssignGradeParsSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddAssignGradeParsSend init"); ServiceRequestAssignGradePars SvRes = null; string key = "AssignGradePars"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestAssignGradePars)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddAssignGradeParsSend end"); return true; } } catch (Exception ex) { DebugLog("AddAssignGradeParsSend Exception! " + ex.ToString()); } return false; } public void DefGradesResp(int requestId, string sOverallResult, ServiceResponseDefGrades sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefGradesResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefGradesResp Exception! " + ex.ToString()); } } #endregion #region Tanks public bool AddTank(int tankId, int gradeId, int capacity, int overflowLimit, int productHighLimit, int productLowLimit, int suctionLimit, double waterHighLimit, int temperatureHighLimit, int temperatureLowLimit, int leakMinimumElapsedTime, double leakVolumeTrigger) { return InternalAddTank(tankId, gradeId, null, capacity, overflowLimit, productHighLimit, productLowLimit, suctionLimit, waterHighLimit, temperatureHighLimit, temperatureLowLimit, leakMinimumElapsedTime, leakVolumeTrigger); } public bool AddTank(int tankId, int productId, int capacity, int overflowLimit, int productHighLimit, int productLowLimit, int suctionLimit, double waterHighLimit, int temperatureHighLimit, int temperatureLowLimit) { return InternalAddTank(tankId, null, productId, capacity, overflowLimit, productHighLimit, productLowLimit, suctionLimit, waterHighLimit, temperatureHighLimit, temperatureLowLimit, null, null); } private bool InternalAddTank(int tankId, int? gradeId, int? productId, int capacity, int overflowLimit, int productHighLimit, int productLowLimit, int suctionLimit, double waterHighLimit, int temperatureHighLimit, int temperatureLowLimit, int? leakMinimumElapsedTime, double? leakVolumeTrigger) { try { DebugLog("InternalAddTank init"); ServiceRequestDefTanks SvRes = null; string key = "DefTanks"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefTanks)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefTanks(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefTanks") { DebugLog(string.Format("SvRes.RequestType={0} != DefTanks", SvRes.RequestType)); return false; } } ServiceRequestDefTanks.ServiceRequestPOSdataDefTanks POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefTanks.ServiceRequestPOSdataDefTanks[] POSDataArray = null; POSDataElem = new ServiceRequestDefTanks.ServiceRequestPOSdataDefTanks(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefTanks.DefTanksTank tank = null; if (POSDataElem.Tank != null) { foreach (ServiceRequestDefTanks.DefTanksTank tankTemp in POSDataElem.Tank) if (tankTemp.Id == Convert.ToString(tankId)) tank = tankTemp; } if (tank == null && tankId > 0) { tank = new ServiceRequestDefTanks.DefTanksTank(); tank.Id = Convert.ToString(tankId); if (gradeId != null) tank.GradeId = Convert.ToString((int)gradeId); if (productId != null) tank.ProductId = Convert.ToString((int)productId); tank.Capacity = Convert.ToString(capacity); tank.OverflowLimit = Convert.ToString(overflowLimit); tank.ProductHighLimit = Convert.ToString(productHighLimit); tank.ProductLowLimit = Convert.ToString(productLowLimit); tank.SuctionLimit = Convert.ToString(suctionLimit); tank.WaterHighLimit = FDCConvert.ToString(waterHighLimit); tank.TemperatureHighLimit = Convert.ToString(temperatureHighLimit); tank.TemperatureLowLimit = Convert.ToString(temperatureLowLimit); if (leakMinimumElapsedTime != null) tank.LeakMinimumElapsedTime = Convert.ToString((int)leakMinimumElapsedTime); if (leakVolumeTrigger != null) tank.LeakVolumeTrigger = FDCConvert.ToString((double)leakVolumeTrigger); ServiceRequestDefTanks.DefTanksTank[] tankArray = POSDataElem.Tank; IFSFManager.ArrayResize(ref tankArray, (tankArray != null) ? tankArray.Length + 1 : 1); tankArray[tankArray.Length - 1] = tank; POSDataElem.Tank = tankArray; } DebugLog("InternalAddTank end"); return true; } catch (Exception ex) { DebugLog("InternalAddTank Exception! " + ex.ToString()); } return false; } public bool AddTanksSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddTanksSend init"); ServiceRequestDefTanks SvRes = null; string key = "DefTanks"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefTanks)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddTanksSend end"); return true; } } catch (Exception ex) { DebugLog("AddTanksSend Exception! " + ex.ToString()); } return false; } public void DefTanksResp(int requestId, string sOverallResult, ServiceResponseDefTanks sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefTanksResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefTanksResp Exception! " + ex.ToString()); } } #endregion #region Tank Suctions public bool AddTankSuction(string tankSuctionId, TankSuctionType type) { try { DebugLog("AddTankSuction init"); ServiceRequestDefTankSuctions SvRes = null; string key = "DefTankSuctions"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefTankSuctions)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefTankSuctions(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefTankSuctions") { DebugLog(string.Format("SvRes.RequestType={0} != DefTankSuctions", SvRes.RequestType)); return false; } } ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions[] POSDataArray = null; POSDataElem = new ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction tankSuction = null; if (POSDataElem.TankSuction != null) { foreach (ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction tankSuctionTemp in POSDataElem.TankSuction) if (tankSuctionTemp.Id == tankSuctionId) tankSuction = tankSuctionTemp; } if (tankSuction == null && !string.IsNullOrEmpty(tankSuctionId)) { tankSuction = new ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction(); tankSuction.Id = tankSuctionId; tankSuction.Type = Convert.ToString(type); ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction[] tankSuctionArray = POSDataElem.TankSuction; IFSFManager.ArrayResize(ref tankSuctionArray, (tankSuctionArray != null) ? tankSuctionArray.Length + 1 : 1); tankSuctionArray[tankSuctionArray.Length - 1] = tankSuction; POSDataElem.TankSuction = tankSuctionArray; } DebugLog("AddTankSuction end"); return true; } catch (Exception ex) { DebugLog("AddTankSuction Exception! " + ex.ToString()); } return false; } public bool AddTankSuctionTank(string tankSuctionId, int tankId) { try { DebugLog("AddTankSuctionTank init"); ServiceRequestDefTankSuctions SvRes = null; string key = "DefTankSuctions"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefTankSuctions)(serviceRequestClientList[key]); if (SvRes == null) { DebugLog("RequestType DefTankSuctions NOT found!!! return FALSE"); return false; } ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions[] POSDataArray = null; POSDataElem = new ServiceRequestDefTankSuctions.ServiceRequestPOSdataDefTankSuctions(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction tankSuction = null; if (POSDataElem.TankSuction != null) { foreach (ServiceRequestDefTankSuctions.DefTankSuctionsTankSuction tankSuctionTemp in POSDataElem.TankSuction) if (tankSuctionTemp.Id == tankSuctionId) tankSuction = tankSuctionTemp; } if (tankSuction == null && !string.IsNullOrEmpty(tankSuctionId)) { DebugLog(string.Format("tank suction id={0} NOT found!!! return FALSE", tankSuctionId)); return false; } else { ServiceRequestDefTankSuctions.DefTankSuctionsTank tank = null; if (tankSuction.Tank != null) { foreach (ServiceRequestDefTankSuctions.DefTankSuctionsTank tankTemp in tankSuction.Tank) if (tankTemp.Id == Convert.ToString(tankId)) tank = tankTemp; } if (tank == null) { tank = new ServiceRequestDefTankSuctions.DefTankSuctionsTank(); tank.Id = Convert.ToString(tankId); ServiceRequestDefTankSuctions.DefTankSuctionsTank[] tankArray = tankSuction.Tank; IFSFManager.ArrayResize(ref tankArray, (tankArray != null) ? tankArray.Length + 1 : 1); tankArray[tankArray.Length - 1] = tank; tankSuction.Tank = tankArray; } } DebugLog("AddTankSuctionTank end"); return true; } catch (Exception ex) { DebugLog("AddTankSuctionTank Exception! " + ex.ToString()); } return false; } public bool AddTankSuctionsSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddTankSuctionsSend init"); ServiceRequestDefTankSuctions SvRes = null; string key = "DefTankSuctions"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefTankSuctions)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddTankSuctionsSend end"); return true; } } catch (Exception ex) { DebugLog("AddTankSuctionsSend Exception! " + ex.ToString()); } return false; } public void DefTankSuctionsResp(int requestId, string sOverallResult, ServiceResponseDefTankSuctions sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefTankSuctionsResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefTankSuctionsResp Exception! " + ex.ToString()); } } #endregion #region Fuel modes for fuel points public bool AddFuelMode(int id, string name, int authType, int maxAuthTime, int nozzleLayDownTime, int minGuardTime, int paymentType, double minVolume, double minMoney, int SupTransBufSize) { try { DebugLog("AddFuelMode init"); ServiceRequestDefFuelMode SvRes = null; string key = "DefFuelMode"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuelMode)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefFuelMode(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefFuelMode" && SvRes.RequestType != "DefFPFuelModes") { DebugLog(string.Format("SvRes.RequestType={0} != DefFuelMode", SvRes.RequestType)); return false; } } ServiceRequestDefFuelMode.ServiceRequestPOSdataDefFuelMode POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefFuelMode.ServiceRequestPOSdataDefFuelMode[] POSDataArray = null; POSDataElem = new ServiceRequestDefFuelMode.ServiceRequestPOSdataDefFuelMode(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefFuelMode.DefFuelModeFuelMode fuelMode = null; if (POSDataElem.FuelMode != null) { foreach (ServiceRequestDefFuelMode.DefFuelModeFuelMode fuelModeTemp in POSDataElem.FuelMode) if (fuelModeTemp.Id == Convert.ToString(id)) fuelMode = fuelModeTemp; } if (fuelMode == null && id > 0) { fuelMode = new ServiceRequestDefFuelMode.DefFuelModeFuelMode(); fuelMode.Id = Convert.ToString(id); fuelMode.MaxAuthTime = Convert.ToString(maxAuthTime); fuelMode.MinGuardTime = Convert.ToString(minGuardTime); fuelMode.MinMoney = Convert.ToString(minMoney); fuelMode.MinVolume = Convert.ToString(minVolume); fuelMode.Name = Convert.ToString(name); fuelMode.NozzleLayDownTime = Convert.ToString(nozzleLayDownTime); fuelMode.PaymentType = Convert.ToString(paymentType); fuelMode.SupTransBufSize = Convert.ToString(SupTransBufSize); fuelMode.AuthType = Convert.ToString(authType); ServiceRequestDefFuelMode.DefFuelModeFuelMode[] fuelModeArray = POSDataElem.FuelMode; IFSFManager.ArrayResize(ref fuelModeArray, (fuelModeArray != null) ? fuelModeArray.Length + 1 : 1); fuelModeArray[fuelModeArray.Length - 1] = fuelMode; POSDataElem.FuelMode = fuelModeArray; } DebugLog("AddFuelMode end"); return true; } catch (Exception ex) { DebugLog("AddFuelMode Exception! " + ex.ToString()); } return false; } public bool AddFuelModeSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddFuelModeSend init"); ServiceRequestDefFuelMode SvRes = null; string key = "DefFuelMode"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuelMode)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddFuelModeSend end"); return true; } } catch (Exception ex) { DebugLog("AddFuelModeSend Exception! " + ex.ToString()); } return false; } public void DefFuelModeResp(int requestId, string sOverallResult, ServiceResponseDefFuelMode sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefFuelModeResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefFuelModeResp Exception! " + ex.ToString()); } } #endregion #region Forecourt fuel mode public bool AddFCFuelMode(int fuellingType, double maxVolume, double maxMoney, int maxFuellingTime, int maxTimeNoProgress, int maxTimeToMinLimit, int presetOverrunLimit, int volumeDecimals, int amountDecimals, int priceDecimals) { try { DebugLog("AddFCFuelMode init"); ServiceRequestDefFuellingMode SvRes = null; string key = "DefFuellingMode"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuellingMode)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefFuellingMode(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefFuellingMode" && SvRes.RequestType != "DefFCFuelMode") { DebugLog(string.Format("SvRes.RequestType={0} != DefFuellingMode", SvRes.RequestType)); return false; } } ServiceRequestDefFuellingMode.ServiceRequestPOSdataDefFuellingMode POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefFuellingMode.ServiceRequestPOSdataDefFuellingMode[] POSDataArray = null; POSDataElem = new ServiceRequestDefFuellingMode.ServiceRequestPOSdataDefFuellingMode(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } POSDataElem.FuellingType = Convert.ToString(fuellingType); POSDataElem.MaxVolume = Convert.ToString(maxVolume); POSDataElem.MaxMoney = Convert.ToString(maxMoney); POSDataElem.MaxFuellingTime = Convert.ToString(maxFuellingTime); POSDataElem.MaxTimeNoProgress = Convert.ToString(maxTimeNoProgress); POSDataElem.MaxTimeToMinLimit = Convert.ToString(maxTimeToMinLimit); POSDataElem.PresetOverrunLimit = Convert.ToString(presetOverrunLimit); POSDataElem.VolumeDecimals = Convert.ToString(volumeDecimals); POSDataElem.AmountDecimals = Convert.ToString(amountDecimals); POSDataElem.PriceDecimals = Convert.ToString(priceDecimals); DebugLog("AddFCFuelMode end"); return true; } catch (Exception ex) { DebugLog("AddFCFuelMode Exception! " + ex.ToString()); } return false; } public bool AddFCFuelModeSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddFCFuelModeSend init"); ServiceRequestDefFuellingMode SvRes = null; string key = "DefFuellingMode"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuellingMode)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddFCFuelModeSend end"); return true; } } catch (Exception ex) { DebugLog("AddFCFuelModeSend Exception! " + ex.ToString()); } return false; } public void DefFuellingModeResp(int requestId, string sOverallResult, ServiceResponseDefFuellingMode sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefFuellingModeResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefFuellingModeResp Exception! " + ex.ToString()); } } #endregion #region Fuel points public bool AddFuelPoint(int id, int pumpType, string comChannelId, string IPAddress, int IPPort, int physicalAddress, int internalAddress) { try { DebugLog("AddFuelPoint init"); ServiceRequestDefFuelPoint SvRes = null; string key = "DefFuelPoint"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuelPoint)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefFuelPoint(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefFuelPoint") { DebugLog(string.Format("SvRes.RequestType={0} != DefFuelPoint", SvRes.RequestType)); return false; } } ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint[] POSDataArray = null; POSDataElem = new ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefFuelPoint.DefFuelPointFuelPoint fuelpoint = null; if (POSDataElem.FuelPoint != null) { foreach (ServiceRequestDefFuelPoint.DefFuelPointFuelPoint fuelpointTemp in POSDataElem.FuelPoint) if (fuelpointTemp.Id == Convert.ToString(id)) fuelpoint = fuelpointTemp; } if (fuelpoint == null && id > 0) { fuelpoint = new ServiceRequestDefFuelPoint.DefFuelPointFuelPoint(); fuelpoint.Id = Convert.ToString(id); fuelpoint.ComChannelId = comChannelId; fuelpoint.InternalAddress = Convert.ToString(internalAddress); fuelpoint.IPAddress = IPAddress; fuelpoint.IPPort = Convert.ToString(IPPort); fuelpoint.PhysicalAddress = Convert.ToString(physicalAddress); fuelpoint.PumpType = Convert.ToString(pumpType); ServiceRequestDefFuelPoint.DefFuelPointFuelPoint[] fuelpointArray = POSDataElem.FuelPoint; IFSFManager.ArrayResize(ref fuelpointArray, (fuelpointArray != null) ? fuelpointArray.Length + 1 : 1); fuelpointArray[fuelpointArray.Length - 1] = fuelpoint; POSDataElem.FuelPoint = fuelpointArray; } DebugLog("AddFuelPoint end"); return true; } catch (Exception ex) { DebugLog("AddFuelPoint Exception! " + ex.ToString()); } return false; } public bool AddFuelPoint(int id, int pumpProtocol, int pumpType, string comChannelId, string IPAddress, int IPPort, int baudRate, int physicalAddress, int internalAddress) { try { DebugLog("AddFuelPoint init"); ServiceRequestDefFuelPoints SvRes = null; string key = "DefFuelPoints"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuelPoints)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefFuelPoints(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefFuelPoints") { DebugLog(string.Format("SvRes.RequestType={0} != DefFuelPoints", SvRes.RequestType)); return false; } } ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints[] POSDataArray = null; POSDataElem = new ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint fuelpoint = null; if (POSDataElem.FuelPoint != null) { foreach (ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint fuelpointTemp in POSDataElem.FuelPoint) if (fuelpointTemp.Id == Convert.ToString(id)) fuelpoint = fuelpointTemp; } if (fuelpoint == null && id > 0) { fuelpoint = new ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint(); fuelpoint.Id = Convert.ToString(id); fuelpoint.PumpProtocol = Convert.ToString(pumpProtocol); fuelpoint.PumpType = Convert.ToString(pumpType); fuelpoint.ComChannelId = comChannelId; fuelpoint.IPAddress = IPAddress; fuelpoint.IPPort = Convert.ToString(IPPort); fuelpoint.BaudRate = Convert.ToString(baudRate); fuelpoint.PhysicalAddress = Convert.ToString(physicalAddress); fuelpoint.InternalAddress = Convert.ToString(internalAddress); ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint[] fuelpointArray = POSDataElem.FuelPoint; IFSFManager.ArrayResize(ref fuelpointArray, (fuelpointArray != null) ? fuelpointArray.Length + 1 : 1); fuelpointArray[fuelpointArray.Length - 1] = fuelpoint; POSDataElem.FuelPoint = fuelpointArray; } DebugLog("AddFuelPoint end"); return true; } catch (Exception ex) { DebugLog("AddFuelPoint Exception! " + ex.ToString()); } return false; } public bool AddNozzle(int pumpId, int nozzleId) { try { DebugLog("AddNozzle init"); ServiceRequestDefFuelPoint SvRes = null; string key = "DefFuelPoint"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuelPoint)(serviceRequestClientList[key]); if (SvRes == null) { DebugLog("RequestType DefFuelPoint NOT found!!! return FALSE"); return false; } ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint[] POSDataArray = null; POSDataElem = new ServiceRequestDefFuelPoint.ServiceRequestPOSdataDefFuelPoint(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefFuelPoint.DefFuelPointFuelPoint fuelpoint = null; if (POSDataElem.FuelPoint != null) { foreach (ServiceRequestDefFuelPoint.DefFuelPointFuelPoint fuelpointTemp in POSDataElem.FuelPoint) if (fuelpointTemp.Id == Convert.ToString(pumpId)) fuelpoint = fuelpointTemp; } if (fuelpoint == null && pumpId > 0) { DebugLog(string.Format("fuel point id={0} NOT found!!! return FALSE", pumpId)); return false; } else { ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle nozzle = null; if (fuelpoint.Nozzle != null) { foreach (ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle nozzleTemp in fuelpoint.Nozzle) if (nozzleTemp.Id == Convert.ToString(nozzleId)) nozzle = nozzleTemp; } if (nozzle == null) { nozzle = new ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle(); nozzle.Id = Convert.ToString(nozzleId); ServiceRequestDefFuelPoint.DefFuelPointFuelPointNozzle[] nozzleArray = fuelpoint.Nozzle; IFSFManager.ArrayResize(ref nozzleArray, (nozzleArray != null) ? nozzleArray.Length + 1 : 1); nozzleArray[nozzleArray.Length - 1] = nozzle; fuelpoint.Nozzle = nozzleArray; } } DebugLog("AddNozzle end"); return true; } catch (Exception ex) { DebugLog("AddNozzle Exception! " + ex.ToString()); } return false; } public bool AddNozzle(int pumpId, int nozzleId, int gradeId, string tankSuctionId) { return AddNozzle(pumpId, nozzleId, gradeId, tankSuctionId, null); } public bool AddNozzle(int pumpId, int nozzleId, int gradeId, string tankSuctionHighId, string tankSuctionLowId) { try { DebugLog("AddNozzle init"); ServiceRequestDefFuelPoints SvRes = null; string key = "DefFuelPoints"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuelPoints)(serviceRequestClientList[key]); if (SvRes == null) { DebugLog("RequestType DefFuelPoints NOT found!!! return FALSE"); return false; } ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints[] POSDataArray = null; POSDataElem = new ServiceRequestDefFuelPoints.ServiceRequestPOSdataDefFuelPoints(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; SvRes.POSdata = POSDataArray; } ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint fuelpoint = null; if (POSDataElem.FuelPoint != null) { foreach (ServiceRequestDefFuelPoints.DefFuelPointsFuelPoint fuelpointTemp in POSDataElem.FuelPoint) if (fuelpointTemp.Id == Convert.ToString(pumpId)) fuelpoint = fuelpointTemp; } if (fuelpoint == null && pumpId > 0) { DebugLog(string.Format("fuel point id={0} NOT found!!! return FALSE", pumpId)); return false; } else { ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle nozzle = null; if (fuelpoint.Nozzle != null) { foreach (ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle nozzleTemp in fuelpoint.Nozzle) if (nozzleTemp.Id == Convert.ToString(nozzleId)) nozzle = nozzleTemp; } if (nozzle == null) { nozzle = new ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle(); nozzle.Id = Convert.ToString(nozzleId); nozzle.GradeId = Convert.ToString(gradeId); nozzle.TankSuctionId = tankSuctionHighId; if (!string.IsNullOrEmpty(tankSuctionLowId)) nozzle.TankSuctionLowId = tankSuctionLowId; ServiceRequestDefFuelPoints.DefFuelPointsFuelPointNozzle[] nozzleArray = fuelpoint.Nozzle; IFSFManager.ArrayResize(ref nozzleArray, (nozzleArray != null) ? nozzleArray.Length + 1 : 1); nozzleArray[nozzleArray.Length - 1] = nozzle; fuelpoint.Nozzle = nozzleArray; } } DebugLog("AddNozzle end"); return true; } catch (Exception ex) { DebugLog("AddNozzle Exception! " + ex.ToString()); } return false; } public bool AddFuelPointsSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddFuelPointsSend init"); ServiceRequestDefFuelPoints SvRes = null; string key = "DefFuelPoints"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFuelPoints)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddFuelPointsSend end"); return true; } } catch (Exception ex) { DebugLog("AddFuelPointsSend Exception! " + ex.ToString()); } return false; } public void DefFuelPointsResp(int requestId, string sOverallResult, ServiceResponseDefFuelPoints sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefFuelPointsResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefFuelPointsResp Exception! " + ex.ToString()); } } #endregion #region Assign grades to nozzles public bool AssignGrade(int pumpId, int nozzleId, int gradeId) { try { DebugLog("AssignGrade init"); ServiceRequestAssignGrades SvRes = null; string key = "AssignGrades"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestAssignGrades)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestAssignGrades(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "AssignGrades") { DebugLog(string.Format("SvRes.RequestType={0} != AssignGrades", SvRes.RequestType)); return false; } } ServiceRequestAssignGrades.ServiceRequestPOSdataAssignGrades POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestAssignGrades.ServiceRequestPOSdataAssignGrades[] POSDataArray = null; POSDataElem = new ServiceRequestAssignGrades.ServiceRequestPOSdataAssignGrades(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestAssignGrades.AssignGradesFuelPoint gradeFP = null; if (POSDataElem.FuelPoint != null) { foreach (ServiceRequestAssignGrades.AssignGradesFuelPoint gradeFPTemp in POSDataElem.FuelPoint) if (gradeFPTemp.Id == Convert.ToString(pumpId)) gradeFP = gradeFPTemp; } if (gradeFP == null && pumpId > 0) { gradeFP = new ServiceRequestAssignGrades.AssignGradesFuelPoint(); gradeFP.Id = Convert.ToString(pumpId); ServiceRequestAssignGrades.AssignGradesFuelPoint[] gradeFPArray = POSDataElem.FuelPoint; IFSFManager.ArrayResize(ref gradeFPArray, (gradeFPArray != null) ? gradeFPArray.Length + 1 : 1); gradeFPArray[gradeFPArray.Length - 1] = gradeFP; POSDataElem.FuelPoint = gradeFPArray; } ServiceRequestAssignGrades.AssignGradesFuelPointNozzle gradeNozzle = null; if (gradeFP.Nozzle != null) { foreach (ServiceRequestAssignGrades.AssignGradesFuelPointNozzle gradeNozzleTemp in gradeFP.Nozzle) if (gradeNozzleTemp.Id == Convert.ToString(nozzleId)) gradeNozzle = gradeNozzleTemp; } if (gradeNozzle == null && nozzleId > 0) { gradeNozzle = new ServiceRequestAssignGrades.AssignGradesFuelPointNozzle(); gradeNozzle.Id = Convert.ToString(nozzleId); gradeNozzle.GradeId = Convert.ToString(gradeId); ServiceRequestAssignGrades.AssignGradesFuelPointNozzle[] gradeNozzleArray = gradeFP.Nozzle; IFSFManager.ArrayResize(ref gradeNozzleArray, (gradeNozzleArray != null) ? gradeNozzleArray.Length + 1 : 1); gradeNozzleArray[gradeNozzleArray.Length - 1] = gradeNozzle; gradeFP.Nozzle = gradeNozzleArray; } DebugLog("AssignGrade end"); return true; } catch (Exception ex) { DebugLog("AssignGrade Exception! " + ex.ToString()); } return false; } public bool AssignGradesSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AssignGradesSend init"); ServiceRequestAssignGrades SvRes = null; string key = "AssignGrades"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestAssignGrades)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AssignGradesSend end"); return true; } } catch (Exception ex) { DebugLog("AssignGradesSend Exception! " + ex.ToString()); } return false; } #endregion #region Assign meters to fuel points public bool AssignMeter(int pumpId, int gradeId, int meterId, int part) { try { DebugLog("AssignMeter init"); ServiceRequestAssignMeters SvRes = null; string key = "AssignMeters"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestAssignMeters)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestAssignMeters(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "AssignMeters") { DebugLog(string.Format("SvRes.RequestType={0} != AssignMeters", SvRes.RequestType)); return false; } } ServiceRequestAssignMeters.ServiceRequestPOSdataAssignMeters POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestAssignMeters.ServiceRequestPOSdataAssignMeters[] POSDataArray = null; POSDataElem = new ServiceRequestAssignMeters.ServiceRequestPOSdataAssignMeters(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestAssignMeters.AssignMetersFuelPoint meterFP = null; if (POSDataElem.FuelPoint != null) { foreach (ServiceRequestAssignMeters.AssignMetersFuelPoint meterFPTemp in POSDataElem.FuelPoint) if (meterFPTemp.Id == Convert.ToString(pumpId)) meterFP = meterFPTemp; } if (meterFP == null && pumpId > 0) { meterFP = new ServiceRequestAssignMeters.AssignMetersFuelPoint(); meterFP.Id = Convert.ToString(pumpId); ServiceRequestAssignMeters.AssignMetersFuelPoint[] meterFPArray = POSDataElem.FuelPoint; IFSFManager.ArrayResize(ref meterFPArray, (meterFPArray != null) ? meterFPArray.Length + 1 : 1); meterFPArray[meterFPArray.Length - 1] = meterFP; POSDataElem.FuelPoint = meterFPArray; } ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption gradeOption = null; if (meterFP.GradeOption != null) { foreach (ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption gradeOptionTemp in meterFP.GradeOption) if (gradeOptionTemp.Id == Convert.ToString(gradeId)) gradeOption = gradeOptionTemp; } if (gradeOption == null && gradeId > 0) { gradeOption = new ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption(); gradeOption.Id = Convert.ToString(gradeId); ServiceRequestAssignMeters.AssignMetersFuelPointGradeOption[] gradeOptionArray = meterFP.GradeOption; IFSFManager.ArrayResize(ref gradeOptionArray, (gradeOptionArray != null) ? gradeOptionArray.Length + 1 : 1); gradeOptionArray[gradeOptionArray.Length - 1] = gradeOption; meterFP.GradeOption = gradeOptionArray; } ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter gradeOptionMeter = null; if (gradeOption.Meter != null) { foreach (ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter gradeOptionMeterTemp in gradeOption.Meter) if (gradeOptionMeterTemp.Id == Convert.ToString(meterId)) gradeOptionMeter = gradeOptionMeterTemp; } if (gradeOptionMeter == null && meterId > 0) { gradeOptionMeter = new ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter(); gradeOptionMeter.Id = Convert.ToString(meterId); gradeOptionMeter.Part = Convert.ToString(part); ServiceRequestAssignMeters.AssignMetersFuelPointGradeOptionMeter[] gradeOptionMeterArray = gradeOption.Meter; IFSFManager.ArrayResize(ref gradeOptionMeterArray, (gradeOptionMeterArray != null) ? gradeOptionMeterArray.Length + 1 : 1); gradeOptionMeterArray[gradeOptionMeterArray.Length - 1] = gradeOptionMeter; gradeOption.Meter = gradeOptionMeterArray; } DebugLog("AssignMeter end"); return true; } catch (Exception ex) { DebugLog("AssignMeter Exception! " + ex.ToString()); } return false; } public bool AssignMetersSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AssignMetersSend init"); ServiceRequestAssignMeters SvRes = null; string key = "AssignMeters"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestAssignMeters)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AssignMetersSend end"); return true; } } catch (Exception ex) { DebugLog("AssignMetersSend Exception! " + ex.ToString()); } return false; } #endregion #region Assign tanks to fuel points public bool AssignTank(int pumpId, int meterId, int tankId) { try { DebugLog("AssignTank init"); ServiceRequestAssignTanks SvRes = null; string key = "AssignTanks"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestAssignTanks)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestAssignTanks(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "AssignTanks") { DebugLog(string.Format("SvRes.RequestType={0} != AssignTanks", SvRes.RequestType)); return false; } } ServiceRequestAssignTanks.ServiceRequestPOSdataAssignTanks POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestAssignTanks.ServiceRequestPOSdataAssignTanks[] POSDataArray = null; POSDataElem = new ServiceRequestAssignTanks.ServiceRequestPOSdataAssignTanks(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestAssignTanks.AssignTanksFuelPoint tankFP = null; if (POSDataElem.FuelPoint != null) { foreach (ServiceRequestAssignTanks.AssignTanksFuelPoint tankFPTemp in POSDataElem.FuelPoint) if (tankFPTemp.Id == Convert.ToString(pumpId)) tankFP = tankFPTemp; } if (tankFP == null && pumpId > 0) { tankFP = new ServiceRequestAssignTanks.AssignTanksFuelPoint(); tankFP.Id = Convert.ToString(pumpId); ServiceRequestAssignTanks.AssignTanksFuelPoint[] tankFPArray = POSDataElem.FuelPoint; IFSFManager.ArrayResize(ref tankFPArray, (tankFPArray != null) ? tankFPArray.Length + 1 : 1); tankFPArray[tankFPArray.Length - 1] = tankFP; POSDataElem.FuelPoint = tankFPArray; } ServiceRequestAssignTanks.AssignTanksFuelPointMeter tankMeter = null; if (tankFP.Meter != null) { foreach (ServiceRequestAssignTanks.AssignTanksFuelPointMeter tankMeterTemp in tankFP.Meter) if (tankMeterTemp.Id == Convert.ToString(meterId)) tankMeter = tankMeterTemp; } if (tankMeter == null && meterId > 0) { tankMeter = new ServiceRequestAssignTanks.AssignTanksFuelPointMeter(); tankMeter.Id = Convert.ToString(meterId); tankMeter.Tank = Convert.ToString(tankId); ServiceRequestAssignTanks.AssignTanksFuelPointMeter[] tankMeterArray = tankFP.Meter; IFSFManager.ArrayResize(ref tankMeterArray, (tankMeterArray != null) ? tankMeterArray.Length + 1 : 1); tankMeterArray[tankMeterArray.Length - 1] = tankMeter; tankFP.Meter = tankMeterArray; } DebugLog("AssignTank end"); return true; } catch (Exception ex) { DebugLog("AssignTank Exception! " + ex.ToString()); } return false; } public bool AssignTanksSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AssignTanksSend init"); ServiceRequestAssignTanks SvRes = null; string key = "AssignTanks"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestAssignTanks)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AssignTanksSend end"); return true; } } catch (Exception ex) { DebugLog("AssignTanksSend Exception! " + ex.ToString()); } return false; } #endregion #region Price poles public bool AddPricePole(string id, int type, int physicalAddress, int internalAddress, string COMPort, int refreshTime) { try { DebugLog(string.Format("AddPricePole init: id={0}, type={1}, physicalAddress={2}, internalAddress={3}, COMPort={4}, refreshTime={5}", id, type, physicalAddress, internalAddress, COMPort, refreshTime)); ServiceRequestDefPricePole SvRes = null; string key = "DefPricePole"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefPricePole)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefPricePole(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefPricePole" && SvRes.RequestType != "DefPricePoles") { DebugLog(string.Format("SvRes.RequestType={0} != DefPricePole", SvRes.RequestType)); return false; } } ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole[] POSDataArray = null; POSDataElem = new ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefPricePole.DefPricePolePricePole pricePole = null; if (POSDataElem.PricePole != null) { foreach (ServiceRequestDefPricePole.DefPricePolePricePole pricePoleTemp in POSDataElem.PricePole) if (pricePoleTemp.Id == Convert.ToString(id)) pricePole = pricePoleTemp; } if (pricePole == null && !string.IsNullOrEmpty(id)) { pricePole = new ServiceRequestDefPricePole.DefPricePolePricePole(); pricePole.Id = id; pricePole.Type = Convert.ToString(type); if (FDCGlobal.ConfigVersion == FDCConfigVersion.V0100) pricePole.COMPort = COMPort; else pricePole.ComChannelId = COMPort; pricePole.PhysicalAddress = Convert.ToString(physicalAddress); pricePole.InternalAddress = Convert.ToString(internalAddress); pricePole.RefreshTime = Convert.ToString(refreshTime); ServiceRequestDefPricePole.DefPricePolePricePole[] pricePoleArray = POSDataElem.PricePole; IFSFManager.ArrayResize(ref pricePoleArray, (pricePoleArray != null) ? pricePoleArray.Length + 1 : 1); pricePoleArray[pricePoleArray.Length - 1] = pricePole; POSDataElem.PricePole = pricePoleArray; } DebugLog("AddPricePole end"); return true; } catch (Exception ex) { DebugLog("AddPricePole Exception! " + ex.ToString()); } return false; } public bool AddPricePoleRow(string id, int gradeId, int fuelMode, int position) { try { DebugLog(string.Format("AddPricePoleRow init: pricePoleId={0}, gradeId={1}, fuelMode={2}, position={3}", id, gradeId, fuelMode, position)); ServiceRequestDefPricePole SvRes = null; string key = "DefPricePole"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefPricePole)(serviceRequestClientList[key]); if (SvRes == null) { DebugLog("RequestType DefPricePole NOT found!!! return FALSE"); return false; } ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole[] POSDataArray = null; POSDataElem = new ServiceRequestDefPricePole.ServiceRequestPOSdataDefPricePole(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; SvRes.POSdata = POSDataArray; } ServiceRequestDefPricePole.DefPricePolePricePole pricePole = null; if (POSDataElem.PricePole != null) { foreach (ServiceRequestDefPricePole.DefPricePolePricePole pricePoleTemp in POSDataElem.PricePole) if (pricePoleTemp.Id == id) pricePole = pricePoleTemp; } if (pricePole == null) { DebugLog(string.Format("PricePole id={0} NOT found!!! return FALSE", id)); return false; } else { ServiceRequestDefPricePole.DefPricePolePricePoleGrade grade = null; if (pricePole.Grade != null) { foreach (ServiceRequestDefPricePole.DefPricePolePricePoleGrade gradeTemp in pricePole.Grade) if (gradeTemp.Position == Convert.ToString(position)) grade = gradeTemp; } if (grade == null) { grade = new ServiceRequestDefPricePole.DefPricePolePricePoleGrade(); grade.Id = Convert.ToString(gradeId); grade.FuelMode = Convert.ToString(fuelMode); grade.Position = Convert.ToString(position); ServiceRequestDefPricePole.DefPricePolePricePoleGrade[] gradeArray = pricePole.Grade; IFSFManager.ArrayResize(ref gradeArray, (gradeArray != null) ? gradeArray.Length + 1 : 1); gradeArray[gradeArray.Length - 1] = grade; pricePole.Grade = gradeArray; } } DebugLog("AddPricePoleRow end"); return true; } catch (Exception ex) { DebugLog("AddPricePoleRow Exception! " + ex.ToString()); } return false; } public bool AddPricePoleSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddPricePoleSend init"); ServiceRequestDefPricePole SvRes = null; string key = "DefPricePole"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefPricePole)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddPricePoleSend end"); return true; } } catch (Exception ex) { DebugLog("AddPricePoleSend Exception! " + ex.ToString()); } return false; } public void DefPricePoleResp(int requestId, string sOverallResult, ServiceResponseDefPricePole sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefPricePoleResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefPricePoleResp Exception! " + ex.ToString()); } } #endregion #region Price sets public bool LoadPriceset(int id, int gradeId, double price) { return false; } public bool LoadPricesetSend(EventHandler requestCompleted, object userToken, object src) { return false; } #endregion #region Tank monitors public bool AddTankMonitor(int id, int type, string COMPort, int timeBetweenRead, int sendTransactions, int messageSentUnsolicited, int deliverySource) { try { DebugLog(string.Format("AddTankMonitor init: id={0}, type={1}, COMPort={2}, timeBetweenRead={3}, sendTransactions={4}, messageSentUnsolicited={5}, deliverySource={6}", id, type, COMPort, timeBetweenRead, sendTransactions, messageSentUnsolicited, deliverySource)); ServiceRequestDefTankMonitor SvRes = null; string key = "DefTankMonitor"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefTankMonitor)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefTankMonitor(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefTankMonitor" && SvRes.RequestType != "DefTankMonitors") { DebugLog(string.Format("SvRes.RequestType={0} != DefTankMonitor", SvRes.RequestType)); return false; } } ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor[] POSDataArray = null; POSDataElem = new ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor tankMonitor = null; if (POSDataElem.TankMonitor != null) { foreach (ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor tankMonitorTemp in POSDataElem.TankMonitor) if (tankMonitorTemp.Id == Convert.ToString(id)) tankMonitor = tankMonitorTemp; } if (tankMonitor == null && id > 0) { tankMonitor = new ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor(); tankMonitor.Id = Convert.ToString(id); tankMonitor.Type = Convert.ToString(type); if (FDCGlobal.ConfigVersion == FDCConfigVersion.V0100) tankMonitor.COMPort = COMPort; else tankMonitor.ComChannelId = COMPort; tankMonitor.TimeBetweenRead = Convert.ToString(timeBetweenRead); tankMonitor.SendTransactions = Convert.ToString(sendTransactions); tankMonitor.MessageSentUnsolicited = Convert.ToString(messageSentUnsolicited); if (FDCGlobal.ConfigVersion == FDCConfigVersion.V0200 && deliverySource <= 2) tankMonitor.DeliverySource = Convert.ToString(deliverySource); ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor[] tankMonitorArray = POSDataElem.TankMonitor; IFSFManager.ArrayResize(ref tankMonitorArray, (tankMonitorArray != null) ? tankMonitorArray.Length + 1 : 1); tankMonitorArray[tankMonitorArray.Length - 1] = tankMonitor; POSDataElem.TankMonitor = tankMonitorArray; } DebugLog("AddTankMonitor end"); return true; } catch (Exception ex) { DebugLog("AddTankMonitor Exception! " + ex.ToString()); } return false; } public bool AddTankProbe(int tankMonitorId, string probeSN, int tankId, double floatOffset, double minimumHeight, int boardNumber, int connector) { try { DebugLog(string.Format("AddTankProbe init: tankMonitorId={0}, probeSN={1}, tankId={2}, boardNumber={3}, connector={4}", tankMonitorId, probeSN, tankId, boardNumber, connector)); ServiceRequestDefTankMonitor SvRes = null; string key = "DefTankMonitor"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefTankMonitor)(serviceRequestClientList[key]); if (SvRes == null) { DebugLog("RequestType DefTankMonitor NOT found!!! return FALSE"); return false; } ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor[] POSDataArray = null; POSDataElem = new ServiceRequestDefTankMonitor.ServiceRequestPOSdataDefTankMonitor(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor tankMonitor = null; if (POSDataElem.TankMonitor != null) { foreach (ServiceRequestDefTankMonitor.DefTankMonitorTankMonitor tankMonitorTemp in POSDataElem.TankMonitor) if (tankMonitorTemp.Id == Convert.ToString(tankMonitorId)) tankMonitor = tankMonitorTemp; } if (tankMonitor == null) { DebugLog(string.Format("TankMonitor id={0} NOT found!!! return FALSE", tankMonitorId)); return false; } else { ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe probe = null; if (tankMonitor.Probe != null) { foreach (ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe probeTemp in tankMonitor.Probe) if (probeTemp.Id == probeSN) probe = probeTemp; } if (probe == null) { probe = new ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe(); probe.Id = probeSN; probe.TankId = Convert.ToString(tankId); probe.FloatOffset = FDCConvert.ToString(floatOffset); probe.MinimumHeight = FDCConvert.ToString(minimumHeight); probe.BoardNumber = Convert.ToString(boardNumber); probe.Connector = Convert.ToString(connector); ServiceRequestDefTankMonitor.DefTankMonitorTankMonitorProbe[] probeArray = tankMonitor.Probe; IFSFManager.ArrayResize(ref probeArray, (probeArray != null) ? probeArray.Length + 1 : 1); probeArray[probeArray.Length - 1] = probe; tankMonitor.Probe = probeArray; } } DebugLog("AddTankProbe end"); return true; } catch (Exception ex) { DebugLog("AddTankProbe Exception! " + ex.ToString()); } return false; } public bool AddTankMonitorSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddTankMonitorSend init"); ServiceRequestDefTankMonitor SvRes = null; string key = "DefTankMonitor"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefTankMonitor)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddTankMonitorSend end"); return true; } } catch (Exception ex) { DebugLog("AddTankMonitorSend Exception! " + ex.ToString()); } return false; } public void DefTankMonitorResp(int requestId, string sOverallResult, ServiceResponseDefTankMonitor sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefTankMonitorResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefTankMonitorResp Exception! " + ex.ToString()); } } #endregion #region Fuel opration modes public bool AddFPOperationsMode(int id, string name) { try { DebugLog(string.Format("AddFPOperationsMode init: id={0}", id)); ServiceRequestDefFPOperationModes SvRes = null; string key = "DefFPOperationModes"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFPOperationModes)(serviceRequestClientList[key]); if (SvRes == null) { SvRes = new ServiceRequestDefFPOperationModes(); SvRes.WorkstationID = this.clientSocket.workstationID; SvRes.ApplicationSender = this.clientSocket.applicationSender; serviceRequestClientList.Add(key, SvRes); } else { if (SvRes.RequestType != "DefFPOperationModes") { DebugLog(string.Format("SvRes.RequestType={0} != DefFPOperationModes", SvRes.RequestType)); return false; } } ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes[] POSDataArray = null; POSDataElem = new ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefFPOperationModes.DefFPOperationModesMode operationMode = null; if (POSDataElem.OperationMode != null) { foreach (ServiceRequestDefFPOperationModes.DefFPOperationModesMode operationModeTemp in POSDataElem.OperationMode) if (operationModeTemp.Id == Convert.ToString(id)) operationMode = operationModeTemp; } if (operationMode == null) { operationMode = new ServiceRequestDefFPOperationModes.DefFPOperationModesMode(); operationMode.Id = Convert.ToString(id); operationMode.Name = name; ServiceRequestDefFPOperationModes.DefFPOperationModesMode[] operationModeArray = POSDataElem.OperationMode; IFSFManager.ArrayResize(ref operationModeArray, (operationModeArray != null) ? operationModeArray.Length + 1 : 1); operationModeArray[operationModeArray.Length - 1] = operationMode; POSDataElem.OperationMode = operationModeArray; } DebugLog("AddFPOperationsMode end"); return true; } catch (Exception ex) { DebugLog("AddFPOperationsMode Exception! " + ex.ToString()); } return false; } public bool AddFPOperationsModeGrade(int modeId, int gradeId, int volume) { try { DebugLog(string.Format("AddFPOperationsModeGrade init: modeId={0}, gradeId={1}, maxVolume={2}", modeId, gradeId, volume)); ServiceRequestDefFPOperationModes SvRes = null; string key = "DefFPOperationModes"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFPOperationModes)(serviceRequestClientList[key]); if (SvRes == null) { DebugLog("RequestType DefFPOperationModes NOT found!!! return FALSE"); return false; } ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes POSDataElem = null; if (SvRes.POSdata != null) POSDataElem = SvRes.POSdata[0]; else { ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes[] POSDataArray = null; POSDataElem = new ServiceRequestDefFPOperationModes.ServiceRequestPOSdataDefFPOperationModes(); IFSFManager.ArrayResize(ref POSDataArray, (POSDataArray != null) ? POSDataArray.Length + 1 : 1); POSDataArray[POSDataArray.Length - 1] = POSDataElem; POSDataElem.POSTimeStamp = FDCConvert.ToString(DateTime.Now); SvRes.POSdata = POSDataArray; } ServiceRequestDefFPOperationModes.DefFPOperationModesMode operationMode = null; if (POSDataElem.OperationMode != null) { foreach (ServiceRequestDefFPOperationModes.DefFPOperationModesMode operationModeTemp in POSDataElem.OperationMode) if (operationModeTemp.Id == Convert.ToString(modeId)) operationMode = operationModeTemp; } if (operationMode == null) { DebugLog(string.Format("OperationMode id={0} NOT found!!! return FALSE", modeId)); return false; } else { ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade grade = null; if (operationMode.Grade != null) { foreach (ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade gradeTemp in operationMode.Grade) if (gradeTemp.Id == Convert.ToString(gradeId)) grade = gradeTemp; } if (grade == null) { grade = new ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade(); grade.Id = Convert.ToString(gradeId); grade.MaxVolume = Convert.ToString(volume); ServiceRequestDefFPOperationModes.DefFPOperationModesModeGrade[] gradeArray = operationMode.Grade; IFSFManager.ArrayResize(ref gradeArray, (gradeArray != null) ? gradeArray.Length + 1 : 1); gradeArray[gradeArray.Length - 1] = grade; operationMode.Grade = gradeArray; } DebugLog("AddFPOperationsModeGrade end"); return true; } } catch (Exception ex) { DebugLog("AddFPOperationsModeGrade Exception! " + ex.ToString()); } return false; } public bool AddFPOperationModesSend(EventHandler requestCompleted, object userToken, object src) { try { DebugLog("AddFPOperationModesSend init"); ServiceRequestDefFPOperationModes SvRes = null; string key = "DefFPOperationModes"; if (serviceRequestClientList.ContainsKey(key)) SvRes = (ServiceRequestDefFPOperationModes)(serviceRequestClientList[key]); if (SvRes != null) { clientSocket.ifsfMessages.EnqueueMessage(SvRes, requestCompleted, userToken, src, true, 30000); serviceRequestClientList.Remove(key); DebugLog("AddFPOperationModesSend end"); return true; } } catch (Exception ex) { DebugLog("AddFPOperationModesSend Exception! " + ex.ToString()); } return false; } public void DefFPOperationModesResp(int requestId, string sOverallResult, ServiceResponseDefFPOperationModes sr) { try { string errorCode = sr.FDCdata[0].FDCStatus; DebugLog(string.Format("DefFuelModesResp errorCode={0}", errorCode)); clientSocket.ifsfMessages.asyncResponseManager.SendResponse(requestId, errorCode == ErrorCode.ERRCD_OK.ToString() && sOverallResult == FDCPOSLibrary.OverallResult.Success.ToString()); } catch (Exception ex) { DebugLog("DefFuelModesResp Exception! " + ex.ToString()); } } #endregion } }