Composite.cs 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using SinochemCarplateService.Models;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Xml.Serialization;
  9. using Wayne.Lib.StateEngine;
  10. using Wayne.Lib.StateEngine.Generic;
  11. using WayneChina_IcCardReader_SinoChem.MessageEntity.Incoming;
  12. namespace SinochemInternetPlusApp.States.CarPlateManualMode
  13. {
  14. class Composite : CompositeState<FuelingPoint>
  15. {
  16. protected override void ConfigureCompositeStateMachine()
  17. {
  18. CONFIGURATION.Config(StateMachine.StateTransitionLookup);
  19. }
  20. public override void UnhandledEvent(StateEngineEvent stateEngineEvent, ref Transition transition)
  21. {
  22. base.UnhandledEvent(stateEngineEvent, ref transition);
  23. //Create new Eps Trx when new car is coming
  24. if (stateEngineEvent.Type.Equals(EventType.CarPlateScanned))
  25. {
  26. var genericEvent = stateEngineEvent as GenericEvent<CarPlateTrxRequest>;
  27. if (genericEvent != null && genericEvent.EventArgs != null)
  28. {
  29. var newNozzleId = Convert.ToInt32(genericEvent.EventArgs.gun);
  30. Main.NewEpsTrx = EpsTransaction.CreateEpsTrx(newNozzleId, EpsTransactionMode.CarPlateMode, Main.DebugLogger);
  31. Main.NewEpsTrx.Model.car_number = genericEvent.EventArgs.car_Number;
  32. Main.NewEpsTrx.Model.ttc = genericEvent.EventArgs.ttc;
  33. Main.NewEpsTrx.Model.balance_before_trx = genericEvent.EventArgs.amount;
  34. Main.NewEpsTrx.Model.token = genericEvent.EventArgs.token;
  35. Main.NewEpsTrx.Model.tid = genericEvent.EventArgs.tid;
  36. Main.NewEpsTrx.Model.xf_date = DateTime.Parse(DateTime.Now.Date.ToString("yyyy-MM-dd"));
  37. Main.NewEpsTrx.Model.trx_status = EpsTrxStatus.BeforeFueling;
  38. Main.NewEpsTrx.SaveToDb();
  39. //Sending trx list including the new trx
  40. var validTrx = EpsTransactionQuery.GetValidCarPlateEpsTrxModels(
  41. Main.GetAllNozzlesOnThisSide(),
  42. ConfigurationValues.AlreadyDoneEpsTrxCountPerDisplay,
  43. Main.DebugLogger);
  44. Main.ActiveTrx = validTrx;
  45. if (Main.Eps.NozzleMappingGradeName() != null)
  46. {
  47. foreach (var trx in validTrx)
  48. {
  49. if (trx.trx_status == EpsTrxStatus.BeforeFueling || trx.trx_status == EpsTrxStatus.Fueling)
  50. {
  51. trx.AvailableNozzleGrade = Main.GetAvailableNozzleInfo();
  52. }
  53. }
  54. }
  55. int requestId;
  56. var text = Main.Eps.CreateDisplayTrxCommand(validTrx, out requestId, 0);
  57. if (Main.Eps.CarPlateHandler != null)
  58. {
  59. DebugLog(text);
  60. Main.Eps.CarPlateHandler.BroadcastMessageViaFdc(text);
  61. }
  62. genericEvent.Handled = true;
  63. return;
  64. }
  65. }
  66. //else if (stateEngineEvent.Type.Equals(EventType.ReaderStateChanged))
  67. //{
  68. // var genericEvent = stateEngineEvent as GenericEvent<CardReaderStateEventArgs>;
  69. // if (genericEvent != null &&
  70. // genericEvent.EventArgs != null &&
  71. // genericEvent.EventArgs.CardReaderState.State == CardReaderState.CardInserted)
  72. // {
  73. // DebugLog("Unexpected CardInsert event in the CarPlateManualMode");
  74. // genericEvent.Handled = true;
  75. // return;
  76. // }
  77. //}
  78. //else if (stateEngineEvent.Type.Equals(EventType.OnlineVerification))
  79. //{
  80. // var genericEvent = stateEngineEvent as GenericEvent<CardOnlineVerificationEventArgs>;
  81. // if (genericEvent != null &&
  82. // genericEvent.EventArgs != null)
  83. // {
  84. // DebugLog("Unexpected card online verification event in the CarPlateManualMode");
  85. // genericEvent.Handled = true;
  86. // return;
  87. // }
  88. //}
  89. }
  90. private void BroadcastTrxListChanged()
  91. {
  92. var validTrx = EpsTransactionQuery.GetValidCarPlateEpsTrxModels(
  93. Main.GetAllNozzlesOnThisSide(),
  94. ConfigurationValues.AlreadyDoneEpsTrxCountPerDisplay,
  95. Main.DebugLogger);
  96. int trxOpRequestId;
  97. //Refresh 15" screen
  98. var text = Main.Eps.CreateDisplayTrxCommand(validTrx, out trxOpRequestId, 0);
  99. if (Main.Eps.CarPlateHandler != null)
  100. {
  101. Main.Eps.CarPlateHandler.BroadcastMessageViaFdc(text);
  102. }
  103. }
  104. }
  105. }