public ActionResult EditEmailParsingUpdatingRule(EditUpdatingRuleForEmailModel model) { var userId = UserHelper.GetUserByEmail(User.Identity.Name).Id; if (ModelState.IsValid && IsUsersEmailParsingRule(userId, model.Id)) { var table = tablesRepository.Find(t => t.AuthorId_Id == userId && t.Name.Equals(model.UpdatingRule.Cell.TableId)); var updatingRule = emailDataParsingRulesRepository.Find(w => w.Id == model.UpdatingRule.Id); if (model.UpdatingRule.Id != 0 && updatingRule != null) { updatingRule.Expression = HttpUtility.HtmlEncode(model.UpdatingRule.Expression); updatingRule.IsRegexpExpression = model.UpdatingRule.IsRegexpExpression.Equals(CultureHelper.GetStringForCurentCulture("RegularExpression")); updatingRule.DataExploration = (int)Enum.Parse(typeof(DataExplorationEnums), model.UpdatingRule.DataExploration); updatingRule.DataExplorationExpression = HttpUtility.HtmlEncode(model.UpdatingRule.DataExplorationExpression); updatingRule.IsChanging = model.UpdatingRule.IsChanging.Equals("C"); updatingRule.ExpressionToChange = HttpUtility.HtmlEncode(model.UpdatingRule.ExpressionToChange); updatingRule.RegularExpressionToChange = HttpUtility.HtmlEncode(model.UpdatingRule.RegularExpressionToChange); updatingRule.ChangeTo = HttpUtility.HtmlEncode(model.UpdatingRule.ChangeTo); updatingRule.IsUpdatindIndex = true; updatingRule.ParsingMode = model.UpdatingRule.ParsingMode; updatingRule.ConsiderRegister = model.UpdatingRule.ConsiderRegister.Equals("C"); updatingRule.Status = model.UpdatingRule.Status; updatingRule.EmailParsingRulesModelsId_Id = model.Id; updatingRule.IsUpdatingRule = false; updatingRule.ColumnForUpdate = (int)Enum.Parse(typeof(ColumnEnums), model.UpdatingRule.ColumnForUpdate); emailDataParsingRulesRepository.Commit(); } else { emailDataParsingRulesRepository.Add(new Model.EmailDataParsingRulesModels { Expression =HttpUtility.HtmlEncode(model.UpdatingRule.Expression), IsRegexpExpression = model.UpdatingRule.IsRegexpExpression.Equals(CultureHelper.GetStringForCurentCulture("RegularExpression")), DataExploration = (int)Enum.Parse(typeof(DataExplorationEnums), model.UpdatingRule.DataExploration), DataExplorationExpression = HttpUtility.HtmlEncode(model.UpdatingRule.DataExplorationExpression), IsChanging = model.UpdatingRule.IsChanging.Equals("C"), ExpressionToChange = HttpUtility.HtmlEncode(model.UpdatingRule.ExpressionToChange), RegularExpressionToChange = HttpUtility.HtmlEncode(model.UpdatingRule.RegularExpressionToChange), ChangeTo = HttpUtility.HtmlEncode(model.UpdatingRule.ChangeTo), EmailParsingRulesModelsId_Id = model.Id, IsUpdatindIndex = true }); emailDataParsingRulesRepository.Commit(); } var rule = emailParsingRulesRepository.Find(w => w.Id == model.Id); bool isUpdatingRule = true; List<SelectListItem> saveEmail = new List<SelectListItem> { new SelectListItem {Text = "Email without attachments", Value = "0"}, new SelectListItem {Text = "Email with attachments", Value = "1"} }; if (model.SaveEmailProperties != null) { if (model.SaveEmailProperties.Count > 0) { foreach (var saveEmailProp in model.SaveEmailProperties) { var saveProp = saveEmailPropertiesRepository.Find(w => w.Id == saveEmailProp.Id); if (saveProp != null && saveProp.DefaultValue != null) { saveProp.TableId = saveEmailProp.TableId; saveProp.Worksheet = saveEmailProp.Worksheet; saveProp.Column = saveEmailProp.Column; saveProp.DefaultValue = saveEmailProp.DefaultValue; } else if (saveEmailProp.Id == 0 && saveEmailProp.DefaultValue != null) { saveEmailPropertiesRepository.Add(new Model.SaveEmailProperty() { TableId = saveEmailProp.TableId, Worksheet = saveEmailProp.Worksheet, Column = saveEmailProp.Column, DefaultValue = saveEmailProp.DefaultValue, EmailParsingRulesModelsId = saveEmailProp.EmailParsingRulesModelsId }); } } } } if (rule != null) { rule.AuthorId_Id = userId; rule.Email = HttpUtility.HtmlEncode(model.Email); rule.Subject = HttpUtility.HtmlEncode(model.Subject); rule.PlainContains = HttpUtility.HtmlEncode(model.PlainContains); rule.IsUpdatingRule = isUpdatingRule; rule.Status = Model.Enums.RuleStatusEnums.Active.ToString(); saveEmailPropertiesRepository.Commit(); emailParsingRulesRepository.Commit(); return RedirectToAction("EditEmailParsingRule", new { ruleId = rule.Id }); } } return View(); }
public ActionResult EditEmailParsingRule(long ruleId) { var userId = UserHelper.GetUserByEmail(User.Identity.Name).Id; if (IsUsersEmailParsingRule(userId, ruleId)) { var rule = emailParsingRulesRepository.Find(w => w.Id == ruleId); var user = UserHelper.GetUserByEmail(User.Identity.Name); var tables = tablesRepository.FindAll(w => w.AspNetUsers.Id.Equals(user.Id)).Select(l => l.Name).ToList(); List<SelectListItem> worksheetsList = new List<SelectListItem>(); for (int i = 0; i < 10; i++) { // worksheetsList.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() }); worksheetsList.Add(new SelectListItem { Text = Enum.GetName(typeof(WorksheetsNames), i) + " worksheet", Value = i.ToString() }); // Enum.GetName(typeof(DataExplorationEnums), updatingRule.DataExploration) } List<SelectListItem> saveEmail = new List<SelectListItem> { new SelectListItem {Text = "Email without attachments", Value = "0"}, new SelectListItem {Text = "Email with attachments", Value = "1"} }; var saveEmailProperties = saveEmailPropertiesRepository.FindAll(w => w.EmailParsingRulesModelsId == ruleId && w.SaveEmailProp != null).ToList(); if (rule != null) { if (!rule.IsUpdatingRule) { var model = new EditRuleForEmailModel { Id = rule.Id, Email = HttpUtility.HtmlDecode(rule.Email), Subject = HttpUtility.HtmlDecode(rule.Subject), PlainContains = HttpUtility.HtmlDecode(rule.PlainContains), //IsUpdatingRule = rule.IsUpdatingRule.ToString(), Name = rule.Name, Tables = tables, WorksheetsList = worksheetsList, SaveEmail = saveEmail, Status = rule.Status == null ? rule.Status = Model.Enums.RuleStatusEnums.Active.ToString() : rule.Status, SaveEmailProperties = saveEmailProperties, SaveEmailGroupItem = GetLayoutGroupForEmailParsingRule(rule.Id, tables, worksheetsList, saveEmail, rule.IsUpdatingRule, rule.CopyRuleFromPreviousOrder) }; return PartialView(model); } else { var updatingRule = rule.EmailDataParsingRulesModels.Where(c => c.EmailParsingRulesModelsId_Id == rule.Id && c.IsUpdatindIndex).FirstOrDefault(); var table = tablesRepository.Find(t => t.Id == updatingRule.TableId_Id); var updatingRuleModel = new EditRuleForDataModel(); if (updatingRule != null) { updatingRuleModel = new EditRuleForDataModel { Id = updatingRule.Id, ParentId = rule.Id, Expression = HttpUtility.HtmlDecode(updatingRule.Expression), DataExplorationExpression = HttpUtility.HtmlDecode(updatingRule.DataExplorationExpression), ExpressionToChange = HttpUtility.HtmlDecode(updatingRule.ExpressionToChange), RegularExpressionToChange = HttpUtility.HtmlDecode(updatingRule.RegularExpressionToChange), ChangeTo = HttpUtility.HtmlDecode(updatingRule.ChangeTo), DataExploration = Enum.GetName(typeof(DataExplorationEnums), updatingRule.DataExploration), IsUpdatindIndex = (updatingRule.IsUpdatindIndex).ToString(), IsRegexpExpression = Convert.ToString(updatingRule.IsRegexpExpression), IsChanging = Convert.ToString(updatingRule.IsChanging), Status = updatingRule.Status == null ? rule.Status = Model.Enums.RuleStatusEnums.Active.ToString() : rule.Status, ParsingMode = updatingRule.ParsingMode, ConsiderRegister = (updatingRule.ConsiderRegister).ToString(), IsUpdatingRule = false, ColumnForUpdate = Convert.ToString(updatingRule.ColumnForUpdate) }; if(table != null) { updatingRuleModel.Cell = new CellModel { TableId = table.Name, Column = Convert.ToString(updatingRule.Column), Worksheet = Convert.ToString(updatingRule.Worksheet) }; } } var model = new EditUpdatingRuleForEmailModel { Id = rule.Id, Email = HttpUtility.HtmlDecode(rule.Email), Subject = HttpUtility.HtmlDecode(rule.Subject), PlainContains = HttpUtility.HtmlDecode(rule.PlainContains), Tables = tables, WorksheetsList = worksheetsList, Name = rule.Name, SaveEmail = saveEmail, Status = rule.Status == null ? rule.Status = Model.Enums.RuleStatusEnums.Active.ToString() : rule.Status, SaveEmailProperties = saveEmailProperties, SaveEmailGroupItem = GetLayoutGroupForEmailParsingRule(rule.Id, tables, worksheetsList, saveEmail, rule.IsUpdatingRule, rule.CopyRuleFromPreviousOrder), UpdatingRule = updatingRuleModel }; return PartialView("EditEmailParsingUpdatingRule", model); } } } return RedirectToAction("ManageEmailParsingRules"); }