Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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");
        }