public async Task <IActionResult> CreateNewArticle(ArticlesView av) { byte[] imageData = null; Article artical = new Article { Name = av.Name, CategoryId = av.CategoryId, ShortDescription = av.ShortDescription, Description = av.Description, Date = av.Date }; if (av.Image != null) { using (var binaryReader = new System.IO.BinaryReader(av.Image.OpenReadStream())) { imageData = binaryReader.ReadBytes((int)av.Image.Length); } artical.HeroImage = imageData; } db.Add(artical); // adding artical await db.SaveChangesAsync(); foreach (var tagId in av.Tags) { var tag = db.Tags.Find(tagId); ArticleTag articleTag = new ArticleTag { Article = artical, Tag = tag }; db.Add(articleTag); } await db.SaveChangesAsync(); //adding tags return(RedirectToAction("AdminView")); }
public void AddTag(int articleId, int tagId) { Article article = _articleRepository.Find(articleId); if (article == null) { throw new ArgumentException("Invalid article id."); } Tag tag = _tagRepository.Find(tagId); if (tag == null) { throw new ArgumentException("Invalid tag id."); } bool isExisted = _articleTagRelationRepository.FindAll() .Any(t => t.ArticleId == article.Id && t.TagId == tag.Id); if (isExisted) { throw new InvalidOperationException("Relation existed."); } var relateion = new ArticleTag { ArticleId = article.Id, TagId = tag.Id, KBId = article.KBId, SiteId = article.SiteId }; _articleTagRelationRepository.Insert(relateion); }
public int Add(DtoArticleParams param) { Article article = new Article(); article.CategoryId = param.CategoryId; article.Title = param.Title; article.Body = param.Body; article.Introduction = param.Introduction; article.CreatedDate = DateTime.Now; article.Img = param.Img; article.Type = param.Type; dc.Articles.Add(article); List <ArticleTag> tags = new List <ArticleTag> (); foreach (var item in param.TagIds) { var articleTag = new ArticleTag(); articleTag.TagId = item; articleTag.ArticleId = article.Id; tags.Add(articleTag); } dc.ArticleTags.AddRange(tags); dc.SaveChanges(); return(article.Id); }
public void Update(DtoArticleParams param) { var article = base.Get(param.Id); article.CategoryId = param.CategoryId; article.Title = param.Title; article.Body = param.Body; article.Introduction = param.Introduction; article.Type = param.Type; if (param.Img != null) { article.Img = param.Img; } dc.ArticleTags.RemoveRange(dc.ArticleTags.Where(c => c.ArticleId == article.Id)); List <ArticleTag> tags = new List <ArticleTag> (); foreach (var item in param.TagIds) { var articleTag = new ArticleTag(); articleTag.TagId = item; articleTag.ArticleId = article.Id; tags.Add(articleTag); } dc.ArticleTags.AddRange(tags); dc.SaveChanges(); }
public async void UpdateTags(string tags, string listName) { string[] tagList = tags.Split(','); foreach (string tag in tagList) { string trimmedTag = tag.Trim(); if (!String.IsNullOrWhiteSpace(trimmedTag)) { string logicalKey = listName + "-" + trimmedTag; ArticleTag articleTag = await tagRepository.GetDocumentByKey(logicalKey); if (null == articleTag) { articleTag = new ArticleTag(); articleTag.LogicalKey = logicalKey; articleTag.TagCount = 1; articleTag.Tag = trimmedTag; } else { articleTag.TagCount += 1; } articleTag.ListName = listName; articleTag.TimeToLive = 3600 * 24 * 320; // Tags not used longer than one year can be deleted await tagRepository.UpsertDocument(articleTag); } } }
public ActionResult Add(string Name) { AjaxResponse <ArticleTag> obj = new AjaxResponse <ArticleTag>(); if (string.IsNullOrEmpty(Name)) { obj.ErrorMessage = "分类名称不能为空"; return(Json(obj)); } if (Name.Length > 15) { obj.ErrorMessage = "分类名称不能超过15个字"; return(Json(obj)); } //保证Name唯一,先查询一下是不是有这个Name var temp = ArticleTagService.PageLoad(a => a.Name == Name).FirstOrDefault(); if (temp != null) { obj.ErrorMessage = "该分类已经存在!"; return(Json(obj)); } ArticleTag ArticleTag = new ArticleTag { Name = Name, Status = StatusEnum.Normal }; obj.IsSuccess = ArticleTagService.AddModel(ArticleTag); return(Json(obj)); }
public async Task <IActionResult> Edit(long id, [Bind("Id,TagId,ArticleId,AuthorId")] ArticleTag articleTag) { if (id != articleTag.Id) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(articleTag); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ArticleTagExists(articleTag.Id)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } ViewData["ArticleId"] = new SelectList(_context.Articles, "Id", "SefName", articleTag.ArticleId); ViewData["AuthorId"] = new SelectList(_context.Users, "Id", "Id", articleTag.AuthorId); ViewData["TagId"] = new SelectList(_context.Tags, "Id", "Name", articleTag.TagId); return(View(articleTag)); }
public void TestIf_TagsForArticle_ReturnCorrectTagCount() { this.context.Articles.Add(new Article { Id = 1 }); this.context.SaveChanges(); var tag = new Tag { Id = 2 }; this.context.Tags.Add(tag); this.context.SaveChanges(); Assert.Single(tagService.TagsForArticle(1)); var newTag = new ArticleTag { TagId = 2, ArticleId = 1 }; this.context.ArticleTags.Add(newTag); this.context.SaveChanges(); Assert.Empty(tagService.TagsForArticle(1)); }
public void Add() { var tag = new ArticleTag() { Description = "Test data", Name = "Test", ModifiedById = null, CompanyId = 1, Resources = new List <ArticleTagResource> { new ArticleTagResource { Culture = Culture.English, Value = "Test" }, new ArticleTagResource { Culture = Culture.Spanish, Value = "Prueba" }, new ArticleTagResource { Culture = Culture.Hindi, Value = "pareekshan" } } }; var result = _tagService.Add(tag); Assert.IsNotNull(result); }
public void AddArticle(Article article, IEnumerable <string> tags) { article.ArticleTag = new List <ArticleTag>(); foreach (var tagName in tags) { var x = context.Tag.Where(z => z.Name.ToLower() == tagName.ToLower()).SingleOrDefault(); if (x == null) { var tag = new Tag(); tag.Name = tagName; var atag = new ArticleTag(); atag.Tag = tag; article.ArticleTag.Add(atag); context.Tag.Add(tag); } else { var atag = new ArticleTag(); atag.Tag = x; article.ArticleTag.Add(atag); context.Tag.Add(x); } } context.Article.Add(article); context.SaveChanges(); }
public async Task DeleteArticleTag() { var articleItem = new Article { Title = "xUnit test", SalesPrice = 3.5f, UnitId = 20573, TaxId = 21281, PurchasePrice = 3.4f }; var articleResult = await SystemUnderTest.CreateAsync(articleItem); var tag = new ArticleTag { ArticleId = articleResult.Id, Name = "Xunit test" }; var tagResult = await SystemUnderTest.CreateTagAsync(tag); await SystemUnderTest.DeleteTagAsync(tagResult.Id); Assert.Null(await SystemUnderTest.GetTagByIdAsync(tagResult.Id)); await SystemUnderTest.DeleteAsync(articleResult.Id); }
public async Task Can_Fetch_Many_To_Many_Without_Include() { // arrange var context = _fixture.GetService <AppDbContext>(); var article = _articleFaker.Generate(); var tag = _tagFaker.Generate(); var articleTag = new ArticleTag { Article = article, Tag = tag }; context.ArticleTags.Add(articleTag); await context.SaveChangesAsync(); var route = $"/api/v1/articles/{article.Id}"; // act var response = await _fixture.Client.GetAsync(route); // assert var body = await response.Content.ReadAsStringAsync(); Assert.True(HttpStatusCode.OK == response.StatusCode, $"{route} returned {response.StatusCode} status code with payload: {body}"); var document = JsonConvert.DeserializeObject <Document>(body); Assert.Null(document.Data.Relationships["tags"].ManyData); }
public void AddArticleTags(int articleId, string articleTags) { if (string.IsNullOrEmpty(articleTags)) { return; } var oldTags = _context.ArticleTags.Where(t => t.ArticleId == articleId).ToList(); foreach (var tag in oldTags) { _context.ArticleTags.Remove(tag); _context.SaveChanges(); } string[] tagsArr = articleTags.Trim().Split('-'); foreach (var tag in tagsArr) { var tagObj = new ArticleTag(); tagObj.ArticleId = articleId; tagObj.Title = tag.Trim(); _context.ArticleTags.Add(tagObj); _context.SaveChanges(); } }
public async Task Can_Fetch_Many_To_Many_Without_Include() { // Arrange var context = _fixture.GetRequiredService <AppDbContext>(); var article = _articleFaker.Generate(); var tag = _tagFaker.Generate(); var articleTag = new ArticleTag { Article = article, Tag = tag }; context.ArticleTags.Add(articleTag); await context.SaveChangesAsync(); var route = $"/api/v1/articles/{article.Id}"; // @TODO - Use fixture var builder = WebHost.CreateDefaultBuilder() .UseStartup <TestStartup>(); var server = new TestServer(builder); var client = server.CreateClient(); // Act var response = await client.GetAsync(route); // Assert var body = await response.Content.ReadAsStringAsync(); Assert.True(HttpStatusCode.OK == response.StatusCode, $"{route} returned {response.StatusCode} status code with payload: {body}"); var document = JsonConvert.DeserializeObject <Document>(body); Assert.Null(document.SingleData.Relationships["tags"].ManyData); }
private void UpsertTags(Article a, IDataContext ctx) { int i = 0; var atrep = ctx.GetRepository <ArticleTag>(); var trep = ctx.GetRepository <Tag>(); a.Tags.ForEach(t => { if (t.TagID <= 0) { // Add new tags if needed t.ModuleId = a.ModuleId; trep.Insert(t); } var dbat = atrep.Find("WHERE ArticleID=@0 AND TagID=@1", a.ArticleID, t.TagID).FirstOrDefault(); if (dbat == null) { // add new tag links var at = new ArticleTag() { ArticleID = a.ArticleID, TagID = t.TagID }; atrep.Insert(at); } i += 1; }); //Remove linked tags no longer in collection var dbatags = atrep.Find("WHERE ArticleID=@0", a.ArticleID).ToList(); dbatags.ForEach(t => { if (a.Tags.Where(tg => tg.TagID == t.TagID).Count() == 0) { atrep.Delete(t); } }); }
/// <summary> /// check which article tags need to be added /// </summary> static List <ArticleTag> GetArticleTagsToCreate(Article article, IEnumerable <string> articleTagList) { var articleTagsToCreate = new List <ArticleTag>(); foreach (var tag in articleTagList) { var at = article.ArticleTags.FirstOrDefault(t => t.TagId == tag); if (at == null) { at = new ArticleTag() { Article = article, ArticleId = article.ArticleId, Tag = new Tag() { TagId = tag }, TagId = tag }; articleTagsToCreate.Add(at); } } return(articleTagsToCreate); }
public ArticleTag GetByID(int _articleTagId) { ArticleTagDAC _articleTagComponent = new ArticleTagDAC(); IDataReader reader = _articleTagComponent.GetByIDArticleTag(_articleTagId); ArticleTag _articleTag = null; while (reader.Read()) { _articleTag = new ArticleTag(); if (reader["ArticleTagId"] != DBNull.Value) { _articleTag.ArticleTagId = Convert.ToInt32(reader["ArticleTagId"]); } if (reader["ArticleId"] != DBNull.Value) { _articleTag.ArticleId = Convert.ToInt32(reader["ArticleId"]); } if (reader["Name"] != DBNull.Value) { _articleTag.Name = Convert.ToString(reader["Name"]); } if (reader["LanguageId"] != DBNull.Value) { _articleTag.LanguageId = Convert.ToInt32(reader["LanguageId"]); } if (reader["PostDate"] != DBNull.Value) { _articleTag.PostDate = Convert.ToDateTime(reader["PostDate"]); } _articleTag.NewRecord = false; } reader.Close(); return(_articleTag); }
public async Task <IActionResult> PostArticle(NewArticleVM vm) { if (ModelState.IsValid) { string currentUserId = await OnGetSesstion(); var article = _mapper.Map <Article>(vm); article.CreateTime = DateTime.Now; article.Status = "active"; article.OriginalId = 0; article.UserId = currentUserId; _context.Article.Add(article); _context.SaveChanges(); string[] tagArray = vm.Tags.Split(','); foreach (string tag in tagArray) { var tagFromDB = _context.SkillTag.Where(x => x.SkillName == tag.ToLower()).SingleOrDefault(); if (tagFromDB == null) { SkillTag sktag = new SkillTag { ApprovedStatus = false, SkillName = tag.ToLower(), TimeApproved = DateTime.Now, UserId = currentUserId }; _context.SkillTag.Add(sktag); _context.SaveChanges(); ArticleTag articleTag = new ArticleTag { TagId = sktag.SkillTagId, ArticleId = article.Id }; _context.ArticleTag.Add(articleTag); _context.SaveChanges(); } else { ArticleTag articleTag = new ArticleTag { TagId = tagFromDB.SkillTagId, ArticleId = article.Id }; _context.ArticleTag.Add(articleTag); _context.SaveChanges(); } }//Foreach for tags ArticleCategory articleCategory = new ArticleCategory { ArticleId = article.Id, CategoryId = vm.CategoryId }; _context.ArticleCategory.Add(articleCategory); article.OriginalId = article.Id; _context.SaveChanges(); return(RedirectToAction($"ArticleSingle", new { id = article.Id, title = article.Title })); } return(View(vm)); }
public static ArticleTag ToArticleTag(DataRow dr) { var at = new ArticleTag(); at.ArticleId = dr.ToIntOrZero("ArticleId"); at.TagName = dr.ToStringOrNull("TagName"); return(at); }
public static DalArticleTag ToDalArticleTag(this ArticleTag e) { return(new DalArticleTag { ArticleId = e.ArticleId, TagId = e.TagId }); }
public static ArticleTagDto ToDto(this ArticleTag tag) { return(new ArticleTagDto() { Id = tag.Id, Text = tag.Text }); }
public async Task <IActionResult> Post( int articleId, int tagId, [FromQuery(Name = "token")] string token) { // 先检查Token、文章、tag是否存在且有效 // 再检查Token拥有者和文章作者是否一人 ModelResult <ArticleTag> result = TokenUtils.CheckToken <ArticleTag>(token, _context); if (result != null) { return(BadRequest(result)); } Session sessionResult = await _context.Sessions .FirstOrDefaultAsync(s => s.SessionToken == token); Article articleResult = await _context.Articles .FirstOrDefaultAsync(a => a.ArticleId == articleId); Tag tagResult = await _context.Tags .FirstOrDefaultAsync(t => t.TagId == tagId); if (tagResult == null || articleResult == null) { result = new ModelResult <ArticleTag>(404, null, "Article or Tag Not Exists"); return(BadRequest(result)); } if (sessionResult.SessionUserId != articleResult.UserId) { result = new ModelResult <ArticleTag>(403, null, "You Cannot Add Tag for Others' Article"); return(BadRequest(result)); } ArticleTag articleTagResult = await _context.ArticleTags .FirstOrDefaultAsync(at => at.ArticleId == articleId && at.TagId == tagId); if (articleTagResult != null) { result = new ModelResult <ArticleTag>(405, articleTagResult, "Article Tag Exists"); return(BadRequest(result)); } ArticleTag articleTag = new ArticleTag { ArticleId = articleResult.ArticleId, TagId = tagResult.TagId }; _context.ArticleTags.Add(articleTag); _context.SaveChanges(); result = new ModelResult <ArticleTag>(201, null, "Tag Added"); return(Ok(result)); }
public ArticleTagPersonal(ArticleTag _articleTag, int _rating) { ArticleId = _articleTag.ArticleId; Article = _articleTag.Article; TagId = _articleTag.TagId; Tag = _articleTag.Tag; Rating = _rating; }
/// <summary> /// Update article tags /// </summary> /// <param name="article">Article for update</param> /// <param name="articleTags">Article tags</param> public virtual void UpdateArticleTags(Article article, string[] articleTags) { if (article == null) { throw new ArgumentNullException("article"); } //article tags var existingArticleTags = article.ArticleTags.ToList(); var articleTagsToRemove = new List <ArticleTag>(); foreach (var existingArticleTag in existingArticleTags) { var found = false; foreach (var newArticleTag in articleTags) { if (existingArticleTag.Name.Equals(newArticleTag, StringComparison.InvariantCultureIgnoreCase)) { found = true; break; } } if (!found) { articleTagsToRemove.Add(existingArticleTag); } } foreach (var articleTag in articleTagsToRemove) { article.ArticleTags.Remove(articleTag); _articleService.UpdateArticle(article); } foreach (var articleTagName in articleTags) { ArticleTag articleTag; var articleTag2 = GetArticleTagByName(articleTagName); if (articleTag2 == null) { //add new article tag articleTag = new ArticleTag { Name = articleTagName }; InsertArticleTag(articleTag); } else { articleTag = articleTag2; } if (!article.ArticleTagExists(articleTag.Id)) { article.ArticleTags.Add(articleTag); _articleService.UpdateArticle(article); } } }
public void Delete(int ticketId, string name) { ArticleTag articleTag = _ctx.ArticleTag.FirstOrDefault(q => q.TicketId == ticketId && q.Name == name); if (articleTag != null) { _ctx.ArticleTag.Remove(articleTag); _ctx.SaveChanges(); } }
/// <summary> /// Gets article tag SE (search engine) name /// </summary> /// <param name="articleTag">Article tag</param> /// <param name="languageId">Language identifier</param> /// <returns>Article tag SE (search engine) name</returns> public static string GetSeName(this ArticleTag articleTag, int languageId) { if (articleTag == null) { throw new ArgumentNullException("articleTag"); } string seName = GetSeName(articleTag.GetLocalized(x => x.Name, languageId)); return(seName); }
public ActionResult AddTag(ArticleTag tag) { using (var context = new DataContext()) { tag.Slug = tag.Name.GenerateSlug(); context.ArticleTags.Add(tag); context.SaveChanges(); } return(Redirect("/admin/tags")); }
/// <summary> /// 修改文章Tag页面 /// </summary> /// <param name="id"></param> /// <returns></returns> public ActionResult Update(int Id = 0) { ArticleTag model = ArticleTagService.FindModel(Id); if (model == null)//查不到就让他添加(防恶意篡改ID) { return(RedirectToAction("Add")); } return(View(model)); }
private static async Task ManyToManyExplicitLinkDemoAsyn() { var context = CreateDbContext(); // Prepare data var admin = new User() { Username = "******", Email = "*****@*****.**" }; context.Users.Add(admin); var tag = new Tag() { Name = "ef" }; context.Tags.Add(tag); var blog = new Blog() { Name = "Entity Framework Core", Description = "Blog about EF", CreatedBy = admin }; context.Blogs.Add(blog); // Create a new article var article = new Article() { Title = "Eager loading in Enity Framework Core", Content = "Learn EF Eager loading", Author = admin, Blog = blog, }; // Add association var articleTag = new ArticleTag() { Article = article, Tag = tag, CreatedUtc = DateTime.UtcNow.AddMonths(-1) }; context.Articles.Add(article); context.Set <ArticleTag>().Add(articleTag); await context.SaveChangesAsync(); var tagCreatedFrom = DateTime.UtcNow.AddMonths(-2); var articleTitlesCreatedFromDate = context.Articles .Where(p => p.ArticleTags.Any(at => at.CreatedUtc >= tagCreatedFrom)) .Select(p => p.Title); foreach (var title in articleTitlesCreatedFromDate) { Console.WriteLine($"article title: {title}"); } }
public ArticleTag Add(ArticleTag articleTag) { using (var context = new PunchClockDbContext()) { articleTag.IsDeleted = false; context.ArticleTags.Add(articleTag); context.ArticleTagResources.AddRange(articleTag.Resources); context.SaveChanges(); } return(articleTag); }
public ActionResult DoUpdate(string Tags) { DataOperator dop = new DataOperator(Runtime.SqlConfig); string[] array = Tags.Split(','); List<ArticleTag> list = new List<ArticleTag>(); foreach(var item in array) { ArticleTag tag = new ArticleTag(); tag.TagName = item; tag.TagTitle = item; if (dop.SelectSingle(tag) == null) dop.Update<ArticleTag>(tag); } return Redirect("/Admin/Success.do"); }