public override async Task Add(ArticleEditorViewModel vm)
        {
            var articleEditor = new ArticleEditorMapping()
            {
                ArticleId = vm.ArticleId,
                UserId    = vm.UserId
            };

            _ctx.ArticleEditorMappings.Add(articleEditor);
            await _ctx.SaveChangesAsync();
        }
예제 #2
0
        public override async Task Edit(ArticleViewModel vm, ClaimsPrincipal user)
        {
            bool isEsdited = false;
            var  article   = await _ctx.Articles.FirstOrDefaultAsync(x => x.Id == vm.Id);

            var userId = _userManager.GetUserId(user);

            if (article == null)
            {
                throw new ArgumentException($"An Article with the given ID = '{vm.Id}' was not found ");
            }

            var isAuthorized = await _authorizationService.AuthorizeAsync(user, article, ArticleOperations.Update);

            if (!isAuthorized.Succeeded)
            {
                throw new ArgumentException("The currently logged in user is not allowed to edit that article.");
            }
            if (vm.Title != null && vm.Title != article.Title)
            {
                article.Title = vm.Title;
                isEsdited     = true;
            }
            if (vm.ArticleText != null && vm.ArticleText != article.ArticleText)
            {
                article.ArticleText = vm.ArticleText;
                isEsdited           = true;
            }
            if (vm.Image != null && vm.Image != article.Image)
            {
                article.Image = vm.Image;
                isEsdited     = true;
            }
            if (isEsdited)
            {
                article.EditedDate         = DateTime.Now;
                _ctx.Attach(article).State = EntityState.Modified;
                ArticleEditorMapping articleEditorMapping = new ArticleEditorMapping()
                {
                    ArticleId = article.Id,
                    UserId    = userId
                };
                _ctx.Add(articleEditorMapping);
            }
            await _ctx.SaveChangesAsync();
        }