123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- using Edge.Core.Processor;using Edge.Core.IndustryStandardInterface.Pump;
- using SinoChemFC2PosProxy;
- using SinoChemFC2PosProxy.Communicator;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace SinochemInternetPlusApp
- {
- public class App : IAppProcessor
- {
- public string MetaConfigName { get; set; }
- static NLog.Logger logger = NLog.LogManager.LoadConfiguration("nlog.config").GetLogger("Application");
- public static string PosDatabaseConnString { get; set; }
- public readonly static Dictionary<string, string> AppSettings = new Dictionary<string, string>();
- private Eps eps;
- /// <summary>
- /// fdc pump handler is the entry for manage pumps.
- /// </summary>
- private List<IFdcPumpController> fdcPumpControllers = new List<IFdcPumpController>();
- private IEnumerable<IProcessor> processors = null;
- public App(string SinochemSiteId, string SinochemSiteName,
- string SinochemCloudUrlPrefix, string SinochemCloudBalanceApi,
- string SinochemCloudPaymentApi, string SinochemCloudTrxStatusApi,
- string SinochemCloudRefundApi, string SinochemPosUrlPrefix,
- string SinochemPosNotifyApi,
- 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,
- string PosDatabaseConnString,
- string PumpSideMapping)
- {
- 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("__FP_Idle", __FP_Idle.ToString()); AppSettings.Add("__FP_Shared_AuthorizePump", __FP_Shared_AuthorizePump.ToString()); AppSettings.Add("__FP_Shared_WaitForPayableTrx", __FP_Shared_WaitForPayableTrx.ToString());
- AppSettings.Add("__FP_Shared_NotifyPOS", __FP_Shared_NotifyPOS.ToString()); AppSettings.Add("__FP_Shared_PayTrx", __FP_Shared_PayTrx.ToString()); AppSettings.Add("__FP_Shared_WaitForFueling", __FP_Shared_WaitForFueling.ToString());
- AppSettings.Add("__FP_CarPlateMode_CalculateMAC", __FP_CarPlateMode_CalculateMAC.ToString()); AppSettings.Add("__FP_CarPlateMode_DisableICCardReader", __FP_CarPlateMode_DisableICCardReader.ToString());
- AppSettings.Add("__FP_CarPlateMode_Error", __FP_CarPlateMode_Error.ToString()); AppSettings.Add("__FP_CarPlateMode_OpenCardReader", __FP_CarPlateMode_OpenCardReader.ToString());
- AppSettings.Add("__FP_CarPlateMode_SendPaymentResult", __FP_CarPlateMode_SendPaymentResult.ToString()); AppSettings.Add("__FP_CarPlateMode_SendTrxDoneToCardReader", __FP_CarPlateMode_SendTrxDoneToCardReader.ToString());
- AppSettings.Add("__FP_CarPlateMode_SendTrxListFillingPaid", __FP_CarPlateMode_SendTrxListFillingPaid.ToString()); AppSettings.Add("__FP_CarPlateMode_SendWelcomeScreen", __FP_CarPlateMode_SendWelcomeScreen.ToString());
- AppSettings.Add("__FP_CarPlateMode_ShowTrxListFueling", __FP_CarPlateMode_ShowTrxListFueling.ToString()); AppSettings.Add("__FP_CarPlateMode_ShowTrxListPendingFueling", __FP_CarPlateMode_ShowTrxListPendingFueling.ToString());
- AppSettings.Add("__FP_CarPlateMode_ShowTrxListReadyForPay", __FP_CarPlateMode_ShowTrxListReadyForPay.ToString()); AppSettings.Add("__FP_CarPlateMode_WaitForCardReaderBackToIdle", __FP_CarPlateMode_WaitForCardReaderBackToIdle.ToString());
- AppSettings.Add("__FP_ICCardMode_AbortTransaction", __FP_ICCardMode_AbortTransaction.ToString()); AppSettings.Add("__FP_ICCardMode_CheckCardBalance", __FP_ICCardMode_CheckCardBalance.ToString());
- AppSettings.Add("__FP_ICCardMode_HandleExternalCheckFailure", __FP_ICCardMode_HandleExternalCheckFailure.ToString()); AppSettings.Add("__FP_ICCardMode_HandleUserTimeout", __FP_ICCardMode_HandleUserTimeout.ToString());
- AppSettings.Add("__FP_ICCardMode_SendCalculateMacRequest", __FP_ICCardMode_SendCalculateMacRequest.ToString()); AppSettings.Add("__FP_ICCardMode_SendCardBalanceToCardReader", __FP_ICCardMode_SendCardBalanceToCardReader.ToString());
- AppSettings.Add("__FP_ICCardMode_SendPaymentResult", __FP_ICCardMode_SendPaymentResult.ToString()); AppSettings.Add("__FP_ICCardMode_SendTrxDoneToCardReader", __FP_ICCardMode_SendTrxDoneToCardReader.ToString());
- AppSettings.Add("__FP_ICCardMode_WaitForCardData", __FP_ICCardMode_WaitForCardData.ToString()); AppSettings.Add("__FP_ICCardMode_WaitForCardEject", __FP_ICCardMode_WaitForCardEject.ToString());
- AppSettings.Add("__FP_ICCardMode_WaitForMacData", __FP_ICCardMode_WaitForMacData.ToString());
- AppSettings.Add("__ETC_WaitForWork", __ETC_WaitForWork.ToString());
- AppSettings.Add("__Misc_BigScreenBackToIdle", __Misc_BigScreenBackToIdle.ToString());
- AppSettings.Add("NeedConfirmEpsTrxExpirationInMinutes", NeedConfirmEpsTrxExpirationInMinutes.ToString()); AppSettings.Add("AlreadyDoneEpsTrxCountPerDisplay", AlreadyDoneEpsTrxCountPerDisplay.ToString());
- AppSettings.Add("ListOfFuelingPoints", ListOfFuelingPoints); AppSettings.Add("AssociatedNozzlesForFuelingPoints", AssociatedNozzlesForFuelingPoints);
- AppSettings.Add("SupportMultiFusions", SupportMultiFusions); AppSettings.Add("ResendPosNotifyExpirationInMinutes", ResendPosNotifyExpirationInMinutes.ToString());
- AppSettings.Add("EpsTrxHistoryArchiveInDays", EpsTrxHistoryArchiveInDays.ToString()); AppSettings.Add("ICCardPaymentResultDisplayTimeoutInSeconds", ICCardPaymentResultDisplayTimeoutInSeconds.ToString());
- AppSettings.Add("PrintReceiptEnabled", PrintReceiptEnabled); AppSettings.Add("PrintQrCodeOnReceiptEnabled", PrintQrCodeOnReceiptEnabled);
- AppSettings.Add("PosDatabaseConnString", PosDatabaseConnString);
- AppSettings.Add("PumpSideMapping", PumpSideMapping);
- AppSettings.Add("forceMappingFusionHoseToHuiTianHose", null);
- App.PosDatabaseConnString = PosDatabaseConnString;
- }
-
- public void Dispose()
- {
- //throw new NotImplementedException();
- }
- public void Init(IEnumerable<IProcessor> processors)
- {
- this.processors = processors;
- foreach (dynamic p in processors)
- {
- if (p is IAppProcessor) continue;
- var handler = p.Context.Handler;
- if (handler is IFdcPumpController)
- this.fdcPumpControllers.Add(handler);
- else if (handler is IEnumerable<IFdcPumpController>)
- {
- //pumpControllers.AddRange(handler);
- foreach (var c in handler)
- {
- this.fdcPumpControllers.Add(c);
- }
- }
- }
- //Start();
- }
- public async Task<bool> Start()
- {
- //Wayne.Lib.Log.Logger.SetConfigFile("SinochemAppLogConfig.xml", "SinochemEventLogConfig.xml");
- //Wayne.Lib.Log.Logger.RefreshConfig();
- this.SetupPumpStatusToSinoChemPosDatabaseCommunicator(this.fdcPumpControllers);
- var carPlateProcessors =
- this.processors.OfType<Edge.Core.Processor.GenericDeviceProcessor<System.String, Edge.Core.Parser.HttpMessageParser.BaseHttpMessage<System.String>>>();
- var icCardReaderProcessors =
- processors.OfType<GenericDeviceProcessor<System.Byte[], WayneChina_IcCardReader_SinoChem.MessageEntity.IcCardReaderMessageBase>>();
- eps = new Eps(ConfigurationValues.ListOfFuelingPoints, ConfigurationValues.FuelingPointNozzlesDict,
- this.fdcPumpControllers, carPlateProcessors, icCardReaderProcessors);
- eps.Run();
- return true;
- }
- public async Task<bool> Stop()
- {
- if (eps != null)
- {
- eps.Shutdown();
- eps.Dispose();
- }
- return true;
- //Wayne.Lib.Log.Logger.Close();
- }
- private void SetupPumpStatusToSinoChemPosDatabaseCommunicator(IEnumerable<IFdcPumpController> pumpControllers)
- {
- var c = new SiteConfigScannerCommunicator(6000 * 60 * 5);
- var mustSucceed = c.Start();
- if (!mustSucceed)
- {
- logger.Error("Failed to init the site configuration, pls check log. Will quit...");
- }
- else
- {
- var init = new InitSiteCommunicator();
- init.Start();
- //var msgRouterComm = new MessageRouterCommunicator(msgRouterClient);
- //msgRouterComm.Start();
- var FdcComm = new FdcCommunicator();
- //FdcComm.Start();
- //var logPurge = new LogPurge();
- //logPurge.Start();
- logger.Info("SinoChemFC2PosProxy is on running...");
- }
- }
- }
- }
|