コード例 #1
0
        public async Task <IResult <Article> > Create(Article article)
        {
            List <ArticleTagRelation> tempArticleRelation = new List <ArticleTagRelation>();

            if (article == null || string.IsNullOrEmpty(article.Title) || string.IsNullOrEmpty(article.SeoUrl))
            {
                return(new Result <Article>(false, Message.ModelNotValid));
            }
            article.UserId = (await _userRepository.Get()).Id;
            var userEntity = await _userRepository.Get(x => x.Id == article.UserId && !x.IsDeleted);

            if (userEntity == null)
            {
                return(new Result <Article>(false, Message.UserNotFound));
            }
            article.Id          = Guid.NewGuid();
            article.CreatedDate = DateTime.Now;
            await _articleRepository.Create(article);

            foreach (var item in article.ArticleTagRelations)
            {
                tempArticleRelation.Add(item);
            }
            foreach (var item in tempArticleRelation)
            {
                var tagmodel = new ArticleTagRelation
                {
                    Id          = Guid.NewGuid(),
                    TagId       = item.TagId,
                    ArticleId   = article.Id,
                    CreatedDate = DateTime.Now,
                    IsActive    = true
                };
                await _tagRelationRepository.Create(tagmodel);
            }
            tempArticleRelation.Clear();
            await _categoryRelationRepository.Create(new ArticleCategoryRelation { Id = Guid.NewGuid(), ArticleId = article.Id, CategoryId = article.ArticleCategoryRelations.FirstOrDefault().CategoryId, CreatedDate = DateTime.Now });

            return(new Result <Article>(true, article));
        }
コード例 #2
0
        public async Task <IActionResult> AddArticle(ArticleAddViewModel model)

        {
            //Needs to move business
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            string wwwRootPath = _webHostEnvironment.WebRootPath;
            string fileName    = Path.GetFileNameWithoutExtension(model.FileImageUrl.FileName);
            string extension   = Path.GetExtension(model.FileImageUrl.FileName);
            string path        = Path.Combine(wwwRootPath + "/uploads/", fileName + extension);

            using (var fileStream = new FileStream(path, FileMode.Create))
            {
                await model.FileImageUrl.CopyToAsync(fileStream);
            }
            model.ImageUrl = model.FileImageUrl.FileName;
            model.SeoUrl   = model.SeoUrl.ReplaceSeoUrl();
            var result = await _articleService.GetBySeoUrl(model.SeoUrl);

            if (result.Success && result.Data != null)
            {
                ModelState.AddModelError("SeoUrl", "SeoUrl is already taken");
                return(View(model));
            }

            var tags    = model.TagName.Split(",");
            var article = model.Adapt <Article>();

            for (int i = 0; i < tags.Length; i++)
            {
                var tagRelation = new ArticleTagRelation
                {
                    Id          = Guid.NewGuid(),
                    CreatedDate = DateTime.Now
                };

                var getTag = await _tagService.FindIdByName(tags[i]);

                if (getTag.Data != null)
                {
                    tagRelation.TagId = getTag.Data.Id;
                }
                else
                {
                    var tagModel = new Tag {
                        Name = tags[i], SeoUrl = tags[i].ReplaceSeoUrl(), CreatedDate = DateTime.Now, Id = Guid.NewGuid()
                    };
                    await _tagService.Create(tagModel);

                    tagRelation.Tag = new Tag
                    {
                        Id          = tagModel.Id,
                        CreatedDate = DateTime.Now,
                        Name        = tagModel.Name,
                        SeoUrl      = tagModel.SeoUrl
                    };
                    tagRelation.TagId = tagModel.Id;
                }

                article.ArticleTagRelations.Add(tagRelation);
            }
            article.ArticleCategoryRelations.Add(new ArticleCategoryRelation
            {
                Id          = Guid.NewGuid(),
                CategoryId  = model.CategoryId,
                CreatedDate = DateTime.Now
            });
            await _articleService.Create(article);

            return(RedirectToAction("Index"));
        }