private void ParseSwitch(Prism867Context context, string[] marketFields) { context.RecordType = GetRecordType(context, marketFields, 0); var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var model = new Type867Switch { TypeCode = context.RecordType, MeterNumber = marketFields.AtIndex(2), SwitchDate = marketFields.AtIndex(3) }; context.PushModel(model); header.AddSwitch(model); }
private void ParseUnmeterDetail(Prism867Context context, string servicePeriodStart, string servicePeriodEnd, string serviceType, string description) { var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var model = new Type867UnMeterDetail { TypeCode = context.RecordType, ServicePeriodStart = servicePeriodStart, ServicePeriodEnd = servicePeriodEnd, ServiceType = serviceType, Description = description }; context.PushModel(model); header.AddUnMeterDetail(model); }
private void ParseNetIntervalSummary(Prism867Context context, string[] marketFields) { var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var model = new Type867NetIntervalSummary { MeterUom = marketFields.AtIndex(6), MeterInterval = marketFields.AtIndex(7), TypeCode = context.RecordType }; context.PushModel(model); header.AddNetInervalSummary(model); }
private void ParseIntervalSummary(Prism867Context context, string[] marketFields) { var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var model = new Type867IntervalSummary { TypeCode = context.RecordType, ServicePeriodStart = marketFields.AtIndex(2), ServicePeriodEnd = marketFields.AtIndex(3), MeterUOM = string.Empty, MeterInterval = string.Empty, }; if (marketFields.AtIndex(0) == "07") { model.MeterNumber = context.EsiId; model.MeterRole = "A"; } else { model.MeterNumber = marketFields.AtIndex(4); model.MovementTypeCode = marketFields.AtIndex(18); model.ExchangeDate = marketFields.AtIndex(5); model.ChannelNumber = marketFields.AtIndex(16); model.MeterRole = marketFields.AtIndex(10); } var meterType = marketFields.AtIndex(6) + marketFields.AtIndex(7); if (meterType.Length > 1) { model.MeterUOM = meterType.Substring(0, 2); } if (meterType.Length > 2) { model.MeterInterval = meterType.Substring(2, 3); } context.PushModel(model); header.AddIntervalSummary(model); }
private void ParseNonIntervalSummary(Prism867Context context, string[] marketFields) { var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var meterType = string.Empty; switch (context.Market) { case MarketOptions.Texas: meterType = marketFields.AtIndex(6) + marketFields.AtIndex(7); break; case MarketOptions.Maryland: // MD 07 records will be imported along with with the 08 records // because the UOM is a part of the 08 record and must be read from there first context.R07ServicePeriodBeginDate = marketFields.AtIndex(2); context.R07ServicePeriodEndDate = marketFields.AtIndex(3); return; } var model = new Type867NonIntervalSummary { TypeCode = context.RecordType, MeterUOM = string.Empty, MeterInterval = string.Empty, }; if (meterType.Length > 1) { model.MeterUOM = meterType.Substring(0, 2); } if (meterType.Length > 2) { model.MeterInterval = meterType.Substring(2); } context.PushModel(model); header.AddNonIntervalSummary(model); }
private void ParseIntervalDetail(Prism867Context context, string[] marketFields) { context.RecordType = GetRecordType(context, marketFields, 0); switch (context.RecordType) { case "PM": break; default: logger.DebugFormat("Record Usage Type not found: {0}. Transaction Number \"{1}\".", context.RecordType, context.TransactionNumber); return; } var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var meterType = marketFields.AtIndex(6) + marketFields.AtIndex(7); var model = new Type867IntervalDetail { TypeCode = context.RecordType, MeterNumber = marketFields.AtIndex(4), ServicePeriodStart = marketFields.AtIndex(2), ServicePeriodEnd = marketFields.AtIndex(3), ExchangeDate = marketFields.AtIndex(5), ChannelNumber = marketFields.AtIndex(8), MeterRole = marketFields.AtIndex(9), MeterUOM = meterType.Length > 1 ? meterType.Substring(0, 2) : string.Empty, MeterInterval = meterType.Length > 2 ? meterType.Substring(2, 3) : string.Empty, }; context.PushModel(model); header.AddIntervalDetail(model); }
public void ParseNonIntervalSummaryForMaryland(Prism867Context context, string[] marketFields) { var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var model = new Type867NonIntervalSummary { TypeCode = context.RecordType, MeterUOM = string.Empty, MeterInterval = string.Empty, }; if (!string.IsNullOrEmpty(context.Uom)) { var meterType = context.Uom; if (meterType.Length > 1) { model.MeterUOM = meterType.Substring(0, 2); } if (meterType.Length > 2) { model.MeterInterval = meterType.Substring(2); } } context.PushModel(model); header.AddNonIntervalSummary(model); }
private void ParseHeader(Prism867Context context, string[] marketFields) { context.TransactionNumber = marketFields.AtIndex(6); context.ReportTypeCode = marketFields.AtIndex(4); // since we are going to end up with the value at 16 // if the value in 35 is null or empty... context.EsiId = marketFields.AtIndex(16); // let's try to the value at 35 // if there it will overwrite what we already have marketFields.TryAtIndex(35, x => context.EsiId = x); var model = new Type867Header { DirectionFlag = true, TransactionSetId = context.Alias, TransactionNbr = context.TransactionNumber, TransactionDate = marketFields.AtIndex(12), ReportTypeCode = context.ReportTypeCode, EsiId = context.EsiId, ActionCode = marketFields.AtIndex(5), PowerRegion = marketFields.AtIndex(38), OriginalTransactionNbr = marketFields.AtIndex(7), ReferenceNbr = marketFields.AtIndex(39), TdspDuns = marketFields.AtIndex(8), TdspName = marketFields.AtIndex(9), CrDuns = marketFields.AtIndex(10), CrName = marketFields.AtIndex(11), UtilityAccountNumber = marketFields.AtIndex(16), EstimationReason = marketFields.AtIndex(48), EstimationDescription = marketFields.AtIndex(49), DoorHangerFlag = marketFields.AtIndex(50), EsnCount = marketFields.AtIndex(51), QoCount = marketFields.AtIndex(52) }; marketFields.TryAtIndex(3, x => model.TransactionSetPurposeCode = x); if (!string.IsNullOrEmpty(model.TransactionDate) && model.TransactionDate.Length > 8) { model.TransactionDate = model.TransactionDate.Substring(0, 8); } var identifiedMarket = clientDataAccess.IdentifyMarket(model.TdspDuns); if (identifiedMarket.HasValue) { context.SetMarket(identifiedMarket.Value); } else { context.MarkAsInvalid(string.Format("Failed to load LDC Record for DUNS \"{0}\".", model.TdspDuns ?? "(null)")); return; } model.MarketID = context.MarketId; model.MarketFileId = context.MarketFileId; context.PushModel(model); }
private void ParseIntervalSummaryAcrossMeters(Prism867Context context, string[] marketFields) { context.RecordType = GetRecordType(context, marketFields, 0); switch (context.RecordType) { case "PP": break; default: logger.DebugFormat("Record Usage Type not found: {0}. Transaction Number \"{1}\".", context.RecordType, context.TransactionNumber); return; } var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var model = new Type867IntervalSummaryAcrossMeters { TypeCode = context.RecordType, MeterRole = marketFields.AtIndex(6), MeterUOM = string.Empty, MeterInterval = string.Empty, }; var servicePeriodStart = marketFields.AtIndex(2); if (servicePeriodStart.Length < 9) { model.ServicePeriodStart = servicePeriodStart; } else { model.ServicePeriodStart = servicePeriodStart.Substring(0, 8); model.ServicePeriodStartTime = servicePeriodStart.Substring(8); } var servicePeriodEnd = marketFields.AtIndex(3); if (servicePeriodEnd.Length < 9) { model.ServicePeriodEnd = servicePeriodEnd; } else { model.ServicePeriodEnd = servicePeriodEnd.Substring(0, 8); model.ServicePeriodEndTime = servicePeriodEnd.Substring(8); } var meterType = marketFields.AtIndex(4) + marketFields.AtIndex(5); if (meterType.Length > 1) { model.MeterUOM = meterType.Substring(0, 2); } if (meterType.Length > 2) { model.MeterInterval = meterType.Substring(2, 3); } context.PushModel(model); header.AddIntervalSummaryAcrossMeters(model); }
private void ParseNonIntervalDetail(Prism867Context context, string[] marketFields) { var current = context.Current; if (current == null || current.ModelType != Type867Types.Header) { throw new InvalidOperationException(); } var header = current as Type867Header; if (header == null) { throw new InvalidOperationException(); } var meterType = string.Empty; string ratchetDateTime = null; switch (context.Market) { case MarketOptions.Texas: meterType = marketFields.AtIndex(6) + marketFields.AtIndex(7); break; case MarketOptions.Maryland: meterType = context.Uom; break; case MarketOptions.Georgia: ratchetDateTime = marketFields.AtIndex(31); break; } var model = new Type867NonIntervalDetail { TypeCode = context.RecordType, MeterNumber = marketFields.AtIndex(4), MovementTypeCode = marketFields.AtIndex(18), ServicePeriodStart = marketFields.AtIndex(2), ServicePeriodEnd = marketFields.AtIndex(3), ExchangeDate = marketFields.AtIndex(5), MeterRole = marketFields.AtIndex(10), MeterUom = string.Empty, MeterInterval = string.Empty, RatchetDateTime = ratchetDateTime }; if (!string.IsNullOrEmpty(meterType)) { if (meterType.Length > 1) { model.MeterUom = meterType.Substring(0, 2); } if (meterType.Length > 2) { model.MeterInterval = meterType.Substring(2); } } context.PushModel(model); header.AddNonIntervalDetail(model); }