using DTS.Common.Enums.DBExport; using DTS.Common.Import.Interfaces; using DTS.Common.Interface.Groups.GroupList; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace DTS.Common.Import.XML { public class XMLParseLabDetails : XMLParseBase { public XMLParseLabDetails(XmlElement root, double importedVersion, Func isCancelled = null) : base(root, importedVersion, isCancelled) { } public IImportNotification ImportNotification { get; set; } public override void Parse(ref ImportObject importObject) { ImportNotification?.SetStatus(new ImportStatus { PossibleStatus = Enums.PossibleStatus.Reading, ExtraStatus = Enums.ImportExtraStatus.ReadingLabDetails }); var details = ParseLabDetails(_root); var newRoot = ConvertLabDetails(details); details = ParseLabDetails(newRoot); importObject.AddLabDetailsList(details); } private XmlElement ConvertLabDetails(IEnumerable details) { _writer.WriteStartElement(TopLevelFields.LabDetails.ToString()); foreach (var c in details) { _writer.Flush(); c.WriteXML(ref _writer); _writer.Flush(); } _writer.WriteEndElement(); return GetXmlElement(); } private List ParseLabDetails(XmlElement root) { List details = new List(); foreach (var node in root.ChildNodes) { if (IsCancelled()) { return details; } if (node is XmlElement) { details.Add(ISO.LabratoryDetails.ReadXML(node as XmlElement)); } } return details; } } }