AgGateway.ADAPT.ISOv4Plugin.ExportMappers.BinaryWriter.GetMeterValuesAndAssignDlvNumbers C# (CSharp) Method

GetMeterValuesAndAssignDlvNumbers() private method

private GetMeterValuesAndAssignDlvNumbers ( AgGateway.ADAPT.ApplicationDataModel.LoggedData.SpatialRecord spatialRecord, List meters ) : uint>.Dictionary
spatialRecord AgGateway.ADAPT.ApplicationDataModel.LoggedData.SpatialRecord
meters List
return uint>.Dictionary
        private Dictionary<int, uint> GetMeterValuesAndAssignDlvNumbers(SpatialRecord spatialRecord, List<WorkingData> meters)
        {
            var dlvValues = new Dictionary<int, uint>();

            for (int meterIndex = 0; meterIndex < meters.Count; meterIndex++)
            {
                var meter = meters[meterIndex];
                var numericMeter = meter as NumericWorkingData;
                UInt32? value = null;
                if (numericMeter != null && spatialRecord.GetMeterValue(numericMeter) != null)
                {
                    value = _numericValueMapper.Map(numericMeter, spatialRecord);
                }

                var isoEnumerateMeter = meter as ISOEnumeratedMeter;
                if (isoEnumerateMeter != null && spatialRecord.GetMeterValue(isoEnumerateMeter) != null)
                {
                    value = _enumeratedValueMapper.Map(isoEnumerateMeter, new List<WorkingData> {meter}, spatialRecord);
                }

                if (value == null)
                    continue;

                if (_previousDlvs.ContainsKey(meterIndex) && _previousDlvs[meterIndex] != value)
                {
                    _previousDlvs[meterIndex] = value.Value;
                    dlvValues.Add(meterIndex, value.Value);
                }
                else if (!_previousDlvs.ContainsKey(meterIndex))
                {
                    _previousDlvs.Add(meterIndex, value.Value);
                    dlvValues.Add(meterIndex, value.Value);
                }
            }

            return dlvValues;
        }