private static string BeforeParseValueFromEmail(EmailModels email, EmailDataParsingRulesModels rule) { switch (rule.ParsingMode) { case (int)ParsingModeEnum.SearchInSubjectAndBody: if (email.Subject != null) { return ParseValueFromEmail(email.Subject, rule) != null ? ParseValueFromEmail(email.Subject, rule) : ParseValueFromEmail(email.Content, rule); } else { return ParseValueFromEmail(email.Content, rule); } case (int)ParsingModeEnum.SearchOnlyInSubject: if (email.Subject != null) { return ParseValueFromEmail(email.Subject, rule); } else break; case (int)ParsingModeEnum.SearchOnlyInBody: if (email.Content != null) { return ParseValueFromEmail(email.Content, rule); } else break; default: if (email.Subject != null) { return ParseValueFromEmail(email.Subject, rule) != null ? ParseValueFromEmail(email.Subject, rule) : ParseValueFromEmail(email.Content, rule); } else { return ParseValueFromEmail(email.Content, rule); } } return null; }
public ActionResult AddNewDataRuleForEmails(AddNewRuleForDataModel model) { var userId = UserHelper.GetUserByEmail(User.Identity.Name).Id; if (ModelState.IsValid && IsUsersEmailParsingRule(userId, model.RuleId)) { var table = tablesRepository.Find(w => w.Name.Equals(model.Cell.TableId) && w.AdministratorId_Id.Equals(userId)); var emailDataParsingRule = new Model.EmailDataParsingRulesModels() { Expression = HttpUtility.HtmlEncode(model.Expression), IsRegexpExpression = model.IsRegexpExpression.Equals("C"), DataExploration = (int)Enum.Parse(typeof(DataExplorationEnums), model.DataExploration), DataExplorationExpression = HttpUtility.HtmlEncode(model.DataExplorationExpression), IsChanging = model.IsChanging.Equals("C"), ExpressionToChange = HttpUtility.HtmlEncode(model.ExpressionToChange), RegularExpressionToChange = HttpUtility.HtmlEncode(model.RegularExpressionToChange), ChangeTo = HttpUtility.HtmlEncode(model.ChangeTo), EmailParsingRulesModelsId_Id = model.RuleId, IsUpdatindIndex = model.IsUpdatindIndex.Equals("C"), TableId_Id = table.Id, Worksheet = Int32.Parse(model.Cell.Worksheet), Column = (int)Enum.Parse(typeof(ColumnEnums), model.Cell.Column), Status = RuleStatusEnums.Active.ToString(), ParsingMode = (int)Enum.Parse(typeof(ParsingModeEnum), "SearchInSubjectAndBody"), ConsiderRegister = false }; emailDataParsingRulesRepository.Add(emailDataParsingRule); emailDataParsingRulesRepository.Commit(); return RedirectToAction("EditEmailParsingRule", "Email", new { ruleId = model.RuleId }); } return View(); }
public long AddNewDataRule(string dataRuleName, long ruleId) { var userId = UserHelper.GetUserByEmail(User.Identity.Name).Id; if (dataRuleName != null) { var table = tablesRepository.Find(w => w.AdministratorId_Id.Equals(userId)); var emailDataParsingRule = new Model.EmailDataParsingRulesModels() { Name = dataRuleName, TableId_Id = table.Id, EmailParsingRulesModelsId_Id = ruleId, Status = RuleStatusEnums.Active.ToString() }; var parentRule = emailParsingRulesRepository.Find(w => w.Id == ruleId); parentRule.Status = emailDataParsingRule.Status; emailParsingRulesRepository.Commit(); //.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, parentRule); emailDataParsingRulesRepository.Add(emailDataParsingRule); emailDataParsingRulesRepository.Commit(); // .Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, emailParsingRulesRepository.FindAll(r => r.Id != null)); return emailDataParsingRule.Id; } return 0; }
public long AddNewDataRule(string dataRuleName, long ruleId) { if (dataRuleName != null) { var table = tablesRepository.Find(w => w.AdministratorId_Id.Equals(demoHelper.userId)); var id = demoHelper.dataRules.OrderBy(r => r.Id).Last().Id+1; var emailDataParsingRule = new Model.EmailDataParsingRulesModels() { Id = id, Name = dataRuleName, TableId_Id = table.Id, EmailParsingRulesModelsId_Id = ruleId, Status = RuleStatusEnums.Active.ToString() }; var parentRule = demoHelper.rules.Find(w => w.Id == ruleId); parentRule.Status = emailDataParsingRule.Status; demoHelper.dataRules.Add(emailDataParsingRule); demoHelper.rules.Find(r => r.Id == ruleId).EmailDataParsingRulesModels.Add(emailDataParsingRule); return emailDataParsingRule.Id; } return 0; }
private static string ParseValueFromEmail(string content, EmailDataParsingRulesModels rule) { // AddLog("ParseValueFromEmail"); int matchStartIndex; int expressionLength; if (rule.IsRegexpExpression) { var regex = Regex.Match(content, rule.Expression, RegexOptions.IgnoreCase, TimeSpan.FromSeconds(1)); matchStartIndex = regex.Index; expressionLength = regex.Value.Length; } else { AddLog("rule.Expression: " + rule.Expression); if (rule.ConsiderRegister) { matchStartIndex = content.IndexOf(rule.Expression, StringComparison.Ordinal); } else { matchStartIndex = content.IndexOf(rule.Expression, StringComparison.InvariantCultureIgnoreCase); } AddLog("matchStartIndex: " + matchStartIndex); expressionLength = rule.Expression.Length; AddLog("expressionLength: " + expressionLength); } string result = null; if (matchStartIndex >= 0) { if (rule.DataExploration == 0) { var substring = content.Substring(matchStartIndex); var newLineIndex = substring.IndexOf("\n", StringComparison.Ordinal); int start = matchStartIndex + expressionLength; int count = newLineIndex - expressionLength; if (start + count >= 0) { result = content.Substring(start, count); } else result = null; } else if (rule.DataExploration == 1) { result = content.Substring(matchStartIndex + expressionLength); } else if (rule.DataExploration == 2 || rule.DataExploration == 3) { var substring = content.Substring(matchStartIndex); var newLineIndex = substring.IndexOf(rule.DataExplorationExpression, StringComparison.Ordinal); if (newLineIndex != -1) { result = content.Substring(matchStartIndex + expressionLength, newLineIndex - expressionLength); } } } if (result != null && rule.IsChanging) { if (rule.RegularExpressionToChange != null) { var regex = Regex.Match(result, rule.RegularExpressionToChange, RegexOptions.IgnoreCase, TimeSpan.FromSeconds(1)); matchStartIndex = regex.Index; expressionLength = regex.Value.Length; } else { matchStartIndex = result.IndexOf(rule.ExpressionToChange, StringComparison.Ordinal); expressionLength = rule.ExpressionToChange.Length; } result = result.Remove(matchStartIndex, expressionLength); result = result.Insert(matchStartIndex, rule.ChangeTo); } //AddLog("result: "+result); return result; }
private static void ParseCellValue(EmailModels email, EmailDataParsingRulesModels dataParsingRule, int row, bool CopyRuleFromPreviousOrder) { // AddLog("ParseCellValue"); var path = SpreadsheetHelper.GetSpreadsheetPathById((long)dataParsingRule.TableId_Id); if (path != null) { var name = dataParsingRule.TableId_Id.ToString(); SpreadsheetExtension.LoadDocument(name, path); IWorkbook workbook = SpreadsheetExtension.GetCurrentDocument(name); Worksheet worksheet = workbook.Worksheets[dataParsingRule.Worksheet]; var value = BeforeParseValueFromEmail(email, dataParsingRule); if (value != null) { if (dataParsingRule.IsUpdatingRule) { if (CopyRuleFromPreviousOrder) { worksheet.Cells[row, dataParsingRule.ColumnForUpdate].CopyFrom(worksheet.Cells[row + 1, dataParsingRule.ColumnForUpdate], PasteSpecial.Formats); } worksheet.Cells[row, dataParsingRule.ColumnForUpdate].Value = value.Replace("\n", " "); } else { if (CopyRuleFromPreviousOrder) { worksheet.Cells[row, dataParsingRule.Column].CopyFrom(worksheet.Cells[row + 1, dataParsingRule.Column], PasteSpecial.Formats); } worksheet.Cells[row, dataParsingRule.Column].Value = value.Replace("\n", " "); } } workbook.SaveDocument(path); SpreadsheetExtension.CloseDocument(name); Repository<ParsedCells> parsedCellsRepository = new Repository<ParsedCells>(); var cell = new ParsedCells { Column = dataParsingRule.Column, Content = value, EmailId_Id = email.Id, TableId_Id = dataParsingRule.TableId_Id, Worksheet = dataParsingRule.Worksheet, WorksheetName = worksheet.Name }; parsedCellsRepository.Add(cell); parsedCellsRepository.Commit(); } }
partial void DeleteEmailDataParsingRulesModels(EmailDataParsingRulesModels instance);
partial void InsertEmailDataParsingRulesModels(EmailDataParsingRulesModels instance);
private void detach_EmailDataParsingRulesModels(EmailDataParsingRulesModels entity) { this.SendPropertyChanging(); entity.TableModels = null; }
private void attach_EmailDataParsingRulesModels(EmailDataParsingRulesModels entity) { this.SendPropertyChanging(); entity.EmailParsingRulesModels = this; }