public string createAuditLogArticleAction(Article article, string action, List <string> modified_fields = null) { var _article = ArticleDbContext.getInstance().findArticleByIDNoTracking(article.ArticleID); if (_article == null) { return(null); } var account = SessionPersister.account; if (account == null) { return(null); } var notificationAction = EmailNotificationHelper.ParseAction(action); EmailNotificationHelper.NotifyAllOnActionOfBaseArticle("Article", _article, notificationAction); AuditLog item = new AuditLog(); item.accountID = account.AccountID; item.account = account.Username; item.articleID = _article.ArticleID; item.article = _article.Name; item.categoryID = _article.categoryID; item.category = _article.category != null?_article.category.GetName() : null; item.action = action; manipulateRemarks(item, modified_fields); return(createAuditLog(item)); }
public string delete(Category category, bool isRecursive) { using (var db = new BaseDbContext()) { var articles = ArticleDbContext.getInstance().findArticlesByCategoryID(category.ItemID); var contentPages = ContentPageDbContext.getInstance().findArticlesByCategoryID(category.ItemID); if (articles.Count > 0 || contentPages.Count > 0) { return("Could not delete this category when it is linked with any article / content page."); } if (isRecursive) { // var children = findCategorysByParentID(category.parentItemID); /// for (int i = children.Count() - 1; i >= 0; i--) // { // delete(children.ElementAt(i), true); // } } AuditLogDbContext.getInstance().createAuditLogCategoryAction(category, AuditLogDbContext.ACTION_DELETE); db.Entry(category).State = EntityState.Deleted; db.SaveChanges(); return(null); } }
protected string addArticleToPublished(Article article) { using (var db = new BaseDbContext()) { var _article = ArticlePublished.makeNewArticleByCloningContentAndVersion(article); _article.isPublished = true; _article.datePublished = DateTimeExtensions.GetServerTime(); _article.datePublishStart = article.datePublishStart; _article.datePublishEnd = article.datePublishEnd; _article.publishedBy = SessionPersister.account.AccountID; db.articlePublishedDb.Add(_article); var articles = ArticleDbContext.getInstance().findAllLocaleArticlesByBaseArticleAndVersion(article); foreach (var __article in articles) { var ___article = ArticlePublished.makeNewArticleByCloningContentAndVersion(__article); ___article.isPublished = true; ___article.datePublished = DateTimeExtensions.GetServerTime(); ___article.datePublishStart = article.datePublishStart; ___article.datePublishEnd = article.datePublishEnd; ___article.publishedBy = SessionPersister.account.AccountID; db.articlePublishedDb.Add(___article); } db.SaveChanges(); return(null); } }
public static ArticleDbContext getInstance() { if (articleDbContext == null) { articleDbContext = new ArticleDbContext(); } return(articleDbContext); }
public string tryUnpublishArticle(Article article, bool allLocales) { using (var db = new BaseDbContext()) { var _article = article; if (_article == null) { return("Item not found"); } if (!_article.isApproved) { return("Item not approved"); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } deletePublishedArticlesByBaseArticle(article); var local = db.articleDb .Local .FirstOrDefault(f => f.BaseArticleID == _article.BaseArticleID); if (local != null) { db.Entry(local).State = EntityState.Detached; } db.Entry(_article).State = EntityState.Modified; _article.isPublished = false; _article.datePublished = null; _article.publishedBy = null; db.SaveChanges(); if (allLocales) { var _localeArticles = ArticleDbContext.getInstance().findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang, db); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _a.isPublished = false; _a.datePublished = null; _a.publishedBy = null; db.SaveChanges(); } } AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_UNPUBLISH); return(null); } }
// ARTICLE PUBLISHER ONLY #region "Publish / Unpublish" public string tryPublishArticle(Article article, bool allLocales) { using (var db = new BaseDbContext()) { var _article = article; if (_article == null) { return("Item not found"); } if (!_article.isApproved) { return("Item not approved"); } var error = AccountGroupBaseArticlePermissionHelper.tryCatchAccountGroupPermissionError(_article); if (error != null) { return(error); } deletePublishedArticlesByBaseArticle(article); addArticleToPublished(article); var local = db.articleDb .Local .FirstOrDefault(f => f.BaseArticleID == _article.BaseArticleID); if (local != null) { db.Entry(local).State = EntityState.Detached; } } using (var db = new BaseDbContext()) { var _article = article; db.Entry(_article).State = EntityState.Modified; _article.isPublished = true; _article.datePublished = DateTimeExtensions.GetServerTime(); _article.datePublishStart = article.datePublishStart; _article.datePublishEnd = article.datePublishEnd; _article.publishedBy = SessionPersister.account.AccountID; if (allLocales) { var _localeArticles = ArticleDbContext.getInstance().findAllLocaleArticlesByBaseArticleAndVersion(article, article.Lang, db); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _a.isPublished = true; _a.datePublished = DateTimeExtensions.GetServerTime(); _a.datePublishStart = article.datePublishStart; _a.datePublishEnd = article.datePublishEnd; _a.publishedBy = SessionPersister.account.AccountID; } } var allArticles = ArticleDbContext.getInstance().findArticlesGroupByBaseVersionApproved(_article.BaseArticleID, "en", db); foreach (Article a in allArticles) { if (_article.ArticleID == a.ArticleID) { continue; } db.Entry(a).State = EntityState.Modified; a.isPublished = false; a.datePublished = null; a.publishedBy = null; if (allLocales) { var _localeArticles = ArticleDbContext.getInstance().findAllLocaleArticlesByBaseArticleAndVersion(a, a.Lang, db); foreach (var _a in _localeArticles) { db.Entry(_a).State = EntityState.Modified; _a.isPublished = false; _a.datePublished = null; _a.publishedBy = null; } } } db.SaveChanges(); AuditLogDbContext.getInstance().createAuditLogArticleAction(article, AuditLogDbContext.ACTION_PUBLISH); return(null); } }