Esempio n. 1
0
        public IHttpResponse Create(PostChannelViewModel model)
        {
            Regex channelNameRegex = new Regex(@"^\w+$");

            if ((!channelNameRegex.Match(model.Name).Success) || model.Name.Length < 3 ||
                model.Name.Length > 30)
            {
                return(this.BadRequestError("Invalid channel name format!"));
            }
            if (this.DbContext.Channels.Any(ch => ch.Name == model.Name))
            {
                return(this.BadRequestError("Channel already exists!"));
            }

            Channel channel = new Channel()
            {
                Name        = model.Name,
                Description = model.Description,
                Type        = (ChannelType)Enum.Parse(typeof(ChannelType), model.ChannelType),
                Followers   = new List <UserChannel>()
            };

            this.DbContext.Channels.Add(channel);
            this.DbContext.SaveChanges();

            foreach (var tag in model.Tags.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries))
            {
                int index = 0;
                index++;
                Tag newTag = new Tag()
                {
                    Name = tag.Trim(),
                };

                if (this.DbContext.Tags.Any(t => t.Name == newTag.Name))
                {
                }
                else
                {
                    this.DbContext.Tags.Add(newTag);
                    this.DbContext.SaveChanges();
                }

                ChannelTag channelTag = new ChannelTag()
                {
                    ChannelId = channel.Id,
                    TagId     = this.DbContext.Tags.First(t => t.Name == newTag.Name).Id
                };
                this.DbContext.ChannelTags.Add(channelTag);

                this.DbContext.SaveChanges();
            }

            return(this.Redirect($"/Channels/Details?Id={channel.Id}"));
        }
Esempio n. 2
0
        public void CreateChannel(CreateChannelModel model)
        {
            var tagNames = model.Tags.Split(new[] { ", ", "," }, StringSplitOptions.RemoveEmptyEntries);


            var type    = Enum.Parse <ChannelType>(model.Type, true);
            var channel = new Channel
            {
                Name        = model.Name,
                Description = model.Description,
                Type        = type
            };

            context.Channels.Add(channel);
            context.SaveChanges();

            var tags = new List <Tag>();

            foreach (var name in tagNames)
            {
                var tag = this.context.Tags.FirstOrDefault(p => p.Name == name);
                if (tag == null)
                {
                    tag = new Tag
                    {
                        Name = name
                    };
                }
                tags.Add(tag);
            }

            context.AddRange(tags);
            context.SaveChanges();

            var channelTags = new List <ChannelTag>();

            foreach (var tag in tags)
            {
                var channelTag = new ChannelTag
                {
                    Channel = channel,
                    Tag     = tag
                };

                channelTags.Add(channelTag);
            }
            context.ChannelTags.AddRange(channelTags);
            context.SaveChanges();
        }
        private void ResetPage()
        {
            _isInit = false;

            HolderContainer.Visibility = Visibility.Visible;
            _detail              = null;
            TitleBlock.Text      = "--";
            SubscribeButton.Text = "--";
            InfoBlock.Text       = "--";
            _topicOffset         = "";
            _videoOffset         = 1;
            VideoCollection.Clear();
            TopicCollection.Clear();
            _isVideoRequesting = false;

            _isInit = true;
        }
Esempio n. 4
0
 public async Task DeleteTag([Summary("The tag name.")] string name)
 {
     using (BotDBContext DBContext = DBFactory.Create <BotDBContext>())
     {
         ChannelTag selectedTag = DBContext.ChannelTags.Where(x => x.ChannelId == Context.Channel.Id.ToString() && x.Name.ToLower() == name.ToLower() && x.OwnerId == Context.User.Id.ToString()).FirstOrDefault();
         if (selectedTag != null)
         {
             DBContext.ChannelTags.Remove(selectedTag);
             await DBContext.SaveChangesAsync();
             await ReplyAsync("", embed : EmbedService.MakeFailFeedbackEmbed($"The tag {name.Bold()} has been deleted."));
         }
         else
         {
             await ReplyAsync("", embed : EmbedService.MakeFailFeedbackEmbed("The specified tag either doesn't exist or you don't own it."));
         }
     }
 }
