Exemple #1
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);
        }
Exemple #2
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);
        }