using System.Linq; using System.Text; using Pilotfish.Afx.Services; using Microsoft.AspNet.SignalR.Client; using System; namespace Neo.Legitimate.WinService.SystemTriggers { public class SystemTriggerHandler : Worker, IExecutable { #region Run public void Run() { TraceInfo = string.Empty; var trace = new StringBuilder(); using(var database = new SystemTriggerDatabase(Settings["ConnectionString"])) { var systemTrigger = database.DequeueSystemTrigger(); if (systemTrigger != null) { HubConnection hubConnection = new HubConnection(Settings["SignalRPath"], useDefaultUrl: false); IHubProxy proxy = hubConnection.CreateHubProxy("MessageHub"); var verificationTaskJson = database.GetVerificationTaskDetail(systemTrigger.RelatedItemID, 1); if (verificationTaskJson != null) { if (hubConnection.State != ConnectionState.Connected) { hubConnection.Start().Wait(); } try { proxy.Invoke("AddVerificationToList", verificationTaskJson.ToJson(JsonSerializerOptions.FormatDateTime)); } catch { trace.AppendLine("Error sending data"); } hubConnection.Stop(); } database.UpdateSystemTriggerStatus(systemTrigger.SystemTriggerID, (short)SystemTriggerStatusEnum.Completed); } } // This will be added to the service trace table TraceInfo = trace.ToString(); } #endregion } }