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); }
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); }
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); }
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; }
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; }
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; }