Beispiel #1
0
        public async Task <EditArticleResponse> UpdateArticleAsync(ArticleEditDto article)
        {
            var response = new EditArticleResponse();

            try
            {
                var dbArticle = await this.articleRepository.GetByIdAsync(article.ArticleId);

                if (dbArticle != null)
                {
                    var now = DateTimeOffset.Now;

                    dbArticle.Updated = now;

                    var dbArticleVersion = dbArticle.ArticleVersions.FirstOrDefault(x => x.Id == article.ArticleVersionId);

                    if (dbArticleVersion != null)
                    {
                        dbArticleVersion.Title       = article.Title;
                        dbArticleVersion.Content     = article.Content;
                        dbArticleVersion.IsPublished = article.Publish;
                        dbArticleVersion.Updated     = now;
                    }
                    else
                    {
                        dbArticle.ArticleVersions.Add(new ArticleVersion
                        {
                            LanguageId  = article.LanguageId,
                            Title       = article.Title,
                            Content     = article.Content,
                            IsPublished = article.Publish,
                            Created     = now,
                            Updated     = now
                        });
                    }

                    var update = this.articleRepository.Update(dbArticle);
                    await this.unitOfWork.CommitAsync();

                    var updatedVersion = update.ArticleVersions.First(x => x.Id == article.ArticleVersionId);
                    response.Article = new ArticleEditDto
                    {
                        Title = updatedVersion.Title
                    };

                    response.Status = StatusCode.OK;
                }
                else
                {
                    response.Status = StatusCode.NotFound;
                }
            }
            catch (Exception ex)
            {
                this.exceptionHandler.HandleException(ex);
                response.Status = StatusCode.InternalServerError;
            }

            return(response);
        }
Beispiel #2
0
        public async Task <EditArticleResponse> CreateArticleAsync(ArticleEditDto article)
        {
            var response = new EditArticleResponse();

            try
            {
                var now = DateTimeOffset.Now;

                var newArticle = new Article
                {
                    Created = now,
                    Updated = now
                };

                if (article.Publish)
                {
                    newArticle.Published = now;
                }

                newArticle.ArticleVersions.Add(new ArticleVersion
                {
                    LanguageId  = article.LanguageId,
                    Title       = article.Title,
                    Content     = article.Content,
                    IsPublished = article.Publish,
                    Created     = now,
                    Updated     = now
                });

                var add = this.articleRepository.Insert(newArticle);
                await this.unitOfWork.CommitAsync();

                var addVersion = add.ArticleVersions.First();

                response.Article = new ArticleEditDto
                {
                    ArticleId        = add.Id,
                    ArticleVersionId = addVersion.ArticleId,
                    Title            = addVersion.Title,
                    Content          = addVersion.Content
                };

                response.Status = StatusCode.OK;
            }
            catch (Exception ex)
            {
                this.exceptionHandler.HandleException(ex);
                response.Status = StatusCode.InternalServerError;
            }

            return(response);
        }
Beispiel #3
0
        public async Task <EditArticleResponse> GetEditArticleAsync(GetArticleRequest request)
        {
            var response = new EditArticleResponse();

            try
            {
                response.Article = await this.articleVersionRepository.GetSingleAsync(q => q.
                                                                                      Where(x => x.ArticleId == request.ArticleId && x.LanguageId == request.LanguageId).
                                                                                      Select(x => new ArticleEditDto
                {
                    ArticleId        = x.ArticleId,
                    ArticleVersionId = x.Id,
                    LanguageId       = x.LanguageId,
                    Title            = x.Title,
                    Content          = x.Content,
                    Publish          = x.IsPublished
                }
                                                                                             ));

                if (response.Article != null)
                {
                    response.Status = StatusCode.OK;
                }
                else
                {
                    response.Status = StatusCode.NotFound;
                }
            }
            catch (Exception ex)
            {
                this.exceptionHandler.HandleException(ex);
                response.Status = StatusCode.InternalServerError;
            }

            return(response);
        }
