private void RefreshActiveChannels() { var readedChannels = new List <ActiveChannelsDto>(); using (var cmd = new MySqlCommand("SELECT * FROM asterisk.ActiveChannels where Application = 'queue' and BridgeId is null", _dbRefreshConnection)) using (var dataReader = cmd.ExecuteReader()) { while (dataReader.Read()) { readedChannels.Add(new ActiveChannelsDto { UniqueId = dataReader.GetNullableString("UniqueID"), Channel = dataReader.GetNullableString("Channel"), CallerIdNum = dataReader.GetNullableString("CallerIDNum"), ChannelState = dataReader.GetNullableString("ChannelState"), AnswerTime = dataReader.GetNullableDateTime("AnswerTime"), CreateTime = dataReader.GetNullableDateTime("CreateTime") }); } dataReader.Close(); } var remotedChannels = ActiveChannels.Where(n => readedChannels.All(c => c.UniqueId != n.UniqueId)).ToList(); var newChannels = readedChannels.Where(n => ActiveChannels.All(c => c.UniqueId != n.UniqueId)).ToList(); newChannels.ForEach(c => ActiveChannels.Add(c)); remotedChannels.ForEach(c => ActiveChannels.Remove(c)); }
public async Task JoinChannelAsync(string group, string user) { if (!IsConnected || ActiveChannels.ContainsKey(group)) { return; } await hubConnection.SendAsync("AddToGroup", group, user); ActiveChannels.Add(group, user); }
public void ConnectToChannel(string channelToJoin, Storage.ChannelConfig channelcfg) { MeebyIrcClient.RfcJoin("#" + channelToJoin); this.OnChannelJoining?.Invoke(channelToJoin); ActiveChannels.Add("#" + channelToJoin, new SuiBot_ChannelInstance(channelToJoin, BotConnectionConfig.Password, this, channelcfg)); }