public IActionResult EditTemplatePost(string id, MailTemplateModel model, string action) { memoryCache?.Remove("Template_" + id); if (action == "delete") { return(EditTemplateDelete(id)); } else if (action == "send") { model.All = Request.Form.ContainsKey("All"); return(EditTemplateSend(id, model.All)); } try { model.Value.Name = model.Value.Name?.Trim(); if (model.Value.Name.Length > 64) { throw new ArgumentException(Resources.NameIsTooLong.FormatHtml(64)); } if (!model.Value.GetListNameAndTemplateName(out string listName, out string templateName) || !MailTemplate.ValidateName(listName) || !MailTemplate.ValidateName(templateName)) { throw new ArgumentException(Resources.TemplateNameInvalidChars.FormatHtml(MailTemplate.FullNameSeparator)); } using (MailDemonDatabase db = dbProvider.GetDatabase()) { if (db.Lists.FirstOrDefault(l => l.Name == listName) == null) { throw new ArgumentException(string.Format(Resources.ListNotFound, listName)); } model.Value.LastModified = DateTime.UtcNow; model.Value.Dirty = true; if (model.Value.Id == 0) { db.Templates.Add(model.Value); } else { db.Update(model.Value); } db.SaveChanges(); } TempData["Message"] = Resources.Success; return(RedirectToAction(nameof(EditTemplate), new { id = model.Value.Name })); } catch (Exception ex) { MailDemonLog.Error(ex); model.Error = true; model.Message = ex.Message; return(View(model)); } }
public IActionResult EditListPost(string id, MailListModel model, string action) { if (action == "delete") { return(EditListDelete(id)); } try { model.Value.Name = model.Value.Name?.Trim(); if (model.Value.Name.Length > 16) { throw new ArgumentException(Resources.NameIsTooLong.FormatHtml(16)); } else if (!model.Value.FromEmailAddress.TryParseEmailAddress(out _)) { throw new ArgumentException(Resources.EmailIsInvalid); } model.Value.Company = model.Value.Company?.Trim(); model.Value.Website = model.Value.Website?.Trim(); if (!MailTemplate.ValidateName(model.Value.Name)) { throw new ArgumentException(Resources.NameInvalidChars); } using (MailDemonDatabase db = dbProvider.GetDatabase()) { MailList existingList = db.Lists.FirstOrDefault(l => l.Name == model.Value.Name); if (existingList != null && (existingList.Name != model.Value.Name || model.Value.Id == 0)) { throw new ArgumentException(Resources.NameCannotChange); } if (model.Value.Id == 0) { db.Lists.Add(model.Value); } else { db.Update(model.Value); } db.SaveChanges(); } TempData["Message"] = Resources.Success; return(RedirectToAction(nameof(EditList), new { id = model.Value.Name })); } catch (Exception ex) { MailDemonLog.Error(ex); model.Error = true; model.Message = ex.Message; return(View(model)); } }