using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.SignalR; using RobotNet10.RobotApp.Client.Shared.Devices; using RobotNet10.RobotApp.Devices; using RobotNet10.Shared.Geometry; namespace RobotNet10.RobotApp.Hubs; /// /// SignalR Hub cho Camera QR device - cung cấp real-time QR detection data /// [Authorize] public class CameraQrHub(IDeviceProvider deviceProvider) : Hub { /// /// Lấy thông tin device (DeviceName) theo device ID /// public async Task GetDeviceInfo(string deviceId) { var device = deviceProvider.GetDevice(deviceId); if (device is not ICameraQr) { return null; } return new DeviceInfoDto { DeviceId = device.DeviceId, DeviceName = device.DeviceName }; } /// /// Lấy dữ liệu Camera QR theo device ID /// public async Task GetCameraQrData(string deviceId) { var device = deviceProvider.GetDevice(deviceId); if (device is not ICameraQr cameraQr) { return null; } return MapToDto(cameraQr); } /// /// Map ICameraQr sang CameraQrDataDto /// private static CameraQrDataDto MapToDto(ICameraQr cameraQr) { return new CameraQrDataDto { IsConnected = cameraQr.IsConnected, Codes = cameraQr.Codes, }; } }