/// <summary> /// Send web socket message to target clients. /// </summary> /// <param name="taskEvent"> /// Task event. /// </param> /// <param name="task"> /// Task itself. /// </param> public void Send(TaskEvent taskEvent, TaskData task) { IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext <TasksManagerHub>(); lock (task) { var result = new { task.Id, TaskType = task.TaskType.GetName(), DisplayName = task.TaskType.GetDisplayValue(), Created = task.Created.ToString(OutputFormats.DateTimeFormat), Started = task.Started?.ToString(OutputFormats.DateTimeFormat), Completed = task.Completed?.ToString(OutputFormats.DateTimeFormat), ExecutionTime = task.ExecutionTime?.ToString(OutputFormats.TimeFormat), TaskState = task.TaskState.ToString(), TaskStateName = task.TaskState.GetDisplayValue(), task.UserId, task.UserName }; hubContext.Clients.Group("admins").TaskEvent(taskEvent.ToString(), result); if (!AccountHelper.IsAdmin()) { hubContext.Clients.Group(task.UserId.ToString()).TaskEvent(taskEvent.ToString(), result); } } }
/// <summary> /// Send web socket message to all clients. /// </summary> /// <param name="taskEvent"> /// Task event. /// </param> /// <param name="task"> /// Task itself. /// </param> public static void Send(TaskEvent taskEvent, TaskData task) { var hubContext = GlobalHost.ConnectionManager.GetHubContext<TasksManagerHub>(); lock (task) { var result = new { task.Id, task.DisplayName, Created = task.Created.ToString(OutputFormats.DateTimeFormat), Started = task.Started == null ? string.Empty : ((DateTimeOffset)task.Started).ToString(OutputFormats.DateTimeFormat), Completed = task.Completed == null ? string.Empty : ((DateTimeOffset)task.Completed).ToString(OutputFormats.DateTimeFormat), ExecutionTime = task.ExecutionTime == null ? string.Empty : ((TimeSpan)task.ExecutionTime).ToString(OutputFormats.TimeFormat), TaskState = task.TaskState.ToString(), TaskStateName = task.TaskState.GetDisplayValue(), task.UserId, task.UserName }; hubContext.Clients.All.TaskEvent(taskEvent.ToString(), result); } }