public Type867IntervalDetail ParseIntervalDetail(XElement element, IDictionary <string, XNamespace> namespaces) { XNamespace empty; if (!namespaces.TryGetValue(string.Empty, out empty)) { empty = XNamespace.None; } int intervalDetailKey; int intervalSummaryKey; int headerKey; int.TryParse(element.GetChildText(empty + "IntervalDetail_Key"), out intervalDetailKey); int.TryParse(element.GetChildText(empty + "IntervalSummary_Key"), out intervalSummaryKey); int.TryParse(element.GetChildText(empty + "Header_Key"), out headerKey); var model = new Type867IntervalDetail { IntervalDetailKey = intervalDetailKey, IntervalSummaryKey = intervalSummaryKey, HeaderKey = headerKey, TypeCode = element.GetChildText(empty + "TypeCode"), MeterNumber = element.GetChildText(empty + "MeterNumber"), ServicePeriodStart = element.GetChildText(empty + "ServicePeriodStart"), ServicePeriodEnd = element.GetChildText(empty + "ServicePeriodEnd"), ExchangeDate = element.GetChildText(empty + "ExchangeDate"), ChannelNumber = element.GetChildText(empty + "ChannelNumber"), MeterUOM = element.GetChildText(empty + "MeterUOM"), MeterInterval = element.GetChildText(empty + "MeterInterval"), MeterRole = element.GetChildText(empty + "MeterRole"), CommodityCode = element.GetChildText(empty + "CommodityCode"), NumberOfDials = element.GetChildText(empty + "NumberOfDials"), ServicePointId = element.GetChildText(empty + "ServicePointId"), UtilityRateServiceClass = element.GetChildText(empty + "UtilityRateServiceClass"), RateSubClass = element.GetChildText(empty + "RateSubClass") }; var quantitiesLoopElement = element.Element(empty + "IntervalDetailQtyLoop"); if (quantitiesLoopElement != null) { var quantityElements = quantitiesLoopElement.Elements(empty + "IntervalDetailQty"); foreach (var quantityElement in quantityElements) { var quantityModel = ParseIntervalDetailQty(quantityElement, namespaces); model.AddQuantity(quantityModel); } } return(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 int InsertIntervalDetail(Type867IntervalDetail model) { using (var connection = new SqlConnection(_connectionString)) using (var command = connection.CreateCommand("csp867IntervalDetailInsert")) { SqlParameter keyParameter; command.AddWithValue("@867_Key", model.HeaderKey) .AddWithValue("@IntervalSummary_Key", model.IntervalSummaryKey) .AddIfNotEmptyOrDbNull("@TypeCode", model.TypeCode) .AddIfNotEmptyOrDbNull("@MeterNumber", model.MeterNumber) .AddIfNotEmptyOrDbNull("@ServicePeriodStart", model.ServicePeriodStart) .AddIfNotEmptyOrDbNull("@ServicePeriodEnd", model.ServicePeriodEnd) .AddIfNotEmptyOrDbNull("@ExchangeDate", model.ExchangeDate) .AddIfNotEmptyOrDbNull("@ChannelNumber", model.ChannelNumber) .AddIfNotEmptyOrDbNull("@MeterUOM", model.MeterUOM) .AddIfNotEmptyOrDbNull("@MeterInterval", model.MeterInterval) .AddIfNotEmptyOrDbNull("@MeterRole", model.MeterRole) .AddWithValue("@CommodityCode", model.CommodityCode) .AddWithValue("@NumberOfDials", model.NumberOfDials) .AddWithValue("@ServicePointId", model.ServicePointId) .AddWithValue("@UtilityRateServiceClass", model.UtilityRateServiceClass) .AddWithValue("@RateSubClass", model.RateSubClass) .AddOutParameter("@IntervalDetail_Key", SqlDbType.Int, out keyParameter); if (connection.State != ConnectionState.Open) { connection.Open(); } command.ExecuteNonQuery(); if (keyParameter.Value == null) { throw new Exception(); } var key = (int)keyParameter.Value; model.IntervalDetailKey = key; return(key); } }