public override async Task OnDisconnectedAsync(Exception exception)
        {
            if (Device != null)
            {
                DataService.DeviceDisconnected(Device.ID);

                Device.IsOnline = false;

                var connectionIds = BrowserSocketHub.ConnectionIdToUserLookup
                                    .Where(x => x.Value.OrganizationID == Device.OrganizationID)
                                    .Select(x => x.Key)
                                    .ToList();

                await BrowserHub.Clients.Clients(connectionIds).SendAsync("DeviceWentOffline", Device);

                ServiceConnections.Remove(Context.ConnectionId, out _);
            }

            await base.OnDisconnectedAsync(exception);
        }
        public override async Task OnDisconnectedAsync(Exception exception)
        {
            if (Device != null)
            {
                DataService.DeviceDisconnected(Device.ID);

                Device.IsOnline = false;

                var onlineOrganizationUsers = BrowserSocketHub.ConnectionIdToUserLookup
                                              .Where(x => x.Value.OrganizationID == Device.OrganizationID);

                var authorizedUsers = DataService.GetUsersWithAccessToDevice(onlineOrganizationUsers.Select(x => x.Value.Id), Device);
                var connectionIds   = onlineOrganizationUsers
                                      .Where(onlineUser => authorizedUsers.Any(authorizedUser => authorizedUser.Id == onlineUser.Value.Id))
                                      .Select(x => x.Key)
                                      .ToList();

                await BrowserHub.Clients.Clients(connectionIds).SendAsync("DeviceWentOffline", Device);

                ServiceConnections.Remove(Context.ConnectionId, out _);
            }

            await base.OnDisconnectedAsync(exception);
        }