Esempio n. 5
0
        public async Task MakeTag([Summary("The name of the Tag.")] string name, [Summary("The content of the tag.")][Remainder] string content)
        {
            using (BotDBContext DBContext = DBFactory.Create <BotDBContext>())
            {
                var tagExists = DBContext.ChannelTags.Where(x => x.ChannelId == Context.Channel.Id.ToString()).FirstOrDefault(x => x.Name.ToLower() == name.ToLower());
                if (tagExists == null)
                {
                    ChannelTag channelTag = new ChannelTag(name, content, Context.Channel.Id.ToString(), Context.User.Id.ToString(), DateTime.Now);
                    await DBContext.AddAsync(channelTag);

                    await DBContext.SaveChangesAsync();
                    await ReplyAsync("", embed : EmbedService.MakeSuccessFeedbackEmbed($"You have successfully attached the tag {name} to this channel."));
                }
                else
                {
                    await ReplyAsync("", embed : EmbedService.MakeFailFeedbackEmbed("A tag already exists in this channel with that name."));
                }
            }
        }
Esempio n. 6
0
        private void TryAddTags()
        {
            if (_channels.Any())
            {
                List <Tag> tags = _db.Tags.ToList();
                foreach (var channel in _channels)
                {
                    foreach (Tag tag in PickRandom(tags, _random.Next(1, 4)))
                    {
                        var channelTag = new ChannelTag
                        {
                            Channel = channel,
                            Tag     = tag
                        };
                        channel.Tags.Add(channelTag);
                    }
                }

                _db.SaveChanges();
            }
        }
        public async Task Refresh()
        {
            ResetPage();
            var detail = await App.BiliViewModel._client.Channel.GetTagDetail(_tagId);

            _detail = detail;
            if (_detail != null)
            {
                TitleBlock.Text      = detail.name;
                SubscribeButton.Text = detail.is_atten == 1 ? "取消订阅" : "订阅";
                InfoBlock.Text       = $"{AppTool.GetNumberAbbreviation(detail.atten)}人订阅";
                if (Convert.ToBoolean(VideoButton.IsChecked))
                {
                    await RefreshVideo();
                }
                else
                {
                    await RefreshTopic();
                }
                HolderContainer.Visibility = Visibility.Collapsed;
            }
        }
Esempio n. 8
0
        public async Task Tag([Summary("Retrieves the specified tag.")] string name)
        {
            using (BotDBContext DBContext = DBFactory.Create <BotDBContext>())
            {
                ChannelTag selectedTag = DBContext.ChannelTags.FirstOrDefault(x => x.ChannelId == Context.Channel.Id.ToString() && x.Name.ToLower() == name.ToLower());
                if (selectedTag != null)
                {
                    DiscordUser user = DBContext.Users.FirstOrDefault(x => x.Id.ToString() == selectedTag.OwnerId);
                    if (user == null)
                    {
                        await ReplyAsync("", embed : EmbedService.MakeFailFeedbackEmbed("You are not the owner of that!"));

                        return;
                    }
                    EmbedBuilder embedBuilder = new EmbedBuilder();
                    embedBuilder.WithAuthor(x =>
                    {
                        x.Name    = user.Username;
                        x.IconUrl = user.AvatarUrl;
                    });
                    embedBuilder.WithTimestamp(selectedTag.CreatedBy);
                    EmbedService.BuildFeedbackEmbed(embedBuilder);
                    embedBuilder.Description = "";
                    embedBuilder.AddField(x =>
                    {
                        x.Name  = name;
                        x.Value = $":notepad_spiral:{selectedTag.Content}";
                    });
                    await ReplyAsync("", embed : embedBuilder.Build());
                }
                else
                {
                    await ReplyAsync("", embed : EmbedService.MakeFailFeedbackEmbed("There's no tag on this channel with that name."));
                }
            }
        }