Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
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;
        }
Exemplo n.º 5
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;
        }
Exemplo n.º 6
0
        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();
            }
        }
Exemplo n.º 7
0
 partial void DeleteEmailDataParsingRulesModels(EmailDataParsingRulesModels instance);
Exemplo n.º 8
0
 partial void InsertEmailDataParsingRulesModels(EmailDataParsingRulesModels instance);
Exemplo n.º 9
0
		private void detach_EmailDataParsingRulesModels(EmailDataParsingRulesModels entity)
		{
			this.SendPropertyChanging();
			entity.TableModels = null;
		}
Exemplo n.º 10
0
		private void attach_EmailDataParsingRulesModels(EmailDataParsingRulesModels entity)
		{
			this.SendPropertyChanging();
			entity.EmailParsingRulesModels = this;
		}