Example #1
0
        public bool AddFeed(ulong guildId, ulong channelId, string rssFeed)
        {
            rssFeed.ThrowIfNull(nameof(rssFeed));

            var fs = new FeedSub()
            {
                ChannelId = channelId,
                Url       = rssFeed.Trim(),
            };

            using (var uow = _db.GetDbContext())
            {
                var gc = uow.GuildConfigs.ForId(guildId,
                                                set => set.Include(x => x.FeedSubs)
                                                .ThenInclude(x => x.GuildConfig));

                if (gc.FeedSubs.Any(x => x.Url.ToLower() == fs.Url.ToLower()))
                {
                    return(false);
                }
                else if (gc.FeedSubs.Count >= 10)
                {
                    return(false);
                }

                gc.FeedSubs.Add(fs);
                uow.SaveChanges();
                //adding all, in case bot wasn't on this guild when it started
                foreach (var feed in gc.FeedSubs)
                {
                    _subs.AddOrUpdate(feed.Url.ToLower(), new HashSet <FeedSub>()
                    {
                        feed
                    }, (k, old) =>
                    {
                        old.Add(feed);
                        return(old);
                    });
                }
            }

            return(true);
        }
Example #2
0
        public bool AddFeed(ulong guildId, ulong channelId, string rssFeed)
        {
            rssFeed.ThrowIfNull(nameof(rssFeed));

            var fs = new FeedSub()
            {
                ChannelId = channelId,
                Url       = rssFeed.Trim().ToLowerInvariant(),
            };

            using (var uow = _db.UnitOfWork)
            {
                var gc = uow.GuildConfigs.For(guildId, set => set.Include(x => x.FeedSubs));

                if (gc.FeedSubs.Contains(fs))
                {
                    return(false);
                }
                else if (gc.FeedSubs.Count >= 10)
                {
                    return(false);
                }

                gc.FeedSubs.Add(fs);

                //adding all, in case bot wasn't on this guild when it started
                foreach (var f in gc.FeedSubs)
                {
                    _subs.AddOrUpdate(f.Url, new HashSet <FeedSub>(), (k, old) =>
                    {
                        old.Add(f);
                        return(old);
                    });
                }

                uow.Complete();
            }

            return(true);
        }