RemoteTriggerHandler.cs 3.5 KB

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