public IEnumerable <Wizard> Read(SqlConnection connection, Version platformVersion) { var components = new List <Wizard>(); var query = this.GetWizardsQuery(platformVersion); if (string.IsNullOrEmpty(query)) { return(components); } var command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var wizard = new Wizard { Name = (reader["Name"] as string).Trim(), Title = (reader["Title"] as string).Trim() }; if (ActiveValue.Equals(reader["State"] as string)) { wizard.State = ComponentState.Active; } else { wizard.State = ComponentState.Closed; } if (reader["WizardDfm"] is byte[] wizardDfmRawData) { var wizardDfm = Encoding.GetEncoding(1251).GetString(wizardDfmRawData); if (!string.IsNullOrWhiteSpace(wizardDfm)) { var dfmWizard = WizardDfmParser.Parse(wizardDfm); if (dfmWizard != null) { wizard.Events.AddRange(dfmWizard.Events); wizard.Steps.AddRange(dfmWizard.Steps); } } } components.Add(wizard); } } } return(components); }
protected override IEnumerable <Wizard> ReadComponents(RecordRefModel model, string componentFolderPath) { var wizard = new Wizard { Name = model.Code, Title = model.Name }; var stateReq = model.Requisites .FirstOrDefault(r => r.Name == StateReqName); if (stateReq != null) { wizard.State = stateReq.Value == StateActiveRequisiteValue ? ComponentState.Active : ComponentState.Closed; } var structureFile = Path.Combine(componentFolderPath, "Structure.dfm"); if (File.Exists(structureFile)) { var wizardDfm = File.ReadAllText(structureFile, Encoding.GetEncoding(1251)); if (!string.IsNullOrWhiteSpace(wizardDfm)) { // Вернуть исходную кодировку wizardDfm = DeConvert(wizardDfm); var dfmWizard = WizardDfmParser.Parse(wizardDfm); if (dfmWizard != null) { wizard.Events.AddRange(dfmWizard.Events); wizard.Steps.AddRange(dfmWizard.Steps); } } } else { log.Warn($"File not found {structureFile}"); } yield return(wizard); }