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}")); }
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; }
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.")); } } }
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.")); } } }
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; } }
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.")); } } }