using Furion.InstantMessaging;
using Microsoft.AspNetCore.SignalR;

namespace WCS.Application;

/// <summary>
/// 任务日志集线器
/// </summary>
[MapHub("/hubs/TaskLog")]
public class TaskLogHub : Hub<ITaskLogHub>
{
    private readonly IHubContext<TaskLogHub, ITaskLogHub> _taskLogHubContext;

    public TaskLogHub(IHubContext<TaskLogHub, ITaskLogHub> taskLogHubContext)
    {
        _taskLogHubContext = taskLogHubContext;
    }

    /// <summary>
    /// 连接
    /// </summary>
    /// <returns></returns>
    public override async Task OnConnectedAsync()
    {
        await base.OnConnectedAsync();
    }

    /// <summary>
    /// æ–­å¼€
    /// </summary>
    /// <param name="exception"></param>
    /// <returns></returns>
    public override async Task OnDisconnectedAsync(Exception exception)
    {
        await base.OnDisconnectedAsync(exception);
    }

    /// <summary>
    /// 下发任务
    /// </summary>
    /// <returns></returns>
    public async Task PublicTask(WcsTaskOutput context)
    {
        await _taskLogHubContext.Clients.All.PublicTask(context);
    }

    /// <summary>
    /// 下发任务明细
    /// </summary>
    /// <returns></returns>
    public async Task PublicTaskMonitor(WcsTaskMonitorOutput context)
    {
        await _taskLogHubContext.Clients.All.PublicTaskMonitor(context);
    }

}