Example #1
0
        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"));
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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();
        }
Example #5
0
        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);
                }
            }
        }
Example #6
0
        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));
        }
Example #7
0
        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));
        }
Example #8
0
        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));
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #15
0
        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);
                }
            });
        }
Example #16
0
            /// <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);
            }
Example #17
0
        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);
        }
Example #18
0
        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));
        }
Example #19
0
        public static ArticleTag ToArticleTag(DataRow dr)
        {
            var at = new ArticleTag();

            at.ArticleId = dr.ToIntOrZero("ArticleId");
            at.TagName   = dr.ToStringOrNull("TagName");
            return(at);
        }
Example #20
0
 public static DalArticleTag ToDalArticleTag(this ArticleTag e)
 {
     return(new DalArticleTag
     {
         ArticleId = e.ArticleId,
         TagId = e.TagId
     });
 }
Example #21
0
 public static ArticleTagDto ToDto(this ArticleTag tag)
 {
     return(new ArticleTagDto()
     {
         Id = tag.Id,
         Text = tag.Text
     });
 }
Example #22
0
        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;
        }
Example #24
0
        /// <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();
            }
        }
Example #26
0
        /// <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);
        }
Example #27
0
 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"));
 }
Example #28
0
        /// <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));
        }
Example #29
0
        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}");
            }
        }
Example #30
0
 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");
 }