Esempio n. 1
0
        public virtual IList <BlogPostTag> TümTaglarıAl(int siteId, bool gizliOlanıGöster = false)
        {
            var blogPostTagları = new List <BlogPostTag>();

            var blogPostları = TümBloglerıAl(siteId: siteId, gizliOlanıGöster: gizliOlanıGöster);

            foreach (var blogPost in blogPostları)
            {
                var taglar = blogPost.TaglarıBirleştir();
                foreach (string tag in taglar)
                {
                    var bulunanBlogPostTagları = blogPostTagları.Find(bpt => bpt.Adı.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
                    if (bulunanBlogPostTagları == null)
                    {
                        bulunanBlogPostTagları = new BlogPostTag
                        {
                            Adı            = tag,
                            BlogPostSayısı = 1
                        };
                        blogPostTagları.Add(bulunanBlogPostTagları);
                    }
                    else
                    {
                        bulunanBlogPostTagları.BlogPostSayısı++;
                    }
                }
            }

            return(blogPostTagları);
        }
Esempio n. 2
0
        /// <summary>
        /// Gets all blog post tags
        /// </summary>
        /// <param name="storeId">The store identifier; pass "" to load all records</param>
        /// <param name="languageId">Language identifier. 0 if you want to get all news</param>
        /// <param name="showHidden">A value indicating whether to show hidden records</param>
        /// <returns>Blog post tags</returns>
        public virtual async Task <IList <BlogPostTag> > GetAllBlogPostTags(string storeId, bool showHidden = false)
        {
            var blogPostTags = new List <BlogPostTag>();

            var blogPosts = await GetAllBlogPosts(storeId : storeId, showHidden : showHidden);

            foreach (var blogPost in blogPosts)
            {
                var tags = blogPost.ParseTags();
                foreach (string tag in tags)
                {
                    var foundBlogPostTag = blogPostTags.Find(bpt => bpt.Name.Equals(tag, StringComparison.OrdinalIgnoreCase));
                    if (foundBlogPostTag == null)
                    {
                        foundBlogPostTag = new BlogPostTag
                        {
                            Name          = tag,
                            BlogPostCount = 1
                        };
                        blogPostTags.Add(foundBlogPostTag);
                    }
                    else
                    {
                        foundBlogPostTag.BlogPostCount++;
                    }
                }
            }

            return(blogPostTags);
        }
Esempio n. 3
0
        public IList <BlogPostTag> GetAllBlogPostTags(bool showHidden = false)
        {
            var blogPostTags = new List <BlogPostTag>();

            var blogPosts = GetAllBlogPosts(showHidden: showHidden);

            foreach (var blogPost in blogPosts.Items)
            {
                var tags = blogPost.ParseTags();
                foreach (string tag in tags)
                {
                    var foundBlogPostTag = blogPostTags.Find(bpt => bpt.Name.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
                    if (foundBlogPostTag == null)
                    {
                        foundBlogPostTag = new BlogPostTag
                        {
                            Name          = tag,
                            BlogPostCount = 1
                        };
                        blogPostTags.Add(foundBlogPostTag);
                    }
                    else
                    {
                        foundBlogPostTag.BlogPostCount++;
                    }
                }
            }

            return(blogPostTags);
        }
Esempio n. 4
0
        // TODO : Development to be made in the next phase
        /// <summary>
        /// Gets all blog post tags
        /// </summary>
        /// <param name="storeId">The store identifier; pass 0 to load all records</param>
        /// <param name="languageId">Language identifier. 0 if you want to get all blog posts</param>
        /// <param name="showHidden">A value indicating whether to show hidden records</param>
        /// <returns>Blog post tags</returns>
        public virtual IList <BlogPostTag> GetAllBlogPostTags(int storeId, int languageId, bool showHidden = false)
        {
            var blogPostTags = new List <BlogPostTag>();

            var blogPosts = GetAllBlogPosts(showHidden: showHidden);

            foreach (var blogPost in blogPosts)
            {
                var tags = ParseTags(blogPost);
                foreach (var tag in tags)
                {
                    var foundBlogPostTag = blogPostTags.Find(bpt => bpt.Name.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
                    if (foundBlogPostTag == null)
                    {
                        foundBlogPostTag = new BlogPostTag
                        {
                            Name          = tag,
                            BlogPostCount = 1
                        };
                        blogPostTags.Add(foundBlogPostTag);
                    }
                    else
                    {
                        foundBlogPostTag.BlogPostCount++;
                    }
                }
            }

            var cacheKey = string.Format("blog.tags");

            return(_cacheManager.Get(cacheKey, () => blogPostTags));
        }
Esempio n. 5
0
        /// <summary>
        /// Gets all blog post tags
        /// </summary>
        /// <param name="storeId">The store identifier; pass 0 to load all records</param>
        /// <param name="showHidden">A value indicating whether to show hidden records</param>
        /// <returns>Blog post tags</returns>
        public virtual IList <BlogPostTag> GetAllBlogPostTags(int customerId, bool showHidden = false)
        {
            List <BlogPostTag> blogPostTags = new List <BlogPostTag>();

            IPagedList <BlogPost> blogPosts = GetAllBlogPosts(customerId: customerId, showHidden: showHidden);

            foreach (BlogPost blogPost in blogPosts)
            {
                IList <string> tags = this.ParseTags(blogPost);
                foreach (string tag in tags)
                {
                    BlogPostTag foundBlogPostTag = blogPostTags.Find(bpt => bpt.Name.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
                    if (foundBlogPostTag == null)
                    {
                        foundBlogPostTag = new BlogPostTag
                        {
                            Name          = tag,
                            BlogPostCount = 1
                        };
                        blogPostTags.Add(foundBlogPostTag);
                    }
                    else
                    {
                        foundBlogPostTag.BlogPostCount++;
                    }
                }
            }

            return(blogPostTags);
        }
Esempio n. 6
0
        /// <summary>
        /// Gets all blog post tags
        /// </summary>
        /// <param name="languageId">Language identifier. 0 if you want to get all news</param>
        /// <returns>Blog post tags</returns>
        public virtual IList <BlogPostTag> GetAllBlogPostTags(int languageId)
        {
            var blogPostTags = new List <BlogPostTag>();

            var blogPosts = GetAllBlogPosts(languageId, null, null, 0, int.MaxValue);

            foreach (var blogPost in blogPosts)
            {
                var tags = blogPost.ParseTags();
                foreach (string tag in tags)
                {
                    var foundBlogPostTag = blogPostTags.Find(bpt => bpt.Name.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
                    if (foundBlogPostTag == null)
                    {
                        foundBlogPostTag = new BlogPostTag()
                        {
                            Name          = tag,
                            BlogPostCount = 1
                        };
                        blogPostTags.Add(foundBlogPostTag);
                    }
                    else
                    {
                        foundBlogPostTag.BlogPostCount++;
                    }
                }
            }

            return(blogPostTags);
        }
Esempio n. 7
0
        /// <summary>
        /// Gets all blog post tags
        /// </summary>
        /// <param name="storeId">The store identifier; pass 0 to load all records</param>
        /// <param name="languageId">Language identifier. 0 if you want to get all blog posts</param>
        /// <param name="showHidden">A value indicating whether to show hidden records</param>
        /// <returns>Blog post tags</returns>
        public virtual IList <BlogPostTag> GetAllBlogPostTags(int storeId, int languageId, bool showHidden = false)
        {
            var blogPostTags = new List <BlogPostTag>();

            var blogPosts = GetAllBlogPosts(storeId: storeId, languageId: languageId, showHidden: showHidden);

            foreach (var blogPost in blogPosts)
            {
                var tags = this.ParseTags(blogPost);
                foreach (var tag in tags)
                {
                    var foundBlogPostTag = blogPostTags.Find(bpt => bpt.Name.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
                    if (foundBlogPostTag == null)
                    {
                        foundBlogPostTag = new BlogPostTag
                        {
                            Name          = tag,
                            BlogPostCount = 1
                        };
                        blogPostTags.Add(foundBlogPostTag);
                    }
                    else
                    {
                        foundBlogPostTag.BlogPostCount++;
                    }
                }
            }

            return(blogPostTags);
        }
Esempio n. 8
0
        public virtual void UpdateBlogPostTags(BlogPost blogPost, string[] blogPostTags)
        {
            if (blogPost == null)
            {
                throw new ArgumentNullException(nameof(blogPost));
            }

            var existingBlogPostTags = blogPost.BlogPostTags.ToList();
            var blogPostTagsToRemove = new List <BlogPostTag>();

            //筛选出需要删除的标签
            foreach (var existingBlogPostTag in existingBlogPostTags)
            {
                var found = false;
                foreach (var newProductTag in blogPostTags)
                {
                    if (existingBlogPostTag.Name.Equals(newProductTag, StringComparison.InvariantCultureIgnoreCase))
                    {
                        found = true;
                        break;
                    }
                }
                if (!found)
                {
                    blogPostTagsToRemove.Add(existingBlogPostTag);
                }
            }

            //删除标签
            foreach (var blogPostTag in blogPostTagsToRemove)
            {
                blogPost.BlogPostTags.Remove(blogPostTag);
                _blogService.UpdateBlogPost(blogPost);
            }

            //新增标签
            foreach (var tagName in blogPostTags)
            {
                BlogPostTag blogPostTag;
                var         blogPostTag2 = GetBlogPostTagByName(tagName);
                if (blogPostTag2 == null)
                {
                    blogPostTag = new BlogPostTag
                    {
                        Name = tagName
                    };
                    InsertBlogPostTag(blogPostTag);
                }
                else
                {
                    blogPostTag = blogPostTag2;
                }
                if (!blogPost.BlogPostTagExists(blogPostTag.Id))
                {
                    blogPost.BlogPostTags.Add(blogPostTag);
                    _blogService.UpdateBlogPost(blogPost);
                }
            }
        }
        public void ShouldContainOneItem()
        {
            var item = new BlogPostTag("Test");

            _collection.Add(item);

            Assert.Equal(1, _collection.Count);
        }
Esempio n. 10
0
        /// <summary>
        /// Gets blog post SE (search engine) name
        /// </summary>
        /// <param name="blogPost">Blog post</param>
        /// <returns>Blog post SE (search engine) name</returns>
        public static string GetSeName(this BlogPostTag blogPostTag)
        {
            if (blogPostTag == null)
            {
                throw new ArgumentNullException("blogPostTag");
            }
            string seName = GetSeName(blogPostTag.Name);

            return(seName);
        }
Esempio n. 11
0
 protected virtual void UpdateLocales(BlogPostTag blogPostTag, BlogPostTagModel model)
 {
     foreach (var localized in model.Locales)
     {
         _localizedEntityService.SaveLocalizedValue(blogPostTag,
                                                    x => x.Name,
                                                    localized.Name,
                                                    localized.LanguageId);
     }
 }
        public void ShouldNotInsertDuplicateItem()
        {
            var item          = new BlogPostTag("TEST");
            var itemDuplicate = new BlogPostTag("test");

            _collection.Add(item);
            _collection.Add(itemDuplicate);

            Assert.Equal(1, _collection.Count);
        }
        public async Task <BlogPostVM> Update(BlogPostUpdateVM request, string slug)
        {
            using var db = new SQLiteDBContext();

            var blogPost = await db.BlogPosts.Include(x => x.Tags).FirstOrDefaultAsync(bp => bp.Slug == slug) ?? throw new NotFoundException(slug);

            #region IfTitleHasChanged

            if (request.Title != blogPost.Title && !string.IsNullOrEmpty(request.Title))
            {
                var tags = new List <BlogPostTag>(blogPost.Tags);
                //Delete all referenced entities
                foreach (var item in blogPost.Tags)
                {
                    db.BlogPostTags.Remove(item);
                }
                await db.SaveChangesAsync();

                blogPost.Tags = null;
                db.BlogPosts.Remove(blogPost);
                await db.SaveChangesAsync();

                //Add the post again with all the tags
                SlugHelper helper = new SlugHelper();
                blogPost.Slug = helper.GenerateSlug(request.Title);

                await db.BlogPosts.AddAsync(blogPost);

                await db.SaveChangesAsync();

                foreach (var tag in tags)
                {
                    var postTag = new BlogPostTag()
                    {
                        TagId = tag.TagId, BlogPostId = blogPost.Slug
                    };
                    await db.BlogPostTags.AddAsync(postTag);
                }
                await db.SaveChangesAsync();

                blogPost.Tags = tags;
            }
            #endregion

            blogPost.UpdatedAt = DateTime.UtcNow;
            mapper.Map(request, blogPost);

            db.BlogPosts.Update(blogPost);
            await db.SaveChangesAsync();

            var response = mapper.Map <BlogPostVM>(blogPost);

            return(response);
        }
Esempio n. 14
0
        public BlogPostTag MapToBlogPostTag(BlogPostTagEntity model)
        {
            var result = new BlogPostTag()
            {
                ID          = model.Id,
                Name        = model.Data.Name,
                Description = model.Data.Description
            };

            return(result);
        }
        //// GET: BlogPostTag
        //public ActionResult Index()
        //{
        //    return View(db.BlogPostTags.ToList());
        //}

        //// GET: BlogPostTag/Details/5
        //public ActionResult Details(int? id)
        //{
        //    if (id == null)
        //    {
        //        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        //    }
        //    BlogPostTag blogPostTag = db.BlogPostTags.Find(id);
        //    if (blogPostTag == null)
        //    {
        //        return HttpNotFound();
        //    }
        //    return View(blogPostTag);
        //}

        // GET: BlogPostTag/Create
        public ActionResult Create(string id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            BlogPostTag blogPostTag = new BlogPostTag();

            blogPostTag.BlogId = id;
            return(View(blogPostTag));
        }
Esempio n. 16
0
        public async Task <BlogPostViewModelResponse> AddPost(BlogPostTagViewModelRequest post)
        {
            Models.BlogPost blogPost = new Models.BlogPost();
            blogPost.Tags = new List <BlogPostTag>();
            Tag tag = new Tag();
            BlogPostViewModelResponse response = new BlogPostViewModelResponse();
            BlogPostTag blogPostTag            = new BlogPostTag();

            tag.BlogPosts = new List <BlogPostTag>();

            if (db != null)
            {
                //get generated slug
                string slug = Helpers.GenerateSlug.ToUrlSlug(post.BlogPost.Title);
                //blogPost.Id - automatic generated
                blogPost.Slug        = response.Slug = slug;
                blogPost.Title       = response.Title = post.BlogPost.Title;
                blogPost.Description = response.Description = post.BlogPost.Description;
                blogPost.Body        = response.Body = post.BlogPost.Body;
                blogPost.CreatedAt   = response.CreatedAt = DateTime.Now;
                blogPost.UpdatedAt   = response.UpdatedAt = DateTime.Now;
                response.tagList     = post.BlogPost.Tags;

                //checking tags
                List <string> list = await GetTags();

                //records exist in new list /not in db list
                List <string> dList = post.BlogPost.Tags.Except(list).ToList();
                //add new records in Tag table
                for (int i = 0; i < dList.Count; i++)
                {
                    string name = dList.ElementAt(i);
                    tag.Name = name;


                    blogPostTag.BlogPost = blogPost;
                    blogPostTag.Tag      = tag;
                    blogPostTag.BlogPost.Tags.Add(blogPostTag);
                    //db.SaveChanges();
                }
                await db.Tags.AddAsync(tag);

                await db.BlogPosts.AddAsync(blogPost);

                await db.BlogPostTag.AddAsync(blogPostTag);

                await db.SaveChangesAsync();

                return(response);
            }
            return(response);
        }
        public async Task <BlogPostVM> Insert(BlogPostAddVM request)
        {
            using var db = new SQLiteDBContext();

            var result = mapper.Map <BlogPost>(request);

            SlugHelper helper = new SlugHelper();

            result.Slug = helper.GenerateSlug(result.Title);

            result.CreatedAt = DateTime.UtcNow;
            await db.BlogPosts.AddAsync(result);

            await db.SaveChangesAsync();

            #region MappingTagsToDB
            //If tags are added check if they exist in db, if not save them
            //Add BlogPostTags middle table elements and save them to db
            string[] tagList = null;
            if (request.TagList != null && request.TagList.Length > 0)
            {
                int tagCount = request.TagList.Length;
                tagList = new string[tagCount];

                for (int i = 0; i < tagCount; i++)
                {
                    tagList[i] = request.TagList[i];
                    // If the Tag is not in the database persist it
                    if (await db.Tags.FindAsync(request.TagList[i]) == null)
                    {
                        await tagService.Insert(new Tag()
                        {
                            Name = request.TagList[i]
                        });
                    }

                    //Add tags to post and save to db
                    BlogPostTag temp = new BlogPostTag()
                    {
                        TagId = request.TagList[i], BlogPostId = result.Slug
                    };
                    await db.BlogPostTags.AddAsync(temp);
                }
                await db.SaveChangesAsync();
            }
            #endregion

            var response = mapper.Map <BlogPostVM>(result);
            response.TagList = tagList;

            return(response);
        }
Esempio n. 18
0
        public virtual void InsertBlogPostTag(BlogPostTag blogPostTag)
        {
            if (blogPostTag == null)
            {
                throw new ArgumentNullException(nameof(blogPostTag));
            }

            _blogPostTagRepository.Insert(blogPostTag);

            _cacheManager.RemoveByPattern(BLOGPOSTTAG_PATTERN_KEY);

            _eventPublisher.EntityInserted(blogPostTag);
        }
        public void ShouldPreserveIdsCorrectly()
        {
            var currentItem = new BlogPostTag("Test");

            SetId(currentItem, 1);
            _collection.Add(currentItem);

            var newItem = new[] { new BlogPostTag("Test") };

            SetId(newItem.First(), 2);

            _collection.Update(newItem);

            Assert.Equal(1, _collection.First().Id);
        }
Esempio n. 20
0
        public static BlogPostTag[] SeedData()
        {
            var blogPostTags = new BlogPostTag[]
            {
                new BlogPostTag()
                {
                    BlogPostId = 1,
                    TagId      = 1
                },
                new BlogPostTag()
                {
                    BlogPostId = 1,
                    TagId      = 2
                }
            };


            return(blogPostTags);
        }
        public async Task <ActionResult> Create([Bind(Include = "BlogPostTagId,BlogId,Tag,TaggedUser,TaggedDateTime")] BlogPostTag blogPostTag)
        {
            BlogPost blogPost = await DocumentRepository <BlogPost> .GetItemAsync(blogPostTag.BlogId);

            if (ModelState.IsValid)
            {
                blogPostTag.TaggedUser     = User.Identity.Name;
                blogPostTag.TaggedDateTime = DateTime.Now;

                if (blogPost.Tags == null)
                {
                    blogPost.Tags = new List <BlogPostTag>();
                }
                blogPost.Tags.Add(blogPostTag);

                await DocumentRepository <BlogPost> .UpdateItemAsync(blogPost.BlogId, blogPost);
            }
            return(RedirectToAction("Details", "BlogPost", new { id = blogPost.BlogId }));
        }
Esempio n. 22
0
        public async Task Create(int id, string name, int blogId)
        {
            ServiceValidator.ServiceValidator.IsLessThanOne(id, "Id can't be less then 1.");

            ServiceValidator.ServiceValidator.IsStringValid(name, "Tag name can't be null or white space.");


            var newTag = new Tag()
            {
                Name       = name,
                CreatedOn  = this.dateTimeProvider.Now(),
                ModifiedOn = this.dateTimeProvider.Now()
            };

            ServiceValidator.ServiceValidator.IsNull(newTag, "Object creation fails.");

            try
            {
                var createdTag = await this.tagAddReturnRepository.Add(newTag);

                ServiceValidator.ServiceValidator.IsNull(createdTag, "Tag Object creation fails.");
                ServiceValidator.ServiceValidator.IsLessThanOne(createdTag.Id, "Id can't be less then 1.");

                var blogPostTag = new BlogPostTag()
                {
                    BlogPostId = id,
                    TagId      = createdTag.Id
                };

                ServiceValidator.ServiceValidator.IsNull(blogPostTag, "Object creation fails.");

                await this.blogPostTagRepository.Add(blogPostTag);
            }
            catch (DbUpdateException ex)
            {
                throw new DbUpdateException($"Db Update Exception : {ex.Message} : {ex.InnerException.Message}", ex.InnerException);
            }
            catch (Exception ex)
            {
                throw new InvalidOperationException("Can't Create Tag.");
            }
        }
Esempio n. 23
0
        public PartialViewResult create(BlogPostTagVm model)
        {
            model.BlogPostTagList = _entities.BlogPostTags.ToList();
            if (!ModelState.IsValid)
            {
                TempData["ErrorMsg"] = "Please enter tag text";
                return(PartialView("_create_partial", model));
            }

            BlogPostTag tag = new BlogPostTag();

            tag.TagName = model.TagText;
            _entities.BlogPostTags.Add(tag);
            _entities.SaveChanges();
            TempData["SuccessMsg"] = "Tag Created Successfully";

            model.BlogPostTagList = _entities.BlogPostTags.ToList();

            return(PartialView("_create_partial", model));
        }
Esempio n. 24
0
        public async Task <BlogPostViewModelResponse> UpdatePost(string slug, BlogPostTagViewModelRequest model)
        {
            BlogPostViewModelResponse response = new BlogPostViewModelResponse();

            Models.BlogPost blog = new Models.BlogPost();
            blog.Tags = new List <BlogPostTag>();
            if (db != null)
            {
                BlogPostTag foundPost = db.BlogPostTag
                                        .AsNoTracking()
                                        .Include(p => p.BlogPost)
                                        .Include(p => p.Tag)
                                        .Where(p => p.BlogPost.Slug == slug).FirstOrDefault();

                if (!String.IsNullOrEmpty(model.BlogPost.Title) && model.BlogPost.Title != foundPost.BlogPost.Title)
                {
                    blog.Title = response.Title = model.BlogPost.Title;
                    blog.Slug  = response.Slug = GenerateSlug.ToUrlSlug(blog.Title);
                }
                blog.Id                      = foundPost.BlogPostId;
                blog.CreatedAt               = foundPost.BlogPost.CreatedAt;
                blog.UpdatedAt               = response.UpdatedAt = DateTime.Now;
                blog.Description             = response.Description
                                             = !String.IsNullOrEmpty(model.BlogPost.Description) ? model.BlogPost.Description : foundPost.BlogPost.Description;
                blog.Body                    = response.Body
                                             = !String.IsNullOrEmpty(model.BlogPost.Body) ? model.BlogPost.Body : foundPost.BlogPost.Body;
                if (model.BlogPost.Tags != null)
                {
                    response.tagList = model.BlogPost.Tags;
                }
                else
                {
                    blog.Tags        = foundPost.BlogPost.Tags;
                    response.tagList = ConvertToListString(foundPost.BlogPost.Tags);
                }

                db.BlogPosts.Update(blog);
                await db.SaveChangesAsync();
            }
            return(response);
        }
        protected void BindData()
        {
            //get all tags
            int maxItems     = 15;
            var blogPostTags = this.BlogService.GetAllBlogPostTags(NopContext.Current.WorkingLanguage.LanguageId);
            List <BlogPostTag> cloudItems = new List <BlogPostTag>();

            for (int i = 0; i < blogPostTags.Count; i++)
            {
                BlogPostTag blogTag = blogPostTags[i];
                if (i < maxItems)
                {
                    cloudItems.Add(blogTag);
                }
            }

            //calculate weights
            _mean = 0;
            List <double> itemWeights = new List <double>();

            foreach (var blogTag in cloudItems)
            {
                itemWeights.Add(blogTag.BlogPostCount);
            }
            _stdDev = StdDev(itemWeights, out _mean);

            //sorting
            cloudItems.Sort(new BlogTagComparer());

            //binding
            if (cloudItems.Count > 0)
            {
                rptrTagCloud.DataSource = cloudItems;
                rptrTagCloud.DataBind();
            }
            else
            {
                this.Visible = false;
            }
        }
Esempio n. 26
0
        /// <summary>
        /// Gets all blog post tags
        /// </summary>
        /// <param name="storeId">The store identifier; pass 0 to load all records</param>
        /// <param name="languageId">Language identifier. 0 if you want to get all blog posts</param>
        /// <param name="showHidden">A value indicating whether to show hidden records</param>
        /// <returns>Blog post tags</returns>
        public virtual IList <BlogPostTag> GetAllBlogPostTags(int storeId, int languageId, bool showHidden = false)
        {
            var cacheKey = _staticCacheManager.PrepareKeyForDefaultCache(NopBlogsDefaults.BlogTagsCacheKey, languageId, storeId, showHidden);

            var blogPostTags = _staticCacheManager.Get(cacheKey, () =>
            {
                var rezBlogPostTags = new List <BlogPostTag>();

                var blogPosts = GetAllBlogPosts(storeId, languageId, showHidden: showHidden);

                foreach (var blogPost in blogPosts)
                {
                    var tags = ParseTags(blogPost);
                    foreach (var tag in tags)
                    {
                        var foundBlogPostTag = rezBlogPostTags.Find(bpt =>
                                                                    bpt.Name.Equals(tag, StringComparison.InvariantCultureIgnoreCase));
                        if (foundBlogPostTag == null)
                        {
                            foundBlogPostTag = new BlogPostTag
                            {
                                Name          = tag,
                                BlogPostCount = 1
                            };
                            rezBlogPostTags.Add(foundBlogPostTag);
                        }
                        else
                        {
                            foundBlogPostTag.BlogPostCount++;
                        }
                    }
                }

                return(rezBlogPostTags);
            });

            return(blogPostTags);
        }
Esempio n. 27
0
 public async Task <string> DeletePost(string slug)
 {
     if (db != null)
     {
         Models.BlogPost post = db.BlogPosts.Include(p => p.Tags).Where(p => p.Slug == slug).FirstOrDefault();
         if (post != null)
         {
             //create BlogPostTag object for delete (relationship with BlogPost table
             BlogPostTag blogPostTag = new BlogPostTag();
             //get BlogPostId from BlogPostTag table, include all Tags
             blogPostTag = db.BlogPostTag
                           .Include(b => b.BlogPost)
                           .Include(b => b.Tag)
                           .Where(b => b.BlogPostId == post.Id).FirstOrDefault();
             if (blogPostTag != null)
             {
                 db.BlogPostTag.Remove(blogPostTag);
                 db.BlogPosts.Remove(post);
                 db.SaveChanges();
             }
         }
     }
     return("Record successfully deleted!");
 }
Esempio n. 28
0
        /// <summary>
        /// Gets blog post SE (search engine) name
        /// </summary>
        /// <param name="blogPost">Blog post</param>
        /// <returns>Blog post SE (search engine) name</returns>
        public static string GetSeName(this BlogPostTag blogPostTag)
        {
            Guard.NotNull(blogPostTag, nameof(blogPostTag));

            return(GetSeName(blogPostTag.Name));
        }
 private static void SetId(BlogPostTag item, int id) =>
 item.GetType().GetProperty("Id").SetValue(item, id);
Esempio n. 30
0
        public BlogPostCustom AddBlogPost(CreateBlogPostCustom addBlogPost)
        {
            if (addBlogPost != null)
            {
                string makeSlugFromTitle = null;
                makeSlugFromTitle = SlugRefactoring.Refactor(addBlogPost.blogPost.title);

                //if slug already exists in database return an empty object
                if (con.BlogPosts.Where(x => x.Slug == makeSlugFromTitle).Any())
                {
                    return(new BlogPostCustom("Object with this slug already exists"));
                }
                var model = new BlogPost()
                {
                    Slug        = makeSlugFromTitle,
                    Title       = addBlogPost.blogPost.title,
                    Description = addBlogPost.blogPost.description,
                    Body        = addBlogPost.blogPost.body,
                    CreatedAt   = DateTime.Now,
                    UpdatetAt   = DateTime.Now
                };
                con.Add(model);
                con.SaveChanges();

                //if new object has tags
                if (addBlogPost.blogPost.tagList != null)
                {
                    foreach (var tag in addBlogPost.blogPost.tagList)
                    {
                        var newTag = new Tag
                        {
                            TagName = tag
                        };
                        //if tag doesn't exist in database, add a new tag in a tag table
                        if (!con.Tags.Where(x => x.TagName == tag).Any())
                        {
                            con.Add(newTag);
                            con.SaveChanges();
                        }

                        // if exists, then find id and add in many-to-many table (BlogPostTag)
                        else
                        {
                            newTag.Id = con.Tags.Where(x => x.TagName == tag).FirstOrDefault().Id;
                        }
                        var blogtag = new BlogPostTag();
                        blogtag.BlogPostId = model.Id;
                        blogtag.TagId      = newTag.Id;
                        con.Add(blogtag);
                        con.SaveChanges();
                    }
                }

                //custom object for json return
                var bpc = new BlogPostCustom.BPCblog()
                {
                    title       = addBlogPost.blogPost.title,
                    description = addBlogPost.blogPost.description,
                    body        = addBlogPost.blogPost.body,
                    slug        = makeSlugFromTitle,
                    createdAt   = DateTime.Now,
                    updatedAt   = DateTime.Now,
                    tagList     = addBlogPost.blogPost.tagList
                };
                var bpcM = new BlogPostCustom()
                {
                    blogPost = bpc
                };
                return(bpcM);
            }

            return(new BlogPostCustom("Object provided as a parameter is null"));
        }