Composite.cs 4.2 KB

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