private static void ReadCardRequisites(ComponentModel model, Dialog entity, string componentFolderPath) { if (model.DetailDataSets?.DetailDataSet1 == null) return; foreach (var row in model.DetailDataSets.DetailDataSet1.Rows) { var cardRequisite = new CardRequisite(); var numberReq = row.Requisites .FirstOrDefault(r => r.Code == ReqNumberReqName); if (!string.IsNullOrEmpty(numberReq?.Value)) cardRequisite.Number = int.Parse(numberReq.Value); var sectionReq = row.Requisites .FirstOrDefault(r => r.Code == ReqSectionReqName); if (sectionReq != null) cardRequisite.Section = RequisiteHandlerUtils.GetRequisiteSection(sectionReq.ValueLocalizeID); var nameReq = row.Requisites .FirstOrDefault(r => r.Code == ReqNameReqName); if (nameReq != null) cardRequisite.Name = nameReq.Value; var isRequiredReq = row.Requisites .FirstOrDefault(r => r.Code == ReqIsRequiredReqName); if (isRequiredReq != null) cardRequisite.IsRequired = isRequiredReq.ValueLocalizeID == YesValue; var isLastValueSavedReq = row.Requisites .FirstOrDefault(r => r.Code == ReqIsLastValueSavedReqName); if (isLastValueSavedReq != null) cardRequisite.IsLastValueSaved = isLastValueSavedReq.ValueLocalizeID == YesValue; var isSelectionConstrainedReq = row.Requisites .FirstOrDefault(r => r.Code == ReqIsSelectionConstrainedReqName); if (isSelectionConstrainedReq != null) cardRequisite.IsSelectionConstrained = isSelectionConstrainedReq.ValueLocalizeID == YesValue; var requisiteEventsFolder = Path.Combine(componentFolderPath, "Requisites", cardRequisite.Name); if (Directory.Exists(requisiteEventsFolder)) { foreach (var eventFile in Directory.EnumerateFiles(requisiteEventsFolder, "*.isbl")) { var eventName = Path.GetFileNameWithoutExtension(eventFile); var eventType = EventTypeResolver.GetExportedEventType(eventName); var calculationText = File.ReadAllText(eventFile, Encoding.GetEncoding(1251)); cardRequisite.Events.Add(new Event { EventType = eventType, CalculationText = calculationText }); } } entity.Requisites.Add(cardRequisite); } }
public IEnumerable <ReferenceType> Read(SqlConnection connection, Version platformVersion) { var components = new Dictionary <string, ReferenceType>(); var query = this.GetReferenceTypeQuery(platformVersion); if (string.IsNullOrEmpty(query)) { return(components.Values.ToList()); } var command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceType = new ReferenceType { Name = reader["Name"] as string, Title = reader["Title"] as string }; if (reader["State"] is string stateValue && StateValues.ContainsKey(stateValue)) { referenceType.State = StateValues[stateValue]; } if (reader["NumerationMethod"] is string numerationMethodValue && NumerationMethodValues.ContainsKey(numerationMethodValue)) { referenceType.NumerationMethod = NumerationMethodValues[numerationMethodValue]; } if (reader["DisplayRequisite"] is string displayRequisiteValue && DisplayRequisiteValues.ContainsKey(displayRequisiteValue)) { referenceType.DisplayRequisite = DisplayRequisiteValues[displayRequisiteValue]; } referenceType.LeadingReference = reader["LeadingReference"] as string; referenceType.HasLongRecordNames = YesValue.Equals(reader["HasLongRecordNames"] as string); referenceType.HasUniqueRecordNames = YesValue.Equals(reader["HasUniqueRecordNames"] as string); var eventsValue = reader["Events"] as string; if (!string.IsNullOrEmpty(eventsValue)) { var events = EventTextParser.Parse(eventsValue); foreach (var @event in events) { referenceType.Events.Add(@event); } } components.Add(referenceType.Name, referenceType); } } } query = this.GetMethodsQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var method = new Method { Name = reader["Name"] as string, CalculationText = reader["CalculationText"] as string ?? string.Empty }; referenceType.Methods.Add(method); } } } } query = this.GetMethodParamsQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var methodName = reader["MethodName"] as string; var method = referenceType.Methods .FirstOrDefault(m => m.Name == methodName); if (method == null) { continue; } var parameter = new MethodParam { Number = (int)reader["Number"], Name = reader["Name"] as string }; var typeValue = reader["Type"] as string; if (TypeValues.TryGetValue(typeValue, out MethodParamType methodParamType)) { parameter.Type = methodParamType; } parameter.DefaultValue = reader["DefaultValue"] as string; parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue); method.Params.Add(parameter); } } } } query = this.GetActionQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var action = new ActionWithHandler { Name = reader["Name"] as string }; var calculationText = reader["CalculationText"] as string; var executionHandler = referenceType.Methods .FirstOrDefault(m => m.Name == calculationText); if (executionHandler != null) { action.ExecutionHandler = executionHandler; } else { action.CalculationText = calculationText ?? string.Empty; } referenceType.Actions.Add(action); } } } } query = this.GetRequisiteQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var cardRequisite = new CardRequisite { Number = (int)reader["Number"] }; if (reader["Section"] is string sectionValue && RequisiteSectionValues.ContainsKey(sectionValue)) { cardRequisite.Section = RequisiteSectionValues[sectionValue]; } cardRequisite.Name = reader["Name"] as string; cardRequisite.IsRequired = RuYesValue.Equals(reader["IsRequired"] as string); cardRequisite.IsFilter = RuYesValue.Equals(reader["IsFilter"] as string); cardRequisite.IsLeading = RuYesValue.Equals(reader["IsLeading"] as string); cardRequisite.IsControl = RuYesValue.Equals(reader["IsControl"] as string); var changeEventValue = reader["ChangeEvent"] as string; if (!string.IsNullOrEmpty(changeEventValue)) { var @event = new Event { EventType = EventType.Change, CalculationText = changeEventValue }; cardRequisite.Events.Add(@event); } var selectEventsValue = reader["SelectEvents"] as string; if (!string.IsNullOrEmpty(selectEventsValue)) { var events = EventTextParser.Parse(selectEventsValue); foreach (var @event in events) { if (@event.EventType == EventType.Unknown) { @event.EventType = EventType.Select; } cardRequisite.Events.Add(@event); } } referenceType.Requisites.Add(cardRequisite); } } } } query = this.GetViewQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var referenceTypeName = reader["ReferenceTypeName"] as string; if (!components.TryGetValue(referenceTypeName, out ReferenceType referenceType)) { continue; } var view = new View { Name = reader["Name"] as string, IsMain = RuYesValue.Equals(reader["IsMain"] as string), ListForm = reader["ListForm"] as string, CardForm = reader["CardForm"] as string }; referenceType.Views.Add(view); referenceType.Views.Add(view); } } } } return(components.Values.ToList()); }
/// <summary> /// Прочитать реквизиты карточки. /// </summary> /// <param name="model">Модель.</param> /// <param name="entity">Сущность.</param> private static void ReadCardRequisites(ComponentModel model, DocumentCardType entity) { if (model.DetailDataSets?.DetailDataSet1 == null) { return; } foreach (var row in model.DetailDataSets.DetailDataSet1.Rows) { var cardRequisite = new CardRequisite(); var numberReq = row.Requisites .FirstOrDefault(r => r.Code == ReqNumberReqName); if (!string.IsNullOrEmpty(numberReq?.Value)) { cardRequisite.Number = int.Parse(numberReq.Value); } var sectionReq = row.Requisites .FirstOrDefault(r => r.Code == ReqSectionReqName); if (sectionReq != null) { cardRequisite.Section = RequisiteHandlerUtils.GetRequisiteSection(sectionReq.ValueLocalizeID); } var nameReq = row.Requisites .FirstOrDefault(r => r.Code == ReqNameReqName); if (nameReq != null) { cardRequisite.Name = nameReq.Value; } var isRequiredReq = row.Requisites .FirstOrDefault(r => r.Code == ReqIsRequiredReqName); if (isRequiredReq != null) { cardRequisite.IsRequired = isRequiredReq.ValueLocalizeID == YesValue; } var isLeadingReq = row.Requisites .FirstOrDefault(r => r.Code == ReqIsLeadingReqName); if (isLeadingReq != null) { cardRequisite.IsLeading = isLeadingReq.ValueLocalizeID == YesValue; } var changeEventReq = row.Requisites .FirstOrDefault(r => r.Code == ReqChangeEventReqName); if (!string.IsNullOrEmpty(changeEventReq?.DecodedText)) { var @event = new Event { EventType = EventType.Change, CalculationText = changeEventReq.DecodedText }; cardRequisite.Events.Add(@event); } var selectEventReq = row.Requisites .FirstOrDefault(r => r.Code == ReqSelectEventsReqName); if (!string.IsNullOrEmpty(selectEventReq?.DecodedText)) { var events = EventTextParser.Parse(selectEventReq.DecodedText); foreach (var @event in events) { if (@event.EventType == EventType.Unknown) { @event.EventType = EventType.Select; } cardRequisite.Events.Add(@event); } } entity.Requisites.Add(cardRequisite); } }
public IEnumerable <Dialog> Read(SqlConnection connection, Version platformVersion) { var components = new Dictionary <string, Dialog>(); var query = this.GetDialogQuery(platformVersion); if (string.IsNullOrEmpty(query)) { return(components.Values.ToList()); } var command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialog = new Dialog { Name = reader["Name"] as string, Title = reader["Title"] as string, CardForm = reader["CardForm"] as string }; var eventsValue = reader["Events"] as string; if (!string.IsNullOrEmpty(eventsValue)) { var events = EventTextParser.Parse(eventsValue); foreach (var @event in events) { dialog.Events.Add(@event); } } components.Add(dialog.Name, dialog); } } } query = this.GetMethodsQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialogName = reader["DialogName"] as string; if (!components.TryGetValue(dialogName, out Dialog dialog)) { continue; } var method = new Method { Name = reader["Name"] as string, CalculationText = reader["CalculationText"] as string ?? string.Empty }; dialog.Methods.Add(method); } } } } query = this.GetMethodParamsQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialogName = reader["DialogName"] as string; if (!components.TryGetValue(dialogName, out Dialog dialog)) { continue; } var methodName = reader["MethodName"] as string; var method = dialog.Methods .FirstOrDefault(m => m.Name == methodName); if (method == null) { continue; } var parameter = new MethodParam { Number = (int)reader["Number"], Name = reader["Name"] as string }; var typeValue = reader["Type"] as string; if (TypeValues.TryGetValue(typeValue, out MethodParamType methodParamType)) { parameter.Type = methodParamType; } parameter.DefaultValue = reader["DefaultValue"] as string; parameter.HasDefaultValue = !string.IsNullOrEmpty(parameter.DefaultValue); method.Params.Add(parameter); } } } } query = this.GetActionQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialogName = reader["DialogName"] as string; if (!components.TryGetValue(dialogName, out Dialog dialog)) { continue; } var action = new ActionWithHandler { Name = reader["Name"] as string }; var calculationText = reader["CalculationText"] as string; var executionHandler = dialog.Methods .FirstOrDefault(m => m.Name == calculationText); if (executionHandler != null) { action.ExecutionHandler = executionHandler; } else { action.CalculationText = calculationText ?? string.Empty; } dialog.Actions.Add(action); } } } } query = this.GetRequisiteQuery(platformVersion); if (!string.IsNullOrEmpty(query)) { command = new SqlCommand(query, connection); using (var reader = command.ExecuteReader()) { if (reader.HasRows) { while (reader.Read()) { var dialogName = reader["DialogName"] as string; if (!components.TryGetValue(dialogName, out Dialog dialog)) { continue; } var cardRequisite = new CardRequisite { Number = (int)reader["Number"] }; if (reader["Section"] is string sectionValue && RequisiteSectionValues.ContainsKey(sectionValue)) { cardRequisite.Section = RequisiteSectionValues[sectionValue]; } cardRequisite.Name = reader["Name"] as string; cardRequisite.IsRequired = YesValue.Equals(reader["IsRequired"] as string); cardRequisite.IsLastValueSaved = YesValue.Equals(reader["IsLastValueSaved"] as string); cardRequisite.IsSelectionConstrained = YesValue.Equals(reader["IsSelectionConstrained"] as string); var changeEventValue = reader["ChangeEvent"] as string; if (!string.IsNullOrEmpty(changeEventValue)) { var @event = new Event { EventType = EventType.Change, CalculationText = changeEventValue }; cardRequisite.Events.Add(@event); } var selectEventsValue = reader["SelectEvents"] as string; if (!string.IsNullOrEmpty(selectEventsValue)) { var events = EventTextParser.Parse(selectEventsValue); foreach (var @event in events) { if (@event.EventType == EventType.Unknown) { @event.EventType = EventType.Select; } cardRequisite.Events.Add(@event); } } dialog.Requisites.Add(cardRequisite); } } } } return(components.Values.ToList()); }