public new async Task <ResultMessage <ArticleViewModel> > Insert(ArticleViewModel article)//Method Hidding { //TODO: Normalde DTO dan gelmesi gerekiyor verinin...(Dto Refactoring yapılması gerek.) ResultMessage <ArticleViewModel> resultMessage = new ResultMessage <ArticleViewModel>(); var durum = await Get(p => p.Slug == article.Slug); if (durum == null) { article.CreatedAt = DateTime.Now; article.UpdatedAt = DateTime.Now; var articleDoa = _mapper.Map <Article>(article); var insertedTags = _tagServices.GetQueryable(p => article.Tags.Contains(p.TagId)).Select(p => p.TagId).ToList(); // Eklenmiş taglar olunca direk hataya düşüyor. Ondan eklenmiş tagları buluyoruz. Onları ArticleFavorites tablosuna ekleticez. var notInsertedTags = article.Tags.Where(p => !insertedTags.Contains(p)).ToList(); if (notInsertedTags.Count > 0) { foreach (var item in notInsertedTags) { articleDoa.ArticleTags.Add(new ArticleTag { Tag = new Tag { TagId = item }, Article = articleDoa }); } } var sonuc = await base.Insert(articleDoa); if (sonuc > 0) { List <ArticleTag> articleTags = new List <ArticleTag>(); insertedTags.ForEach(p => { articleTags.Add(new ArticleTag { TagId = p, ArticleId = articleDoa.Id }); }); await _articleTagsServices.InsertAll(articleTags); resultMessage.Result = article; } else { resultMessage.Errors = new ErrorMessageObj(ErrorMessageCode.ArticleCouldNotInserted, "Makale eklenemedi."); } } else { resultMessage.Errors = new ErrorMessageObj(ErrorMessageCode.ArticleSlugAlreadyExists, "İlgili makalenin kısa url(slug) başka makale tarafından kullanılmakta."); } return(resultMessage); }