private OperationData Map(TLG tlg, int?prescrptionId, string datacardPath, Dictionary <string, List <UniqueId> > linkedIds) { var tim = _xmlReader.ReadTlgXmlData(datacardPath, tlg.A + ".xml").First(); var isoRecords = _binaryReader.Read(datacardPath, tlg.A + ".bin", tim).ToList(); var sections = _sectionMapper.Map(new List <TIM> { tim }, isoRecords); var meters = sections != null?sections.SelectMany(x => x.GetWorkingDatas()).ToList() : new List <WorkingData>(); var operationData = new OperationData { GetSpatialRecords = () => _spatialRecordMapper.Map(isoRecords, meters), MaxDepth = 0, GetDeviceElementUses = x => x == 0 ? sections : new List <DeviceElementUse>(), PrescriptionId = prescrptionId }; operationData.Id.UniqueIds.Add(_uniqueIdMapper.Map(tlg.A)); if (linkedIds.ContainsKey(tlg.A)) { foreach (var linkedId in linkedIds[tlg.A]) { operationData.Id.UniqueIds.Add(linkedId); } } return(operationData); }
private IEnumerable <WorkingData> Map(DLV dlv, IEnumerable <ISOSpatialRow> isoSpatialRows, int sectionId, int order) { var meters = new List <WorkingData>(); if (_ddis.ContainsKey(Convert.ToInt32(dlv.A, 16))) { meters.Add(MapNumericMeter(dlv, sectionId, order)); return(meters); } var meterCreator = _enumeratedMeterCreatorFactory.GetMeterCreator(Convert.ToInt32(dlv.A, 16)); if (meterCreator != null) { var isoEnumeratedMeters = meterCreator.CreateMeters(isoSpatialRows); isoEnumeratedMeters.ForEach(x => x.Id.UniqueIds.Add(_uniqueIdMapper.Map("DLV" + order))); meters.AddRange(isoEnumeratedMeters); } return(meters); }