Beispiel #4
0
        public async Task<EditArticleResponse> UpdateArticleAsync(ArticleEditDto article)
        {
            var response = new EditArticleResponse();

            try
            {
                var dbArticle = await this.articleRepository.GetByIdAsync(article.ArticleId);
                if (dbArticle != null)
                {
                    var now = DateTimeOffset.Now;

                    dbArticle.Updated = now;

                    var dbArticleVersion = dbArticle.ArticleVersions.FirstOrDefault(x => x.Id == article.ArticleVersionId);

                    if (dbArticleVersion != null)
                    {
                        dbArticleVersion.Title = article.Title;
                        dbArticleVersion.Content = article.Content;
                        dbArticleVersion.IsPublished = article.Publish;
                        dbArticleVersion.Updated = now;
                    }
                    else
                    {
                        dbArticle.ArticleVersions.Add(new ArticleVersion
                        {
                            LanguageId = article.LanguageId,
                            Title = article.Title,
                            Content = article.Content,
                            IsPublished = article.Publish,
                            Created = now,
                            Updated = now
                        });
                    }

                    var update = this.articleRepository.Update(dbArticle);
                    await this.unitOfWork.CommitAsync();

                    var updatedVersion = update.ArticleVersions.First(x => x.Id == article.ArticleVersionId);
                    response.Article = new ArticleEditDto
                    {
                        Title = updatedVersion.Title
                    };

                    response.Status = StatusCode.OK;
                }
                else
                {
                    response.Status = StatusCode.NotFound;
                }
            }
            catch (Exception ex)
            {
                this.exceptionHandler.HandleException(ex);
                response.Status = StatusCode.InternalServerError;
            }

            return response;
        }
Beispiel #5
0
        public async Task<EditArticleResponse> CreateArticleAsync(ArticleEditDto article)
        {
            var response = new EditArticleResponse();

            try
            {
                var now = DateTimeOffset.Now;

                var newArticle = new Article
                {
                    Created = now,
                    Updated = now
                };

                if (article.Publish)
                {
                    newArticle.Published = now;
                }

                newArticle.ArticleVersions.Add(new ArticleVersion
                {
                    LanguageId = article.LanguageId,
                    Title = article.Title,
                    Content = article.Content,
                    IsPublished = article.Publish,
                    Created = now,
                    Updated = now
                });

                var add = this.articleRepository.Insert(newArticle);
                await this.unitOfWork.CommitAsync();

                var addVersion = add.ArticleVersions.First();

                response.Article = new ArticleEditDto
                {
                    ArticleId = add.Id,
                    ArticleVersionId = addVersion.ArticleId,
                    Title = addVersion.Title,
                    Content = addVersion.Content
                };

                response.Status = StatusCode.OK;
            }
            catch (Exception ex)
            {
                this.exceptionHandler.HandleException(ex);
                response.Status = StatusCode.InternalServerError;
            }

            return response;
        }
Beispiel #6
0
        public async Task<EditArticleResponse> GetEditArticleAsync(GetArticleRequest request)
        {
            var response = new EditArticleResponse();

            try
            {
                response.Article = await this.articleVersionRepository.GetSingleAsync(q => q.
                    Where(x => x.ArticleId == request.ArticleId && x.LanguageId == request.LanguageId).
                    Select(x => new ArticleEditDto
                    {
                        ArticleId = x.ArticleId,
                        ArticleVersionId = x.Id,
                        LanguageId = x.LanguageId,
                        Title = x.Title,
                        Content = x.Content,
                        Publish = x.IsPublished
                    }
                ));

                if (response.Article != null)
                {
                    response.Status = StatusCode.OK;
                }
                else
                {
                    response.Status = StatusCode.NotFound;
                }
            }
            catch (Exception ex)
            {
                this.exceptionHandler.HandleException(ex);
                response.Status = StatusCode.InternalServerError;
            }

            return response;
        }