/// <summary> /// Создание модели Шаблонов и ролей в них /// </summary> /// <param name="path">Путь сохранения</param> /// <param name="infoUserTemlateAndRule">Шаблоны пользователей и ролей</param> public void AddInfoRuleTemplate(string path, InfoUserTemlateAndRule infoUserTemlateAndRule) { var doc = LogicaXml.LogicaXml.Document(path); XmlElement xRoot = doc.DocumentElement; foreach (var templates in infoUserTemlateAndRule.Template) { XmlElement template = doc.CreateElement("Template"); template.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "NameTemplate", templates.NameTemplate)); template.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Info", templates.Info)); template.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Category", templates.Category)); foreach (var segments in templates.Sigment) { XmlElement segment = doc.CreateElement("Sigment"); segment.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Name", segments.Name)); foreach (var app in segments.Applications) { XmlElement application = doc.CreateElement("Applications"); application.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Name", app.Name)); foreach (var rules in app.RuleTemplate) { XmlElement rule = doc.CreateElement("RuleTemplate"); rule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "NameRule", rules.NameRule)); rule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Info", rules.Info)); rule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Category", rules.Category)); application.AppendChild(rule); } segment.AppendChild(application); } template.AppendChild(segment); } xRoot.AppendChild(template); } doc.Save(path); }
/// <summary> /// Метод добавление в файл пользователй и их ролей с шаблонами /// </summary> /// <param name="path">Путь сохранения</param> /// <param name="infoUserTemlateAndRule">Шаблоны пользователей и ролей</param> public void AddInfoUserRuleTemplate(string path, InfoUserTemlateAndRule infoUserTemlateAndRule) { var doc = LogicaXml.LogicaXml.Document(path); XmlElement xRoot = doc.DocumentElement; XmlElement infoUserRule = doc.CreateElement("Users"); foreach (var user in infoUserTemlateAndRule.Users) { infoUserRule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Name", user.Name)); infoUserRule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Code", user.Code.ToString())); infoUserRule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "TabelNumber", user.TabelNumber)); infoUserRule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Department", user.Department)); infoUserRule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Position", user.Position)); infoUserRule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Organization", user.Organization)); infoUserRule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Bloking", user.Bloking)); infoUserRule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "NumberActiveDirectory", user.NumberActiveDirectory)); foreach (var templates in user.Template) { XmlElement template = doc.CreateElement("Template"); template.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "NameTemplate", templates.NameTemplate)); template.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Info", templates.Info)); template.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Category", templates.Category)); infoUserRule.AppendChild(template); } foreach (var segments in user.Sigment) { XmlElement segment = doc.CreateElement("Sigment"); segment.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Name", segments.Name)); foreach (var app in segments.Applications) { XmlElement application = doc.CreateElement("Applications"); application.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Name", app.Name)); foreach (var rules in app.RuleTemplate) { XmlElement rule = doc.CreateElement("RuleTemplate"); rule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "NameRule", rules.NameRule)); rule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Context", rules.Context)); rule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Info", rules.Info)); rule.Attributes.Append(CreateElement.CreteElement.AtributeAddString(doc, "Category", rules.Category)); application.AppendChild(rule); } segment.AppendChild(application); } infoUserRule.AppendChild(segment); } xRoot.AppendChild(infoUserRule); } doc.Save(path); }
/// <summary> /// Сохранение отчета по Информации о пользователях и их ролях и шаблонах /// </summary> /// <param name="path">Путь сохранения</param> /// <param name="infoUserTemlateAndRule">Шаблоны пользователей и ролей</param> public static void CreateFileInfoUserRuleTemplate(string pathReport, InfoUserTemlateAndRule infoUserTemlateAndRule) { if (File.Exists(pathReport)) { XmlReadOrWrite read = new XmlReadOrWrite(); if (infoUserTemlateAndRule.Users != null) { read.AddInfoUserRuleTemplate(pathReport, infoUserTemlateAndRule); } if (infoUserTemlateAndRule.Template != null) { read.AddInfoRuleTemplate(pathReport, infoUserTemlateAndRule); } } else { var convert = new Converts.ConvettToXml.XmlConvert(); convert.SerializerClassToXml(pathReport, infoUserTemlateAndRule, typeof(InfoUserTemlateAndRule)); } }
/// <summary> /// Загрузка справочников по шаблонам ролям пользователям /// </summary> /// <param name="infoUserTemlateAndRule">Шаблоны роли пользователи</param> /// <returns></returns> public ModelPathReport LoadInfoUserTemplateAndRuleToDataBase(InfoUserTemlateAndRule infoUserTemlateAndRule) { var sql = new SelectSql(); return(sql.LoadModelToDataBase(infoUserTemlateAndRule, 38, 3)); }
/// <summary> /// Поиск пользователей и ролей по сегментам /// </summary> /// <param name="statusButton">Кнопка запуска</param> /// <param name="libraryAutomation">Автоматизация библиотека</param> /// <param name="pathJournalInfoUserTemplateRule">Путь сохранения информации по пользователям и их ролям с шаблонами</param> private void FindUserTemplateAndRule(StatusButtonMethod statusButton, LibraryAutomations libraryAutomation, string pathJournalInfoUserTemplateRule) { var rowNumber = 1; PublicGlobalFunction.PublicGlobalFunction.WindowElementClick(libraryAutomation, ItElementName.ApplicationTabUsers); PublicGlobalFunction.PublicGlobalFunction.WindowElementClick(libraryAutomation, ItElementName.FindUsers); libraryAutomation.IsEnableElement(ItElementName.ListRowUsersGrid); if (File.Exists(pathJournalInfoUserTemplateRule)) { var readFileInfoRule = new LibaryXMLAuto.ReadOrWrite.XmlReadOrWrite(); var fileInfoRuleTemplate = (InfoUserTemlateAndRule)readFileInfoRule.ReadXml(pathJournalInfoUserTemplateRule, typeof(InfoUserTemlateAndRule)); if (fileInfoRuleTemplate.Users != null) { var nameAttributes = fileInfoRuleTemplate.Users.Last().Name; var index = 0; var stop = false; libraryAutomation.SelectAutomationColrction(libraryAutomation.FindElement).Cast <AutomationElement>() .Where(elem => elem.Current.Name.Contains("List`")) .ToList().ForEach(element => { if (stop) { return; } else { element.SetFocus(); AutoIt.AutoItX.Sleep(2000); if (libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers(libraryAutomation.SelectAutomationColrction(element) .Cast <AutomationElement>().First(elem => elem.Current.Name.Contains("Пользователь"))) == nameAttributes) { rowNumber = index; rowNumber++; stop = true; } index++; } }); } } AutomationElement automationElementRow; while ((automationElementRow = libraryAutomation.IsEnableElements(string.Format(ItElementName.ListRowUsers, rowNumber), null, true, 5)) != null) { if (statusButton.Iswork) { var infoRuleTemplate = new InfoUserTemlateAndRule() { Users = new Users[1] }; automationElementRow.SetFocus(); AutoIt.AutoItX.Sleep(1000); infoRuleTemplate.Users[0] = new Users() { Name = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Пользователь"))), Code = Convert.ToInt32(libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Код НО")))), TabelNumber = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Табельный номер"))), Department = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Отдел"))), Position = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Должность"))), Organization = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Организация"))), Bloking = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Блокировка"))), NumberActiveDirectory = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Учетная запись"))) }; var containerTab = libraryAutomation.SelectAutomationColrction(libraryAutomation.IsEnableElements(ItElementName.ApplicationContainerTab, null, true)); PublicGlobalFunction.PublicGlobalFunction.WindowElementClick(libraryAutomation, ItElementName.ApplicationTabTemplate, containerTab[1]); var templatesNumber = 1; List <AutomationElement> listTemplate = libraryAutomation.SelectAutomationColrction( libraryAutomation.IsEnableElements(ItElementName.ListAllTemplatesUsers, containerTab[1], true, 1)).Cast <AutomationElement>() .Where(elem => elem.Current.Name.Contains("List`1 row")).ToList(); infoRuleTemplate.Users[0].Template = new Template[listTemplate.Count()]; foreach (AutomationElement automationElement in listTemplate) { automationElement.SetFocus(); infoRuleTemplate.Users[0].Template[templatesNumber - 1] = new Template() { NameTemplate = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElement) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Шаблон"))), Info = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElement) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Описание"))), Category = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElement) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Категории"))), }; templatesNumber++; } var sigmentNumber = 1; PublicGlobalFunction.PublicGlobalFunction.WindowElementClick(libraryAutomation, ItElementName.ApplicationTabRule, containerTab[1]); List <AutomationElement> listSegment = libraryAutomation.SelectAutomationColrction( libraryAutomation.IsEnableElements(ItElementName.ListAllRulesUsers, containerTab[1], true, 1)).Cast <AutomationElement>() .Where(elem => elem.Current.Name.Contains("List`1 row")).ToList(); infoRuleTemplate.Users[0].Sigment = new Sigment[listSegment.Count()]; foreach (AutomationElement automationElementTemplates in listSegment) { automationElementTemplates.SetFocus(); SendKeys.SendWait(ButtonConstant.Plus); infoRuleTemplate.Users[0].Sigment[sigmentNumber - 1] = new Sigment() { Name = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplates) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Сегмент"))) }; List <AutomationElement> listApp = libraryAutomation.SelectAutomationColrction(automationElementTemplates).Cast <AutomationElement>() .Where(elem => elem.Current.Name.Contains("Apps row")).ToList(); infoRuleTemplate.Users[0].Sigment[sigmentNumber - 1].Applications = new Applications[listApp.Count()]; var rulesAppNumber = 1; foreach (AutomationElement automationElementTemplatesRulesApp in listApp) { automationElementTemplatesRulesApp.SetFocus(); SendKeys.SendWait(ButtonConstant.Plus); infoRuleTemplate.Users[0].Sigment[sigmentNumber - 1].Applications[rulesAppNumber - 1] = new Applications() { Name = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesApp) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Приложение"))) }; List <AutomationElement> listRole = libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesApp).Cast <AutomationElement>() .Where(elem => elem.Current.Name.Contains("RoleList row")).ToList(); infoRuleTemplate.Users[0].Sigment[sigmentNumber - 1].Applications[rulesAppNumber - 1].RuleTemplate = new RuleTemplate[listRole.Count()]; var rulesRulesAppRuleNumber = 1; foreach (AutomationElement automationElementTemplatesRulesAppRule in listRole) { infoRuleTemplate.Users[0].Sigment[sigmentNumber - 1].Applications[rulesAppNumber - 1].RuleTemplate[rulesRulesAppRuleNumber - 1] = new RuleTemplate() { NameRule = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesAppRule) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Роль"))), Info = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesAppRule) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Описание"))), Category = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesAppRule) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Категории"))), }; rulesRulesAppRuleNumber++; } automationElementTemplatesRulesApp.SetFocus(); AutoIt.AutoItX.Sleep(500); SendKeys.SendWait(ButtonConstant.Minus); rulesAppNumber++; } automationElementTemplates.SetFocus(); AutoIt.AutoItX.Sleep(500); SendKeys.SendWait(ButtonConstant.Minus); sigmentNumber++; } LibaryXMLAuto.ErrorJurnal.ReportMigration.CreateFileInfoUserRuleTemplate(pathJournalInfoUserTemplateRule, infoRuleTemplate); rowNumber++; } else { break; } } }
/// <summary> /// Поиск только шаблонов и ролей в них /// </summary> /// <param name="statusButton">Кнопка запуска</param> /// <param name="libraryAutomation">Автоматизация библиотека</param> /// <param name="pathJournalInfoUserTemplateRule">Путь сохранения информации по пользователям и их ролям с шаблонами</param> private void FindAllTemplateAndRule(StatusButtonMethod statusButton, LibraryAutomations libraryAutomation, string pathJournalInfoUserTemplateRule) { var rowNumber = 1; PublicGlobalFunction.PublicGlobalFunction.WindowElementClick(libraryAutomation, ItElementName.ApplicationTabRules); PublicGlobalFunction.PublicGlobalFunction.WindowElementClick(libraryAutomation, ItElementName.SendRulesTemplate); libraryAutomation.IsEnableElement(ItElementName.ListRowRulesGrid); if (File.Exists(pathJournalInfoUserTemplateRule)) { var readFileInfoRule = new LibaryXMLAuto.ReadOrWrite.XmlReadOrWrite(); var fileInfoRuleTemplate = (InfoUserTemlateAndRule)readFileInfoRule.ReadXml(pathJournalInfoUserTemplateRule, typeof(InfoUserTemlateAndRule)); if (fileInfoRuleTemplate.Template != null) { var nameAttributes = fileInfoRuleTemplate.Template.Last().NameTemplate; var index = 0; var stop = false; libraryAutomation.SelectAutomationColrction(libraryAutomation.FindElement) .Cast <AutomationElement>().Where(elem => elem.Current.Name.Contains("List`")).ToList().ForEach(elem => { if (stop) { return; } else { elem.SetFocus(); AutoIt.AutoItX.Sleep(1000); if (libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers(libraryAutomation.SelectAutomationColrction(elem).Cast <AutomationElement>() .First(element => element.Current.Name.Contains("Шаблон"))) == nameAttributes) { rowNumber = index; rowNumber++; stop = true; } index++; } }); } } AutomationElement automationElementRow; while ((automationElementRow = libraryAutomation.IsEnableElements(string.Format(ItElementName.ListRowRules, rowNumber), null, true, 5)) != null) { if (statusButton.Iswork) { var infoRuleTemplate = new InfoUserTemlateAndRule() { Template = new Template[1] }; automationElementRow.SetFocus(); AutoIt.AutoItX.Sleep(1000); infoRuleTemplate.Template[0] = new Template() { NameTemplate = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Шаблон"))), Info = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Описание"))), Category = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Категории"))), }; while (true) { libraryAutomation.ClickElement(libraryAutomation.SelectAutomationColrction(automationElementRow).Cast <AutomationElement>().First(elem => elem.Current.Name.Contains("Шаблон")), 180); if (libraryAutomation.IsEnableElements(ItElementName.WinAll) != null) { break; } } var winElement = libraryAutomation.FindElement; var sigmentNumber = 1; List <AutomationElement> listSegment = libraryAutomation.SelectAutomationColrction( libraryAutomation.IsEnableElements(ItElementName.WinSigment, null, true)).Cast <AutomationElement>() .Where(elem => elem.Current.Name.Contains("List")).ToList(); infoRuleTemplate.Template[0].Sigment = new Sigment[listSegment.Count()]; foreach (AutomationElement automationElementTemplates in listSegment) { automationElementTemplates.SetFocus(); SendKeys.SendWait(ButtonConstant.Plus); infoRuleTemplate.Template[0].Sigment[sigmentNumber - 1] = new Sigment() { Name = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplates) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Сегмент"))) }; List <AutomationElement> listApp = libraryAutomation.SelectAutomationColrction(automationElementTemplates).Cast <AutomationElement>() .Where(elem => elem.Current.Name.Contains("Apps row")).ToList(); infoRuleTemplate.Template[0].Sigment[sigmentNumber - 1].Applications = new Applications[listApp.Count()]; var rulesAppNumber = 1; foreach (AutomationElement automationElementTemplatesRulesApp in listApp) { automationElementTemplatesRulesApp.SetFocus(); SendKeys.SendWait(ButtonConstant.Plus); infoRuleTemplate.Template[0].Sigment[sigmentNumber - 1].Applications[rulesAppNumber - 1] = new Applications() { Name = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesApp) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Приложение"))) }; List <AutomationElement> listRole = libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesApp).Cast <AutomationElement>() .Where(elem => elem.Current.Name.Contains("RoleList row")).ToList(); infoRuleTemplate.Template[0].Sigment[sigmentNumber - 1].Applications[rulesAppNumber - 1].RuleTemplate = new RuleTemplate[listRole.Count()]; var rulesRulesAppRuleNumber = 1; foreach (AutomationElement automationElementTemplatesRulesAppRule in listRole) { infoRuleTemplate.Template[0].Sigment[sigmentNumber - 1].Applications[rulesAppNumber - 1].RuleTemplate[rulesRulesAppRuleNumber - 1] = new RuleTemplate() { NameRule = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesAppRule) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Роль"))), Info = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesAppRule) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Описание"))), Category = libraryAutomation.ParseElementLegacyIAccessiblePatternIdentifiers( libraryAutomation.SelectAutomationColrction(automationElementTemplatesRulesAppRule) .Cast <AutomationElement>() .First(elem => elem.Current.Name.Contains("Категории"))), }; rulesRulesAppRuleNumber++; } automationElementTemplatesRulesApp.SetFocus(); AutoIt.AutoItX.Sleep(500); SendKeys.SendWait(ButtonConstant.Minus); rulesAppNumber++; } automationElementTemplates.SetFocus(); AutoIt.AutoItX.Sleep(500); SendKeys.SendWait(ButtonConstant.Minus); sigmentNumber++; } libraryAutomation.CloseWindowPattern(winElement); LibaryXMLAuto.ErrorJurnal.ReportMigration.CreateFileInfoUserRuleTemplate(pathJournalInfoUserTemplateRule, infoRuleTemplate); rowNumber++; } else { break; } } }