public async Task UpdateChannelSystemIsModerator(string channelName, bool systemIsModerator)
        {
            var model = new UpdateSystemIsModeratorStatusModel {
                SystemIsModerator = systemIsModerator
            };

            var channel = await apiGateway.Post <ChannelModel, UpdateSystemIsModeratorStatusModel>(model, "channels", routeValues : new string[] { channelName, "systemIsModerator" }).ConfigureAwait(false);

            var existingChannel = Channels.Find(x => string.Equals(x.ChannelName, channelName, StringComparison.OrdinalIgnoreCase));

            if (existingChannel != null)
            {
                Channels.Remove(existingChannel);
                Channels.Add(channel);
            }

            var existingChannelWithoutUser = ChannelsWithoutUser.Find(x => string.Equals(x.ChannelName, channelName, StringComparison.OrdinalIgnoreCase));

            if (existingChannelWithoutUser != null)
            {
                ChannelsWithoutUser.Remove(existingChannelWithoutUser);
                ChannelsWithoutUser.Add(channel);
            }

            NotifyStateChanged();
        }
        public async Task UpdateSystemModeratorState(bool systemIsModerator)
        {
            var model = new UpdateSystemIsModeratorStatusModel {
                SystemIsModerator = systemIsModerator
            };

            Channel = await apiGateway.Post <ChannelModel, UpdateSystemIsModeratorStatusModel>(model, "channels", routeValues : new string[] { CurrentlySelectedChannelName, "systemIsModerator" }).ConfigureAwait(false);

            NotifyStateChanged();
        }
        public async Task <IActionResult> SetSystemIsModeratorStatus([FromRoute] string channelName, [FromBody] UpdateSystemIsModeratorStatusModel model)
        {
            var result = await channelService.UpdateChannelSystemIsModeratorState(channelName, model.SystemIsModerator, ApplicationContext).ConfigureAwait(false);

            if (result.State == ResultState.AccessDenied)
            {
                return(Unauthorized());
            }

            if (result.State == ResultState.NoContent)
            {
                return(BadRequest());
            }

            return(Ok(result.Data.Map()));
        }