示例#1
0
        public async Task <ActionResult <BlogPostVM> > Insert(BlogPostAddVM request)
        {
            var result = await _blogPostService.Insert(request);

            if (result == null)
            {
                return(BadRequest());
            }
            return(Ok(result));
        }
        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);
        }