public async Task <IActionResult> GetClientsAsync(bool onlyVoiceClients = false)
        {
            IEnumerable <GetClientDetailedInfo> clients = await Ts3DataProvider.GetClientsDeatailedAsync();

            if (onlyVoiceClients)
            {
                clients = clients?.Where(c => c.Type == ClientType.FullClient);
            }
            return(Ok(clients ?? new List <GetClientDetailedInfo>()));
        }
        public async Task <IActionResult> GetServerGroups(ts3provider.Enums.ServerGroupType?serverGroupType = null)
        {
            IEnumerable <GetServerGroupListInfo> serverGroups = await Ts3DataProvider.GetServerGroups();

            if (serverGroupType.HasValue)
            {
                serverGroups = serverGroups?.Where(g => g.ServerGroupType == (ServerGroupType)serverGroupType.Value);
            }

            return(Ok(serverGroups));
        }
        public async Task <IActionResult> GetClientAsync(int clientDbId)
        {
            if (clientDbId < 0)
            {
                return(BadRequest(nameof(clientDbId)));
            }

            var client = await Ts3DataProvider.GetGetClientDetailedInfoAsync(clientDbId);

            return(Ok(client));
        }
        public async Task <IActionResult> GetServerGroupClients(int groupId)
        {
            if (groupId < 0)
            {
                return(BadRequest(nameof(groupId)));
            }

            var clients = await Ts3DataProvider.GetServerGroupClients(groupId);

            return(Ok(clients));
        }
        public async Task <IActionResult> GetServerListInfos()
        {
            var serverListInfos = await Ts3DataProvider.GetServerListInfosAsync();

            var serverInfo = serverListInfos?.FirstOrDefault(s => s.Id == TS3Config.Value.ServerIndex);

            if (serverInfo == null)
            {
                return(NoContent());
            }

            return(Ok(new DetailedTs3ServerInfo(serverInfo)
            {
                ExternalIPAddress = TS3Config.Value.ExternalAddress
            }));
        }
        public async Task <IActionResult> GetChannelsAsync()
        {
            IEnumerable <GetChannelListInfo> channels = await Ts3DataProvider.GetChannelAsync();

            return(Ok(channels ?? new List <GetChannelListInfo>()));
        }