public Settings CreateModel(SettingsViewModel settings) { var set = new Settings { CompanyName = settings.CompanyName, ArticleCountPerCategoryOnHomePage = settings.ArticleCountPerCategoryOnHomePage, DisqusShortName = settings.DisqusShortName, JumbotronText = settings.JumbotronText, ShareThisPublicKey = settings.ShareThisPublicKey, TagLine = settings.TagLine, IndexFileExtensions = settings.IndexFileExtensions, ArticlePrefix = settings.ArticlePrefix, AnalyticsAccount = settings.AnalyticsAccount, Author = KBVaultHelperFunctions.UserAsKbUser(HttpContext.Current.User).Id, BackupPath = settings.BackupPath, ShowTotalArticleCountOnFrontPage = settings.ShowTotalArticleCountOnFrontPage, LockSite = settings.LockSite }; if (!string.IsNullOrEmpty(set.BackupPath)) { if (!set.BackupPath.EndsWith("\\") && !set.BackupPath.StartsWith("~")) { set.BackupPath += "\\"; } if (!set.BackupPath.EndsWith("/") && set.BackupPath.StartsWith("~")) { set.BackupPath += "/"; } } return(set); }
public JsonResult Remove(string id) { JsonOperationResponse result = new JsonOperationResponse(); result.Successful = false; try { var parts = id.Split(new[] { "|" }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length == 2) { var attachmentHash = parts[0]; var attachmentId = parts[1]; Attachment at = new Attachment() { Id = Convert.ToInt64(attachmentId) }; at.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id; KbVaultAttachmentHelper.RemoveAttachment(attachmentHash, KBVaultHelperFunctions.UserAsKbUser(User).Id); KbVaultLuceneHelper.RemoveAttachmentFromIndex(at); result.Successful = true; return(Json(result)); } throw new ArgumentOutOfRangeException("Invalid file hash"); } catch (Exception ex) { Log.Error(ex); result.ErrorMessage = ex.Message; return(Json(result)); } }
public ActionResult Edit(CategoryViewModel model) { try { if (ModelState.IsValid) { try { var parentId = model.ParentId > 0 ? model.ParentId : (int?)null; var author = KBVaultHelperFunctions.UserAsKbUser(User).Id; var category = CategoryFactory.CreateCategory(model.Name, model.IsHot, model.SefName, model.Icon, author, parentId); category.Id = model.Id; CategoryRepository.Update(category); ShowOperationMessage(UIResources.CategoryPageEditSuccessMessage); return(RedirectToAction("List", new { id = model.Id, page = 1 })); } catch (ArgumentNullException) { ModelState.AddModelError("Category Not Found", ErrorMessages.CategoryNotFound); } } return(View(model)); } catch (Exception ex) { Log.Error(ex); ModelState.AddModelError("Exception", ex.Message); return(View(model)); } }
public ActionResult Create([Bind(Exclude = "Category.Name")] ArticleViewModel model) { try { ModelState.Remove("Category.Name"); if (ModelState.IsValid) { var article = ArticleFactory.CreateArticleFromViewModel(model, KBVaultHelperFunctions.UserAsKbUser(User).Id); var id = ArticleRepository.Add(article, model.Tags); if (article.IsDraft == 0) { KbVaultLuceneHelper.AddArticleToIndex(article); } ShowOperationMessage(UIResources.ArticleCreatePageCreateSuccessMessage); return(RedirectToAction("Edit", "Article", new { id = article.Id })); } return(View(model)); } catch (Exception ex) { Log.Error(ex); ModelState.AddModelError("Exception", ex.Message); return(View(model)); } }
public JsonResult Edit(string pk, string value) { var result = new JsonOperationResponse(); try { using (var db = new KbVaultContext()) { var tagId = Convert.ToInt64(pk); var tag = db.Tags.First(t => t.Id == tagId); if (tag != null) { tag.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id; tag.Name = value; db.SaveChanges(); result.Successful = true; return(Json(result)); } } return(null); } catch (Exception ex) { Log.Error(ex); result.Successful = false; result.ErrorMessage = ex.Message; return(Json(result)); } }
public JsonResult Remove(int id = -1) { JsonOperationResponse result = new JsonOperationResponse(); result.Successful = false; try { using (var db = new KbVaultContext()) { Tag tag = db.Tags.First(t => t.Id == id); if (tag != null) { tag.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id; db.Tags.Remove(tag); TagRepository.RemoveTagFromArticles(id); db.SaveChanges(); result.Successful = true; result.ErrorMessage = UIResources.TagListRemoveSuccessful; } else { result.ErrorMessage = ErrorMessages.TagNotFound; } } return(Json(result)); } catch (Exception ex) { Log.Error(ex); result.ErrorMessage = ex.Message; return(Json(result)); } }
public JsonResult Remove(int id) { var result = new JsonOperationResponse(); try { using (var db = new KbVaultContext()) { var currentUserId = KBVaultHelperFunctions.UserAsKbUser(User).Id; var queryParams = new SqlParameter[] { new SqlParameter("ArticleId", id) }; db.Database.ExecuteSqlCommand("Delete from ArticleTag Where ArticleId = @ArticleId", queryParams); var article = db.Articles.Single(a => a.Id == id); if (article == null) { throw new Exception(ErrorMessages.ArticleNotFound); } while (article.Attachments.Count > 0) { var a = article.Attachments.First(); KbVaultAttachmentHelper.RemoveLocalAttachmentFile(a); KbVaultLuceneHelper.RemoveAttachmentFromIndex(a); article.Attachments.Remove(a); /* * Also remove the attachment from db.attachments collection * * http://stackoverflow.com/questions/17723626/entity-framework-remove-vs-deleteobject * * If the relationship is required (the FK doesn't allow NULL values) and the relationship is not * identifying (which means that the foreign key is not part of the child's (composite) primary key) * you have to either add the child to another parent or you have to explicitly delete the child * (with DeleteObject then). If you don't do any of these a referential constraint is * violated and EF will throw an exception when you call SaveChanges - * the infamous "The relationship could not be changed because one or more of the foreign-key properties * is non-nullable" exception or similar. */ db.Attachments.Remove(a); } article.Author = currentUserId; KbVaultLuceneHelper.RemoveArticleFromIndex(article); db.Articles.Remove(article); db.SaveChanges(); result.Data = id; result.Successful = true; return(Json(result)); } } catch (Exception ex) { Log.Error(ex); result.Successful = false; result.ErrorMessage = ex.Message; return(Json(result)); } }
public ActionResult Index(SettingsViewModel model) { try { if (ModelState.IsValid) { using (var db = new KbVaultContext()) { Settings set = db.Settings.FirstOrDefault(); if (set != null) { db.Settings.Remove(set); } set = new Settings(); set.CompanyName = model.CompanyName; set.ArticleCountPerCategoryOnHomePage = model.ArticleCountPerCategoryOnHomePage; set.DisqusShortName = model.DisqusShortName; set.JumbotronText = model.JumbotronText; set.ShareThisPublicKey = model.ShareThisPublicKey; set.TagLine = model.TagLine; set.IndexFileExtensions = model.IndexFileExtensions; set.ArticlePrefix = model.ArticlePrefix; set.AnalyticsAccount = model.AnalyticsAccount; set.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id; set.BackupPath = model.BackupPath; set.ShowTotalArticleCountOnFrontPage = model.ShowTotalArticleCountOnFrontPage; if (!string.IsNullOrEmpty(set.BackupPath)) { if (!set.BackupPath.EndsWith("\\") && !set.BackupPath.StartsWith("~")) { set.BackupPath += "\\"; } if (!set.BackupPath.EndsWith("/") && set.BackupPath.StartsWith("~")) { set.BackupPath += "/"; } } ConfigurationManager.AppSettings["Theme"] = model.SelectedTheme; db.Settings.Add(set); db.SaveChanges(); ShowOperationMessage(UIResources.SettingsPageSaveSuccessfull); } } model.Themes.AddRange(Directory.EnumerateDirectories(Server.MapPath("~/Views/Themes")).Select(e => Path.GetFileName(e)).ToList()); return(View(model)); } catch (Exception ex) { Log.Error(ex); ShowErrorMessage(ex.Message); return(RedirectToAction("Index", "Error")); } }
public JsonResult Remove(int id) { JsonOperationResponse result = new JsonOperationResponse(); try { if (CategoryRepository.Get(id) != null) { if (!CategoryRepository.HasArticleInCategory(id)) { var cat = new Category() { Author = KBVaultHelperFunctions.UserAsKbUser(User).Id, Id = id }; if (CategoryRepository.Remove(cat)) { result.Successful = true; result.ErrorMessage = String.Format(ErrorMessages.CategoryRemovedSuccessfully, cat.Name); UrlHelper url = new UrlHelper(Request.RequestContext); cat = CategoryRepository.GetFirstCategory(); result.Data = cat == null ? url.Action("Index", "Dashboard") : url.Action("List", "Category", new { id = cat.Id, page = 1 }); } } else { result.Successful = false; result.ErrorMessage = ErrorMessages.CategoryIsNotEmpty; } } else { result.Successful = false; result.ErrorMessage = ErrorMessages.CategoryNotFound; } return(Json(result)); } catch (Exception ex) { Log.Error(ex); result.Successful = false; result.ErrorMessage = ex.Message; return(Json(result)); } }
public JsonResult Upload() { var result = new JsonOperationResponse { Successful = false }; try { if (Request.Params["ArticleId"] == null) { result.ErrorMessage = ErrorMessages.FileUploadArticleNotFound; } else if (Request.Files.Count == 1) { var articleId = Convert.ToInt64(Request.Params["ArticleId"]); var attachedFile = Request.Files[0]; var attachment = KbVaultAttachmentHelper.SaveAttachment(articleId, attachedFile, KBVaultHelperFunctions.UserAsKbUser(User).Id); attachment.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id; result.Successful = true; result.Data = new AttachmentViewModel(attachment); using (var db = new KbVaultContext()) { var sets = db.Settings.FirstOrDefault(); if (sets != null) { var extensions = sets.IndexFileExtensions.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (extensions.FirstOrDefault(a => a.ToLowerInvariant() == attachment.Extension.ToLowerInvariant()) != null) { KbVaultLuceneHelper.AddAttachmentToIndex(attachment); } } } } else { result.ErrorMessage = ErrorMessages.FileUploadTooManyFiles; } return(Json(result)); } catch (Exception ex) { log.Error(ex); result.ErrorMessage = ex.Message; return(Json(result)); } }
public ActionResult Edit([Bind(Exclude = "Category.Name,Category.SefName")] ArticleViewModel model) { try { ModelState.Remove("Category.Name"); ModelState.Remove("Category.SefName"); if (ModelState.IsValid) { if (model.PublishEndDate < model.PublishStartDate) { ModelState.AddModelError("PublishDate", ErrorMessages.PublishEndDateMustBeGreater); } else { var article = ArticleRepository.Get(model.Id); article.CategoryId = model.Category.Id; article.IsDraft = model.IsDraft ? 1 : 0; article.PublishEndDate = model.PublishEndDate; article.PublishStartDate = model.PublishStartDate; article.Edited = DateTime.Now; article.Title = model.Title; article.Content = model.Content; article.Author = KBVaultHelperFunctions.UserAsKbUser(User).Id; article.SefName = model.SefName; ArticleRepository.Update(article, model.Tags); if (article.IsDraft == 0) { KbVaultLuceneHelper.AddArticleToIndex(article); } else { KbVaultLuceneHelper.RemoveArticleFromIndex(article); } ShowOperationMessage(UIResources.ArticleCreatePageEditSuccessMessage); } } } catch (Exception ex) { Log.Error(ex); ModelState.AddModelError("Exception", ex.Message); } return(View("Create", model)); }
public ActionResult Create([Bind(Exclude = "Id")] KbUserViewModel model) { try { if (ModelState.IsValid) { using (var db = new KbVaultContext()) { KbUser usr = KbVaultAuthHelper.CreateUser(model.UserName, model.OldPassword, model.Email, model.Role, KBVaultHelperFunctions.UserAsKbUser(User).Id); usr = db.KbUsers.FirstOrDefault(u => u.Id == usr.Id); if (usr != null) { usr.LastName = model.LastName; usr.Name = model.Name; db.SaveChanges(); } return(RedirectToAction("Users")); } } return(View(model)); } catch (Exception ex) { Log.Error(ex); AddGlobalException(ex); return(RedirectToAction("Index", "Error")); } }
public ActionResult Create(CategoryViewModel model) { try { if (ModelState.IsValid) { var parentId = model.ParentId > 0 ? model.ParentId : (int?)null; var category = CategoryFactory.CreateCategory(model.Name, model.IsHot, model.SefName, model.Icon, KBVaultHelperFunctions.UserAsKbUser(User).Id, parentId); var catId = CategoryRepository.Add(category); ShowOperationMessage(@UIResources.CategoryPageCreateSuccessMessage); return(RedirectToAction("List", new { id = catId, page = 1 })); } return(View(model)); } catch (Exception ex) { Log.Error(ex); return(RedirectToAction("Index", "Error")); } }