123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- using Edge.Core.Processor;using Edge.Core.IndustryStandardInterface.Pump;
- using Edge.Core.Processor;using Edge.Core.IndustryStandardInterface.Pump;
- using NozzleLockConfiguration;
- using System;
- using System.Collections.Generic;
- using System.Configuration;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace SinochemInternetPlusApp
- {
- /// <summary>
- /// This EPS controls pump throught Global Forecourt Controller (Global FCC).
- /// </summary>
- public class GenericSinochemEpsApp : IAppProcessor
- {
-
- public string MetaConfigName { get; set; }
- private string epsType;
- //The pump processors
- private IEnumerable<IProcessor> processors;
- 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<string, string> AppSettings = new Dictionary<string, string>();
- private Eps eps;
- #region Logger
- static NLog.Logger logger = NLog.LogManager.LoadConfiguration("nlog.config").GetLogger("SinochemEpsApp");
- #endregion
- public GenericSinochemEpsApp(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_Shared_AuthorizePump_ClearLastTrx,
- 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_Shared_AuthorizePump_ClearLastTrx", Convert.ToString(__FP_Shared_AuthorizePump_ClearLastTrx));
- 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("EpsPendingTrxExpiredInHours", "");
- 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);
- }
- public void Dispose()
- {
- //throw new NotImplementedException();
- }
- public void Init(IEnumerable<IProcessor> processors)
- {
- this.processors = processors;
- }
- public Task<bool> Start()
- {
- Wayne.Lib.Log.Logger.SetConfigFile("SinochemAppLogConfig.xml", "SinochemEventLogConfig.xml");
- Wayne.Lib.Log.Logger.RefreshConfig();
- eps = new Eps(ConfigurationValues.ListOfFuelingPoints, ConfigurationValues.FuelingPointNozzlesDict, processors);
- eps.Run();
- return Task.FromResult(true);
- }
- public Task<bool> Stop()
- {
- if (eps != null)
- {
- eps.Shutdown();
- eps.Dispose();
- }
- Wayne.Lib.Log.Logger.Close();
- return Task.FromResult(true);
- }
- }
- }
|