public ActionResult Edit(int id, string shortName, Question question) { ViewBag.Edit = true; // Get original question in former state from the database. var dbQuestion = Current.DB.Questions.Get(id); if (this.ModelState.IsValid) { // A password is being assigned. if (question.Password.HasValue()) { // If passwords don't match. if (question.PasswordConfirm != question.Password) { this.ModelState.AddModelError("Password", "Passwords do not match."); return(View("Article", question)); } else { question.Password = Encryption.ComputerHash(question.Password, new SHA256CryptoServiceProvider(), Encoding.UTF8.GetBytes(CANNED_SALT)); } } else { question.Password = dbQuestion.Password; } // Remove password if the checkbox has been ticked. if (question.RemovePassword) { question.Password = null; } question.ShortName = URLHelpers.ToURLFragment(question.Title, 100); // Update Current.DB.Questions.Update(id, new { question.Title, question.Answer, question.ShortName, question.Password }); return(RedirectToAction("view", new { id = id, shortName = question.ShortName })); } else { return(View("Article")); } }
public ActionResult Add(Question question) { ViewBag.Edit = false; if (this.ModelState.IsValid) { // A password is being assigned. if (question.Password.HasValue()) { // If passwords don't match. if (question.PasswordConfirm != question.Password) { this.ModelState.AddModelError("Password", "Passwords do not match."); return(View("Article", question)); } else { question.Password = Encryption.ComputerHash(question.Password, new SHA256CryptoServiceProvider(), Encoding.UTF8.GetBytes(CANNED_SALT)); } } question.ShortName = URLHelpers.ToURLFragment(question.Title, 100); question.OwnerUserID = this.CurrentUser.ID; // Insert question into database. var id = Current.DB.Questions.Insert(new { question.Title, question.Answer, question.OwnerUserID, question.ShortName, question.Password }); // Increment question count for the current user. this.CurrentUser.Questions = this.CurrentUser.Questions + 1; Current.DB.Users.Update(this.CurrentUser.ID, new { this.CurrentUser.Questions }); return(RedirectToAction("view", new { id = id, shortName = question.ShortName })); } else { return(View("Article", question)); } }