public override Article CreateArticle(Category category, string owner, string name, string title, string description, string body) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { ArticleDataStore articleStore = new ArticleDataStore(transaction); if (articleStore.FindByName(name) != null) throw new ArticleNameAlreadyExistsException(name); CategoryDataStore dataStore = new CategoryDataStore(transaction); dataStore.Attach(category); Article article = new Article(category, name, owner, title, description, body); article.Author = owner; if (category.AutoApprove) article.Approved = true; articleStore.Insert(article); transaction.Commit(); return article; } }
public async Task <ActionResult <int> > AddInAsync([FromRoute] Guid id, List <CommentUpdateDto> list, [FromServices] ArticleDataStore dependStore) { var depend = await dependStore.FindAsync(id); if (depend == null) { return(NotFound("depend not exist")); } var newList = new List <Comment>(); list.ForEach(item => { var newItem = new Comment() { Article = depend }; newList.Add(newItem.Merge(item)); }); return(await _store.BatchAddAsync(newList)); }
public override FileAttachment CreateFileAttachment(Article article, string name, string contentType, byte[] contentData) { FileAttachment attachment = new FileAttachment(article, name, contentType, contentData); //Check attachment if (attachment != null) Attachment.FileHelper.CheckFile(attachment, article.Category.AttachExtensions, article.Category.AttachMaxSize); using (TransactionScope transaction = new TransactionScope(mConfiguration)) { ArticleDataStore dataStore = new ArticleDataStore(transaction); dataStore.Attach(article); FileAttachmentDataStore attachmentStore = new FileAttachmentDataStore(transaction); attachmentStore.Insert(attachment); transaction.Commit(); return attachment; } }
/// <summary> /// Update the specified article. Increment the version if required. /// </summary> /// <param name="article"></param> /// <param name="backupVersion">If true the previous article version is saved as a backup in the VersionedArticle and the current version is incremented.</param> public override void UpdateArticle(Article article, bool backupVersion) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { ArticleDataStore dataStore = new ArticleDataStore(transaction); VersionedArticle versionedArticle = null; if (backupVersion) { //Retrive the previous version (before saving the new instance) and save a versioned row Article prevVersion = dataStore.FindByKey(article.Id); if (prevVersion == null) throw new ArticleNotFoundException(article.Id); versionedArticle = new VersionedArticle(prevVersion); VersionedArticleDataStore versionedStore = new VersionedArticleDataStore(transaction); versionedStore.Insert(versionedArticle); //Increment the current article version article.IncrementVersion(); } //flag the entity to be updated and attach the entity to the db // I must use InsertOrUpdateCopy because if backupVersion = true there is already a // persistent entity in the session and I must copy the values to this instance. The Update method in this case throw an exception article = dataStore.InsertOrUpdateCopy(article); transaction.Commit(); } }
public override IList<Article> GetArticlesByOwner(Category category, string owner, ArticleStatus status) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { ArticleDataStore dataStore = new ArticleDataStore(transaction); return dataStore.FindByCategoryAndOwner(category, owner, status); } }
public override Article GetArticleByName(string name, bool throwIfNotFound) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { ArticleDataStore dataStore = new ArticleDataStore(transaction); Article article = dataStore.FindByName(name); if (article == null && throwIfNotFound) throw new ArticleNotFoundException(name); else if (article == null) return null; return article; } }
public override Article GetArticle(string id) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { ArticleDataStore dataStore = new ArticleDataStore(transaction); Article article = dataStore.FindByKey(id); if (article == null) throw new ArticleNotFoundException(id); return article; } }
public override IList<Article> FindArticles(Filter<string> categoryName, Filter<string> searchFor, Filter<string> author, Filter<string> owner, Filter<string> tag, DateTime? fromDate, DateTime? toDate, ArticleStatus status, PagingInfo paging) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { ArticleDataStore dataStore = new ArticleDataStore(transaction); return dataStore.FindByFields(categoryName, searchFor, author, owner, tag, fromDate, toDate, status, paging); } }
public override void DeleteArticle(Article article) { using (TransactionScope transaction = new TransactionScope(mConfiguration)) { ArticleDataStore dataStore = new ArticleDataStore(transaction); dataStore.Delete(article.Id); transaction.Commit(); } }