Пример #1
0
        /// <summary>
        /// Adds or removes a user from a blacklist or a whitelist in the specified guild.
        /// </summary>
        /// <param name="guild">Guild</param>
        /// <param name="action">Add or rem action</param>
        /// <param name="userId">User's Id</param>
        /// <param name="userName">User's name#discrim</param>
        /// <returns>Whether the operation was successful</returns>
        public async Task <bool> ApplyListAction(StreamRoleListType listType, IGuild guild, AddRemove action, ulong userId, string userName)
        {
            userName.ThrowIfNull(nameof(userName));

            bool success;

            using (var uow = _db.UnitOfWork)
            {
                var streamRoleSettings = uow.GuildConfigs.GetStreamRoleSettings(guild.Id);

                if (listType == StreamRoleListType.Whitelist)
                {
                    var userObj = new StreamRoleWhitelistedUser()
                    {
                        UserId   = userId,
                        Username = userName,
                    };

                    if (action == AddRemove.Rem)
                    {
                        success = streamRoleSettings.Whitelist.Remove(userObj);
                    }
                    else
                    {
                        success = streamRoleSettings.Whitelist.Add(userObj);
                    }
                }
                else
                {
                    var userObj = new StreamRoleBlacklistedUser()
                    {
                        UserId   = userId,
                        Username = userName,
                    };

                    if (action == AddRemove.Rem)
                    {
                        success = streamRoleSettings.Blacklist.Remove(userObj);
                    }
                    else
                    {
                        success = streamRoleSettings.Blacklist.Add(userObj);
                    }
                }

                await uow.CompleteAsync().ConfigureAwait(false);

                UpdateCache(guild.Id, streamRoleSettings);
            }
            if (success)
            {
                await RescanUsers(guild).ConfigureAwait(false);
            }
            return(success);
        }
Пример #2
0
        /// <summary>
        /// Adds or removes a user from a blacklist or a whitelist in the specified guild.
        /// </summary>
        /// <param name="guild">Guild</param>
        /// <param name="action">Add or rem action</param>
        /// <param name="userId">User's Id</param>
        /// <param name="userName">User's name#discrim</param>
        /// <returns>Whether the operation was successful</returns>
        public async Task <bool> ApplyListAction(StreamRoleListType listType, IGuild guild, AddRemove action, ulong userId, string userName)
        {
            userName.ThrowIfNull(nameof(userName));

            bool success = false;

            using (var uow = _db.GetDbContext())
            {
                var streamRoleSettings = uow.GuildConfigs.GetStreamRoleSettings(guild.Id);

                if (listType == StreamRoleListType.Whitelist)
                {
                    var userObj = new StreamRoleWhitelistedUser()
                    {
                        UserId   = userId,
                        Username = userName,
                    };

                    if (action == AddRemove.Rem)
                    {
                        var toDelete = streamRoleSettings.Whitelist.FirstOrDefault(x => x.Equals(userObj));
                        if (toDelete != null)
                        {
                            uow._context.Remove(toDelete);
                            success = true;
                        }
                    }
                    else
                    {
                        success = streamRoleSettings.Whitelist.Add(userObj);
                    }
                }
                else
                {
                    var userObj = new StreamRoleBlacklistedUser()
                    {
                        UserId   = userId,
                        Username = userName,
                    };

                    if (action == AddRemove.Rem)
                    {
                        var toRemove = streamRoleSettings.Blacklist.FirstOrDefault(x => x.Equals(userObj));
                        if (toRemove != null)
                        {
                            success = true;
                            success = streamRoleSettings.Blacklist.Remove(toRemove);
                        }
                    }
                    else
                    {
                        success = streamRoleSettings.Blacklist.Add(userObj);
                    }
                }

                await uow.SaveChangesAsync();

                UpdateCache(guild.Id, streamRoleSettings);
            }
            if (success)
            {
                await RescanUsers(guild).ConfigureAwait(false);
            }
            return(success);
        }