SinochemEpsApp.cs 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using Edge.Core.Processor;using Edge.Core.IndustryStandardInterface.Pump;
  2. using NozzleLockConfiguration;
  3. using SinochemInternetPlusApp;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using WayneChina_IcCardReader_SinoChem;
  9. namespace Dfs.WayneChina.SinochemEps
  10. {
  11. public class SinochemEpsApp : IAppProcessor
  12. {
  13. #region Fields
  14. public string MetaConfigName { get; set; }
  15. private string epsType;
  16. //The pump processors
  17. private IEnumerable<IProcessor> processors;
  18. //
  19. //From SinochemInternetPlus
  20. //
  21. public static string PosDatabaseConnString { get; set; }
  22. public static string PumpSideMapping { get; set; }
  23. public static string ForceMappingFusionHoseToHuiTianHoseStr { get; set; }
  24. public static string RawProductNameToPosProductNameStr { get; set; }
  25. public readonly static Dictionary<string, string> AppSettings = new Dictionary<string, string>();
  26. private Eps eps;
  27. #endregion
  28. #region Logger
  29. static NLog.Logger logger = NLog.LogManager.LoadConfiguration("nlog.config").GetLogger("SinochemEpsApp");
  30. #endregion
  31. #region Constructor
  32. public SinochemEpsApp(string epsType, string pumpSideMappingStr, string forceMappingFusionHoseToHuiTianHoseStr, string rawProductNameToPosProductNameStr,
  33. string posDatabaseConnStr, string sinochemSiteId, string sinochemSiteName, string sinochemCloudUrlPrefix,
  34. string sinochemCloudBalanceApi, string sinochemCloudPaymentApi, string sinochemCloudTrxStatusApi, string sinochemCloudRefundApi,
  35. string sinochemPosUrlPrefix, string sinochemPosNotifyApi, string gradeNameToGradeNo, int __FP_Idle, int __FP_Shared_AuthorizePump,
  36. int __FP_Shared_WaitForPayableTrx, int __FP_Shared_NotifyPOS, int __FP_Shared_PayTrx, int __FP_Shared_WaitForFueling,
  37. int __FP_CarPlateMode_CalculateMAC, int __FP_CarPlateMode_DisableICCardReader, int __FP_CarPlateMode_Error, int __FP_CarPlateMode_OpenCardReader,
  38. int __FP_CarPlateMode_SendPaymentResult, int __FP_CarPlateMode_SendTrxDoneToCardReader, int __FP_CarPlateMode_SendTrxListFillingPaid,
  39. int __FP_CarPlateMode_SendWelcomeScreen, int __FP_CarPlateMode_ShowTrxListFueling, int __FP_CarPlateMode_ShowTrxListPendingFueling,
  40. int __FP_CarPlateMode_ShowTrxListReadyForPay, int __FP_CarPlateMode_WaitForCardReaderBackToIdle, int __FP_ICCardMode_AbortTransaction,
  41. int __FP_ICCardMode_CheckCardBalance, int __FP_ICCardMode_HandleExternalCheckFailure, int __FP_ICCardMode_HandleUserTimeout,
  42. int __FP_ICCardMode_SendCalculateMacRequest, int __FP_ICCardMode_SendCardBalanceToCardReader, int __FP_ICCardMode_SendPaymentResult,
  43. int __FP_ICCardMode_SendTrxDoneToCardReader, int __FP_ICCardMode_WaitForCardData, int __FP_ICCardMode_WaitForCardEject,
  44. int __FP_ICCardMode_WaitForMacData, int __ETC_WaitForWork, int __Misc_BigScreenBackToIdle, int NeedConfirmEpsTrxExpirationInMinutes,
  45. int AlreadyDoneEpsTrxCountPerDisplay, string ListOfFuelingPoints, string AssociatedNozzlesForFuelingPoints, string SupportMultiFusions,
  46. int ResendPosNotifyExpirationInMinutes, int EpsTrxHistoryArchiveInDays, int ICCardPaymentResultDisplayTimeoutInSeconds,
  47. string PrintReceiptEnabled, string PrintQrCodeOnReceiptEnabled)
  48. {
  49. this.epsType = epsType;
  50. PosDatabaseConnString = posDatabaseConnStr;
  51. PumpSideMapping = pumpSideMappingStr;
  52. ForceMappingFusionHoseToHuiTianHoseStr = forceMappingFusionHoseToHuiTianHoseStr;
  53. RawProductNameToPosProductNameStr = rawProductNameToPosProductNameStr;
  54. NozzleLockAccessor.Init(posDatabaseConnStr);
  55. AppSettings.Add("SinochemSiteId", sinochemSiteId);
  56. AppSettings.Add("SinochemSiteName", sinochemSiteName);
  57. AppSettings.Add("SinochemCloudUrlPrefix", sinochemCloudUrlPrefix);
  58. AppSettings.Add("SinochemCloudBalanceApi", sinochemCloudBalanceApi);
  59. AppSettings.Add("SinochemCloudPaymentApi", sinochemCloudPaymentApi);
  60. AppSettings.Add("SinochemCloudTrxStatusApi", sinochemCloudTrxStatusApi);
  61. AppSettings.Add("SinochemCloudRefundApi", sinochemCloudRefundApi);
  62. AppSettings.Add("SinochemPosUrlPrefix", sinochemPosUrlPrefix);
  63. AppSettings.Add("SinochemPosNotifyApi", sinochemPosNotifyApi);
  64. AppSettings.Add("GradeNameToGradeNo", gradeNameToGradeNo);
  65. //State time out values.
  66. AppSettings.Add("__FP_Idle", Convert.ToString(__FP_Idle));
  67. AppSettings.Add("__FP_Shared_AuthorizePump", Convert.ToString(__FP_Shared_AuthorizePump));
  68. AppSettings.Add("__FP_Shared_WaitForPayableTrx", Convert.ToString(__FP_Shared_WaitForPayableTrx));
  69. AppSettings.Add("__FP_Shared_NotifyPOS", Convert.ToString(__FP_Shared_NotifyPOS));
  70. AppSettings.Add("__FP_Shared_PayTrx", Convert.ToString(__FP_Shared_PayTrx));
  71. AppSettings.Add("__FP_Shared_WaitForFueling", Convert.ToString(__FP_Shared_WaitForFueling));
  72. AppSettings.Add("__FP_CarPlateMode_CalculateMAC", Convert.ToString(__FP_CarPlateMode_CalculateMAC));
  73. AppSettings.Add("__FP_CarPlateMode_DisableICCardReader", Convert.ToString(__FP_CarPlateMode_DisableICCardReader));
  74. AppSettings.Add("__FP_CarPlateMode_Error", Convert.ToString(__FP_CarPlateMode_Error));
  75. AppSettings.Add("__FP_CarPlateMode_OpenCardReader", Convert.ToString(__FP_CarPlateMode_OpenCardReader));
  76. AppSettings.Add("__FP_CarPlateMode_SendPaymentResult", Convert.ToString(__FP_CarPlateMode_SendPaymentResult));
  77. AppSettings.Add("__FP_CarPlateMode_SendTrxDoneToCardReader", Convert.ToString(__FP_CarPlateMode_SendTrxDoneToCardReader));
  78. AppSettings.Add("__FP_CarPlateMode_SendTrxListFillingPaid", Convert.ToString(__FP_CarPlateMode_SendTrxListFillingPaid));
  79. AppSettings.Add("__FP_CarPlateMode_SendWelcomeScreen", Convert.ToString(__FP_CarPlateMode_SendWelcomeScreen));
  80. AppSettings.Add("__FP_CarPlateMode_ShowTrxListFueling", Convert.ToString(__FP_CarPlateMode_ShowTrxListFueling));
  81. AppSettings.Add("__FP_CarPlateMode_ShowTrxListPendingFueling", Convert.ToString(__FP_CarPlateMode_ShowTrxListPendingFueling));
  82. AppSettings.Add("__FP_CarPlateMode_ShowTrxListReadyForPay", Convert.ToString(__FP_CarPlateMode_ShowTrxListReadyForPay));
  83. AppSettings.Add("__FP_CarPlateMode_WaitForCardReaderBackToIdle", Convert.ToString(__FP_CarPlateMode_WaitForCardReaderBackToIdle));
  84. AppSettings.Add("__FP_ICCardMode_AbortTransaction", Convert.ToString(__FP_ICCardMode_AbortTransaction));
  85. AppSettings.Add("__FP_ICCardMode_CheckCardBalance", Convert.ToString(__FP_ICCardMode_CheckCardBalance));
  86. AppSettings.Add("__FP_ICCardMode_HandleExternalCheckFailure", Convert.ToString(__FP_ICCardMode_HandleExternalCheckFailure));
  87. AppSettings.Add("__FP_ICCardMode_HandleUserTimeout", Convert.ToString(__FP_ICCardMode_HandleUserTimeout));
  88. AppSettings.Add("__FP_ICCardMode_SendCalculateMacRequest", Convert.ToString(__FP_ICCardMode_SendCalculateMacRequest));
  89. AppSettings.Add("__FP_ICCardMode_SendCardBalanceToCardReader", Convert.ToString(__FP_ICCardMode_SendCardBalanceToCardReader));
  90. AppSettings.Add("__FP_ICCardMode_SendPaymentResult", Convert.ToString(__FP_ICCardMode_SendPaymentResult));
  91. AppSettings.Add("__FP_ICCardMode_SendTrxDoneToCardReader", Convert.ToString(__FP_ICCardMode_SendTrxDoneToCardReader));
  92. AppSettings.Add("__FP_ICCardMode_WaitForCardData", Convert.ToString(__FP_ICCardMode_WaitForCardData));
  93. AppSettings.Add("__FP_ICCardMode_WaitForCardEject", Convert.ToString(__FP_ICCardMode_WaitForCardEject));
  94. AppSettings.Add("__FP_ICCardMode_WaitForMacData", Convert.ToString(__FP_ICCardMode_WaitForMacData));
  95. AppSettings.Add("__ETC_WaitForWork", Convert.ToString(__ETC_WaitForWork));
  96. AppSettings.Add("__Misc_BigScreenBackToIdle", Convert.ToString(__Misc_BigScreenBackToIdle));
  97. AppSettings.Add("NeedConfirmEpsTrxExpirationInMinutes", Convert.ToString(NeedConfirmEpsTrxExpirationInMinutes));
  98. AppSettings.Add("AlreadyDoneEpsTrxCountPerDisplay", Convert.ToString(AlreadyDoneEpsTrxCountPerDisplay));
  99. AppSettings.Add("ListOfFuelingPoints", ListOfFuelingPoints);
  100. AppSettings.Add("AssociatedNozzlesForFuelingPoints", AssociatedNozzlesForFuelingPoints);
  101. AppSettings.Add("SupportMultiFusions", SupportMultiFusions);
  102. AppSettings.Add("ResendPosNotifyExpirationInMinutes", Convert.ToString(ResendPosNotifyExpirationInMinutes));
  103. AppSettings.Add("EpsTrxHistoryArchiveInDays", Convert.ToString(EpsTrxHistoryArchiveInDays));
  104. AppSettings.Add("ICCardPaymentResultDisplayTimeoutInSeconds", Convert.ToString(ICCardPaymentResultDisplayTimeoutInSeconds));
  105. AppSettings.Add("PrintReceiptEnabled", PrintReceiptEnabled);
  106. AppSettings.Add("PrintQrCodeOnReceiptEnabled", PrintQrCodeOnReceiptEnabled);
  107. }
  108. #endregion
  109. #region IApplication implementation
  110. public void Init(IEnumerable<IProcessor> processors)
  111. {
  112. this.processors = processors;
  113. }
  114. public Task<bool> Start()
  115. {
  116. Wayne.Lib.Log.Logger.SetConfigFile("SinochemAppLogConfig.xml", "SinochemEventLogConfig.xml");
  117. Wayne.Lib.Log.Logger.RefreshConfig();
  118. eps = new Eps(ConfigurationValues.ListOfFuelingPoints, ConfigurationValues.FuelingPointNozzlesDict, this.processors);
  119. eps.Run();
  120. return Task.FromResult(true);
  121. }
  122. public Task<bool> Stop()
  123. {
  124. if (eps != null)
  125. {
  126. eps.Shutdown();
  127. eps.Dispose();
  128. }
  129. Wayne.Lib.Log.Logger.Close();
  130. return Task.FromResult(true);
  131. }
  132. #endregion
  133. }
  134. }