private XElement SerializeDataSource(FormDataSourceDefinition dataSourceDefinition) { var node = new XElement("DataSource"); if (dataSourceDefinition != null) { var dataSource = syncFormService.GetDataSource(dataSourceDefinition.Id); node.Add(new XElement("Source", dataSource?.Name ?? dataSourceDefinition.Id.ToString())); var mappingsNode = new XElement("Mappings"); foreach (var mapping in dataSourceDefinition.Mappings) { var mNode = new XElement("Mapping"); mNode.Add(new XElement(nameof(mapping.DataFieldKey), mapping.DataFieldKey)); mNode.Add(new XElement(nameof(mapping.PrevalueKeyfield), mapping.PrevalueKeyfield)); mNode.Add(new XElement(nameof(mapping.PrevalueValueField), mapping.PrevalueValueField)); mNode.Add(new XElement(nameof(mapping.PrevalueTable), mapping.PrevalueTable)); mNode.Add(new XElement(nameof(mapping.DataType), mapping.DataType)); mNode.Add(new XElement(nameof(mapping.DefaultValue), mapping.DefaultValue)); mappingsNode.Add(mNode); } node.Add(mappingsNode); } return(node); }
private void DesersilizeDataSource(XElement info, Form item) { var node = info.Element("DataSource"); if (node == null) { return; } var dataSourceDefinition = new FormDataSourceDefinition() { Mappings = new List <FormDataSourceMapping>() }; var source = node.Element("Source").ValueOrDefault(string.Empty); if (string.IsNullOrWhiteSpace(source)) { return; } var dataSource = syncFormService.GetDataSource(source); if (dataSource != null) { dataSourceDefinition.Id = dataSource.Id; } else if (Guid.TryParse(source, out Guid id)) { dataSourceDefinition.Id = id; } var mappingNode = node.Element("Mappings"); if (mappingNode != null) { foreach (var mNode in mappingNode.Elements("Mapping")) { var mapping = new FormDataSourceMapping(); mapping.DataFieldKey = mNode.Element(nameof(mapping.DataFieldKey)).ValueOrDefault(string.Empty); mapping.PrevalueKeyfield = mNode.Element(nameof(mapping.PrevalueKeyfield)).ValueOrDefault(string.Empty); mapping.PrevalueValueField = mNode.Element(nameof(mapping.PrevalueValueField)).ValueOrDefault(string.Empty); mapping.PrevalueTable = mNode.Element(nameof(mapping.PrevalueTable)).ValueOrDefault(string.Empty); mapping.DataType = mNode.Element(nameof(mapping.DataType)).ValueOrDefault(FieldDataType.String); mapping.DefaultValue = mNode.Element(nameof(mapping.DefaultValue)).ValueOrDefault(string.Empty); dataSourceDefinition.Mappings.Add(mapping); } } item.DataSource = dataSourceDefinition; }