RemoteTriggerHandler.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using EVCB_OCPP.Domain;
  2. using EVCB_OCPP.Packet.Features;
  3. using EVCB_OCPP.Packet.Messages;
  4. using EVCB_OCPP.Packet.Messages.RemoteTrigger;
  5. using EVCB_OCPP.WSServer.Service.WsService;
  6. using Microsoft.EntityFrameworkCore;
  7. using Microsoft.Extensions.Logging;
  8. using System;
  9. using System.Linq;
  10. using System.Threading.Tasks;
  11. namespace EVCB_OCPP.WSServer.Message
  12. {
  13. internal partial class ProfileHandler
  14. {
  15. internal async Task<MessageResult> ExecuteRemoteTriggerConfirm(Actions action, WsClientData session, IConfirmation confirm, string requestId)
  16. {
  17. MessageResult result = new MessageResult() { Success = true };
  18. switch (action)
  19. {
  20. case Actions.TriggerMessage:
  21. {
  22. TriggerMessageConfirmation _confirm = confirm as TriggerMessageConfirmation;
  23. TriggerMessageRequest _request = _confirm.GetRequest() as TriggerMessageRequest;
  24. using (var db = await maindbContextFactory.CreateDbContextAsync())
  25. {
  26. var operation = await db.MachineOperateRecord.Where(x => x.SerialNo == requestId &&
  27. x.ChargeBoxId == session.ChargeBoxId && x.Status == 0).FirstOrDefaultAsync();
  28. if (operation != null)
  29. {
  30. operation.FinishedOn = DateTime.UtcNow;
  31. operation.Status = 1;//電樁有回覆
  32. operation.EvseStatus = (int)_confirm.status;//OK
  33. operation.EvseValue = _confirm.status.ToString();
  34. await db.SaveChangesAsync();
  35. }
  36. }
  37. }
  38. break;
  39. default:
  40. {
  41. logger.LogWarning(string.Format("Not Implement {0} Logic", confirm.GetType().ToString().Replace("OCPPPackage.Messages.RemoteTrigger.", "")));
  42. }
  43. break;
  44. }
  45. return result;
  46. }
  47. internal async Task<MessageResult> ReceivedRemoteTriggerError(Actions action, string errorMsg, WsClientData session, string requestId)
  48. {
  49. MessageResult result = new MessageResult() { Success = true };
  50. switch (action)
  51. {
  52. case Actions.TriggerMessage:
  53. {
  54. using (var db = await maindbContextFactory.CreateDbContextAsync())
  55. {
  56. var operation = await db.MachineOperateRecord.Where(x => x.SerialNo == requestId &&
  57. x.ChargeBoxId == session.ChargeBoxId && x.Status == 0).FirstOrDefaultAsync();
  58. if (operation != null)
  59. {
  60. operation.FinishedOn = DateTime.UtcNow;
  61. operation.Status = 1;//電樁有回覆
  62. operation.EvseStatus = (int)255;//錯誤
  63. operation.EvseValue = errorMsg;
  64. await db.SaveChangesAsync();
  65. }
  66. }
  67. }
  68. break;
  69. default:
  70. {
  71. logger.LogWarning(string.Format("Not Implement {0} Logic", action));
  72. }
  73. break;
  74. }
  75. return result;
  76. }
  77. }
  78. }