using Edge.Core.Processor;using Edge.Core.IndustryStandardInterface.Pump; using NozzleLockConfiguration; using SinochemInternetPlusApp; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using WayneChina_IcCardReader_SinoChem; namespace Dfs.WayneChina.SinochemEps { public class SinochemEpsApp : IAppProcessor { #region Fields public string MetaConfigName { get; set; } private string epsType; //The pump processors private IEnumerable processors; // //From SinochemInternetPlus // public static string PosDatabaseConnString { get; set; } public static string PumpSideMapping { get; set; } public static string ForceMappingFusionHoseToHuiTianHoseStr { get; set; } public static string RawProductNameToPosProductNameStr { get; set; } public readonly static Dictionary AppSettings = new Dictionary(); private Eps eps; #endregion #region Logger static NLog.Logger logger = NLog.LogManager.LoadConfiguration("nlog.config").GetLogger("SinochemEpsApp"); #endregion #region Constructor public SinochemEpsApp(string epsType, string pumpSideMappingStr, string forceMappingFusionHoseToHuiTianHoseStr, string rawProductNameToPosProductNameStr, string posDatabaseConnStr, string sinochemSiteId, string sinochemSiteName, string sinochemCloudUrlPrefix, string sinochemCloudBalanceApi, string sinochemCloudPaymentApi, string sinochemCloudTrxStatusApi, string sinochemCloudRefundApi, string sinochemPosUrlPrefix, string sinochemPosNotifyApi, string gradeNameToGradeNo, int __FP_Idle, int __FP_Shared_AuthorizePump, int __FP_Shared_WaitForPayableTrx, int __FP_Shared_NotifyPOS, int __FP_Shared_PayTrx, int __FP_Shared_WaitForFueling, int __FP_CarPlateMode_CalculateMAC, int __FP_CarPlateMode_DisableICCardReader, int __FP_CarPlateMode_Error, int __FP_CarPlateMode_OpenCardReader, int __FP_CarPlateMode_SendPaymentResult, int __FP_CarPlateMode_SendTrxDoneToCardReader, int __FP_CarPlateMode_SendTrxListFillingPaid, int __FP_CarPlateMode_SendWelcomeScreen, int __FP_CarPlateMode_ShowTrxListFueling, int __FP_CarPlateMode_ShowTrxListPendingFueling, int __FP_CarPlateMode_ShowTrxListReadyForPay, int __FP_CarPlateMode_WaitForCardReaderBackToIdle, int __FP_ICCardMode_AbortTransaction, int __FP_ICCardMode_CheckCardBalance, int __FP_ICCardMode_HandleExternalCheckFailure, int __FP_ICCardMode_HandleUserTimeout, int __FP_ICCardMode_SendCalculateMacRequest, int __FP_ICCardMode_SendCardBalanceToCardReader, int __FP_ICCardMode_SendPaymentResult, int __FP_ICCardMode_SendTrxDoneToCardReader, int __FP_ICCardMode_WaitForCardData, int __FP_ICCardMode_WaitForCardEject, int __FP_ICCardMode_WaitForMacData, int __ETC_WaitForWork, int __Misc_BigScreenBackToIdle, int NeedConfirmEpsTrxExpirationInMinutes, int AlreadyDoneEpsTrxCountPerDisplay, string ListOfFuelingPoints, string AssociatedNozzlesForFuelingPoints, string SupportMultiFusions, int ResendPosNotifyExpirationInMinutes, int EpsTrxHistoryArchiveInDays, int ICCardPaymentResultDisplayTimeoutInSeconds, string PrintReceiptEnabled, string PrintQrCodeOnReceiptEnabled) { this.epsType = epsType; PosDatabaseConnString = posDatabaseConnStr; PumpSideMapping = pumpSideMappingStr; ForceMappingFusionHoseToHuiTianHoseStr = forceMappingFusionHoseToHuiTianHoseStr; RawProductNameToPosProductNameStr = rawProductNameToPosProductNameStr; NozzleLockAccessor.Init(posDatabaseConnStr); AppSettings.Add("SinochemSiteId", sinochemSiteId); AppSettings.Add("SinochemSiteName", sinochemSiteName); AppSettings.Add("SinochemCloudUrlPrefix", sinochemCloudUrlPrefix); AppSettings.Add("SinochemCloudBalanceApi", sinochemCloudBalanceApi); AppSettings.Add("SinochemCloudPaymentApi", sinochemCloudPaymentApi); AppSettings.Add("SinochemCloudTrxStatusApi", sinochemCloudTrxStatusApi); AppSettings.Add("SinochemCloudRefundApi", sinochemCloudRefundApi); AppSettings.Add("SinochemPosUrlPrefix", sinochemPosUrlPrefix); AppSettings.Add("SinochemPosNotifyApi", sinochemPosNotifyApi); AppSettings.Add("GradeNameToGradeNo", gradeNameToGradeNo); //State time out values. AppSettings.Add("__FP_Idle", Convert.ToString(__FP_Idle)); AppSettings.Add("__FP_Shared_AuthorizePump", Convert.ToString(__FP_Shared_AuthorizePump)); AppSettings.Add("__FP_Shared_WaitForPayableTrx", Convert.ToString(__FP_Shared_WaitForPayableTrx)); AppSettings.Add("__FP_Shared_NotifyPOS", Convert.ToString(__FP_Shared_NotifyPOS)); AppSettings.Add("__FP_Shared_PayTrx", Convert.ToString(__FP_Shared_PayTrx)); AppSettings.Add("__FP_Shared_WaitForFueling", Convert.ToString(__FP_Shared_WaitForFueling)); AppSettings.Add("__FP_CarPlateMode_CalculateMAC", Convert.ToString(__FP_CarPlateMode_CalculateMAC)); AppSettings.Add("__FP_CarPlateMode_DisableICCardReader", Convert.ToString(__FP_CarPlateMode_DisableICCardReader)); AppSettings.Add("__FP_CarPlateMode_Error", Convert.ToString(__FP_CarPlateMode_Error)); AppSettings.Add("__FP_CarPlateMode_OpenCardReader", Convert.ToString(__FP_CarPlateMode_OpenCardReader)); AppSettings.Add("__FP_CarPlateMode_SendPaymentResult", Convert.ToString(__FP_CarPlateMode_SendPaymentResult)); AppSettings.Add("__FP_CarPlateMode_SendTrxDoneToCardReader", Convert.ToString(__FP_CarPlateMode_SendTrxDoneToCardReader)); AppSettings.Add("__FP_CarPlateMode_SendTrxListFillingPaid", Convert.ToString(__FP_CarPlateMode_SendTrxListFillingPaid)); AppSettings.Add("__FP_CarPlateMode_SendWelcomeScreen", Convert.ToString(__FP_CarPlateMode_SendWelcomeScreen)); AppSettings.Add("__FP_CarPlateMode_ShowTrxListFueling", Convert.ToString(__FP_CarPlateMode_ShowTrxListFueling)); AppSettings.Add("__FP_CarPlateMode_ShowTrxListPendingFueling", Convert.ToString(__FP_CarPlateMode_ShowTrxListPendingFueling)); AppSettings.Add("__FP_CarPlateMode_ShowTrxListReadyForPay", Convert.ToString(__FP_CarPlateMode_ShowTrxListReadyForPay)); AppSettings.Add("__FP_CarPlateMode_WaitForCardReaderBackToIdle", Convert.ToString(__FP_CarPlateMode_WaitForCardReaderBackToIdle)); AppSettings.Add("__FP_ICCardMode_AbortTransaction", Convert.ToString(__FP_ICCardMode_AbortTransaction)); AppSettings.Add("__FP_ICCardMode_CheckCardBalance", Convert.ToString(__FP_ICCardMode_CheckCardBalance)); AppSettings.Add("__FP_ICCardMode_HandleExternalCheckFailure", Convert.ToString(__FP_ICCardMode_HandleExternalCheckFailure)); AppSettings.Add("__FP_ICCardMode_HandleUserTimeout", Convert.ToString(__FP_ICCardMode_HandleUserTimeout)); AppSettings.Add("__FP_ICCardMode_SendCalculateMacRequest", Convert.ToString(__FP_ICCardMode_SendCalculateMacRequest)); AppSettings.Add("__FP_ICCardMode_SendCardBalanceToCardReader", Convert.ToString(__FP_ICCardMode_SendCardBalanceToCardReader)); AppSettings.Add("__FP_ICCardMode_SendPaymentResult", Convert.ToString(__FP_ICCardMode_SendPaymentResult)); AppSettings.Add("__FP_ICCardMode_SendTrxDoneToCardReader", Convert.ToString(__FP_ICCardMode_SendTrxDoneToCardReader)); AppSettings.Add("__FP_ICCardMode_WaitForCardData", Convert.ToString(__FP_ICCardMode_WaitForCardData)); AppSettings.Add("__FP_ICCardMode_WaitForCardEject", Convert.ToString(__FP_ICCardMode_WaitForCardEject)); AppSettings.Add("__FP_ICCardMode_WaitForMacData", Convert.ToString(__FP_ICCardMode_WaitForMacData)); AppSettings.Add("__ETC_WaitForWork", Convert.ToString(__ETC_WaitForWork)); AppSettings.Add("__Misc_BigScreenBackToIdle", Convert.ToString(__Misc_BigScreenBackToIdle)); AppSettings.Add("NeedConfirmEpsTrxExpirationInMinutes", Convert.ToString(NeedConfirmEpsTrxExpirationInMinutes)); AppSettings.Add("AlreadyDoneEpsTrxCountPerDisplay", Convert.ToString(AlreadyDoneEpsTrxCountPerDisplay)); AppSettings.Add("ListOfFuelingPoints", ListOfFuelingPoints); AppSettings.Add("AssociatedNozzlesForFuelingPoints", AssociatedNozzlesForFuelingPoints); AppSettings.Add("SupportMultiFusions", SupportMultiFusions); AppSettings.Add("ResendPosNotifyExpirationInMinutes", Convert.ToString(ResendPosNotifyExpirationInMinutes)); AppSettings.Add("EpsTrxHistoryArchiveInDays", Convert.ToString(EpsTrxHistoryArchiveInDays)); AppSettings.Add("ICCardPaymentResultDisplayTimeoutInSeconds", Convert.ToString(ICCardPaymentResultDisplayTimeoutInSeconds)); AppSettings.Add("PrintReceiptEnabled", PrintReceiptEnabled); AppSettings.Add("PrintQrCodeOnReceiptEnabled", PrintQrCodeOnReceiptEnabled); } #endregion #region IApplication implementation public void Init(IEnumerable processors) { this.processors = processors; } public Task Start() { Wayne.Lib.Log.Logger.SetConfigFile("SinochemAppLogConfig.xml", "SinochemEventLogConfig.xml"); Wayne.Lib.Log.Logger.RefreshConfig(); eps = new Eps(ConfigurationValues.ListOfFuelingPoints, ConfigurationValues.FuelingPointNozzlesDict, this.processors); eps.Run(); return Task.FromResult(true); } public Task Stop() { if (eps != null) { eps.Shutdown(); eps.Dispose(); } Wayne.Lib.Log.Logger.Close(); return Task.FromResult(true); } #endregion } }