예제 #1
0
        async Task <bool> IPermissionConfig.WhitelistModule(ITextChannel channel, ModuleInfo module)
        {
            var ch = QueryChannel(channel);

            if (ch != null)
            {
                var n = QueryModule(module);
                if (n == null)
                {
                    n = new ConfigModule {
                        ModuleName = module.Name
                    };
                    Modules.Add(n);
                    await SaveChangesAsync().ConfigureAwait(false);;
                }

                var hasThis = QueryChannelModules().Any(m => m.Module.Id == n.Id && m.Channel.Id == ch.Id);
                if (!hasThis)
                {
                    var cm = new ChannelModule <TChannel, TUser>
                    {
                        Channel = ch,
                        Module  = n
                    };
                    ChannelModules.Add(cm);
                    //ch.WhiteListedModules.Add(cm);
                    await SaveChangesAsync().ConfigureAwait(false);;
                }

                return(!hasThis);
            }

            return(false);
        }
예제 #2
0
        async Task <bool> IPermissionConfig.BlacklistModule(ITextChannel channel, ModuleInfo module)
        {
            var mod = await QueryChannelModules()
                      .Where(m => m.Channel.ChannelId == channel.Id)
                      .SingleOrDefaultAsync(m => m.Module.ModuleName == module.Name).ConfigureAwait(false);

            if (mod != null)
            {
                ChannelModules.Remove(mod);
                await SaveChangesAsync().ConfigureAwait(false);

                return(true);
            }
            return(false);
        }
예제 #3
0
 private IQueryable <ChannelModule <TChannel, TUser> > QueryChannelModules()
 => ChannelModules.Include(cm => cm.Channel).Include(cm => cm.Module);