public static ArticleModel MapToDataModel(Domain.ArticleAggregate.Article domainModel, ArticleModel target = null)
            {
                if (target == null)
                {
                    target = new ArticleModel();
                }

                target.Id          = domainModel.Id;
                target.Title       = domainModel.Title;
                target.Content     = domainModel.Content;
                target.PublishTime = domainModel.PublishTime;
                target.Thumbnail   = ImageReferenceModel.FromDomainModel(domainModel.Thumbnail);
                target.IsPublished = domainModel.IsPublished;

                target.ArticleTags.Clear();
                foreach (int tagId in domainModel.TagIds)
                {
                    target.ArticleTags.Add(new ArticleTagModel
                    {
                        Article   = target,
                        ArticleId = target.Id,
                        TagId     = tagId
                    });
                }

                return(target);
            }
        public Task UpdateAsync(Domain.ArticleAggregate.Article article)
        {
            ArticleModel target = _dbContext.ArticleModels.Local.FirstOrDefault(am => am.Id == article.Id);

            _dbContext.Entry(ArticleMapper.MapToDataModel(article, target)).State = EntityState.Modified;
            return(Task.CompletedTask);
        }
        public Task AddAsync(Domain.ArticleAggregate.Article article)
        {
            var mappedModel = ArticleMapper.MapToDataModel(article);

            _dbContext.ArticleModels.Add(mappedModel);
            article.SetId(mappedModel.Id);
            return(Task.CompletedTask);
        }
Esempio n. 4
0
        public async Task <int> Handle(CreateArticleCommand request, CancellationToken ct)
        {
            Domain.ArticleAggregate.Article article = new Domain.ArticleAggregate.Article(
                request.Title,
                request.PublishDate,
                request.Content,
                new ImageReference(request.ThumbnailLocation, request.ThumbnailAltText),
                request.TagIds,
                false
                );

            await _repository.AddAsync(article);

            await _repository.UnitOfWork.SaveEntitiesAsync(ct);

            return(article.Id);
        }
Esempio n. 5
0
        public async Task GetById_TestArticle_LoadsCorrectly()
        {
            AddTestArticleToDb();

            using (ArticleContext actContext = CreateDbContext())
            {
                ArticleRepository repo = new ArticleRepository(actContext);

                Domain.ArticleAggregate.Article domainModel = await repo.GetByIdAsync(1);

                Assert.NotNull(domainModel);
                Assert.Equal(1, domainModel.Id);
                Assert.Equal(_testArticleTitle, domainModel.Title);
                Assert.Equal(domainModel.Content, _testContent);
                Assert.Equal(_testPublishTime, domainModel.PublishTime);
                Assert.Equal(_testImageLocation, domainModel.Thumbnail.Location);
                Assert.Equal(_testImageAltText, domainModel.Thumbnail.AltText);
                Assert.Equal(_testTagIds, domainModel.TagIds);
            }
        }