private static void LoadEmail(int eventID, List <Recipient> recipients, string subject, string body) { EventTableAdapter eventAdapter = s_dbAdapterContainer.GetAdapter <EventTableAdapter>(); MeterData.EventRow eventRow = eventAdapter.GetDataByID(eventID)[0]; MeterData.EventDataTable systemEvent = eventAdapter.GetSystemEvent(eventRow.StartTime, eventRow.EndTime, s_timeTolerance); FaultEmailTableAdapter faultEmailAdapter = s_dbAdapterContainer.GetAdapter <FaultEmailTableAdapter>(); FaultLocationData.FaultEmailDataTable faultEmailTable = new FaultLocationData.FaultEmailDataTable(); FaultLocationData.EventFaultEmailDataTable eventFaultEmailTable = new FaultLocationData.EventFaultEmailDataTable(); DateTime now = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, s_timeZone); string toLine = string.Join("; ", recipients.Select(recipient => recipient.Email)); BulkLoader bulkLoader; faultEmailTable.AddFaultEmailRow(now, toLine, subject, body); faultEmailAdapter.Update(faultEmailTable); foreach (MeterData.EventRow evt in systemEvent) { if (eventRow.LineID == evt.LineID) { eventFaultEmailTable.AddEventFaultEmailRow(evt.ID, faultEmailTable[0].ID); } } bulkLoader = new BulkLoader(); bulkLoader.Connection = s_dbAdapterContainer.Connection; bulkLoader.CommandTimeout = s_dbAdapterContainer.CommandTimeout; bulkLoader.Load(eventFaultEmailTable); }
private void LoadEvents(MeterDataSet meterDataSet, List <DataGroup> dataGroups, List <VICycleDataGroup> viCycleDataGroups, Dictionary <DataGroup, EventClassification> classifications) { DataGroup dataGroup; EventClassification eventClassification; int eventTypeID; MeterData.EventRow eventRow; MeterData.EventDataRow eventDataRow; m_eventTable = new MeterData.EventDataTable(); m_eventDataTable = new MeterData.EventDataDataTable(); m_eventList = new List <Tuple <WaveformKey, MeterData.EventRow> >(); for (int i = 0; i < dataGroups.Count; i++) { dataGroup = dataGroups[i]; if (dataGroup.Classification == DataClassification.Trend || dataGroup.Classification == DataClassification.Unknown) { continue; } if (!classifications.TryGetValue(dataGroup, out eventClassification)) { continue; } if (!s_eventTypeLookup.TryGetValue(eventClassification, out eventTypeID)) { continue; } Log.Debug(string.Format("Processing event with event type {0}.", eventClassification)); eventRow = m_eventTable.NewEventRow(); eventRow.FileGroupID = meterDataSet.FileGroup.ID; eventRow.MeterID = meterDataSet.Meter.ID; eventRow.LineID = dataGroup.Line.ID; eventRow.EventTypeID = eventTypeID; eventRow.Name = string.Empty; eventRow.StartTime = dataGroup.StartTime; eventRow.EndTime = dataGroup.EndTime; eventRow.Samples = dataGroup.Samples; eventRow.TimeZoneOffset = (int)m_timeZone.GetUtcOffset(dataGroup.StartTime).TotalMinutes; eventRow.SamplesPerSecond = (int)Math.Round(dataGroup.SamplesPerSecond); eventRow.SamplesPerCycle = Transform.CalculateSamplesPerCycle(dataGroup.SamplesPerSecond, m_systemFrequency); eventDataRow = m_eventDataTable.NewEventDataRow(); eventDataRow.FileGroupID = meterDataSet.FileGroup.ID; eventDataRow.RuntimeID = i; eventDataRow.TimeDomainData = dataGroup.ToData(); eventDataRow.FrequencyDomainData = viCycleDataGroups[i].ToDataGroup().ToData(); eventDataRow.MarkedForDeletion = 0; m_eventDataTable.AddEventDataRow(eventDataRow); m_eventList.Add(Tuple.Create(CreateWaveformKey(eventDataRow), eventRow)); } Log.Info(string.Format("Finished processing {0} events.", m_eventList.Count)); }
private List <MeterDataSet> LoadMeterDataSets(DbAdapterContainer dbAdapterContainer, FileGroup fileGroup) { List <MeterDataSet> meterDataSets = new List <MeterDataSet>(); MeterInfoDataContext meterInfo = dbAdapterContainer.GetAdapter <MeterInfoDataContext>(); EventTableAdapter eventAdapter = dbAdapterContainer.GetAdapter <EventTableAdapter>(); EventDataTableAdapter eventDataAdapter = dbAdapterContainer.GetAdapter <EventDataTableAdapter>(); MeterData.EventDataTable eventTable = eventAdapter.GetDataByFileGroup(fileGroup.ID); MeterDataSet meterDataSet; DataGroup dataGroup; foreach (IGrouping <int, MeterData.EventRow> eventGroup in eventTable.GroupBy(evt => evt.MeterID)) { meterDataSet = new MeterDataSet(); meterDataSet.Meter = meterInfo.Meters.SingleOrDefault(meter => meter.ID == eventGroup.Key); foreach (MeterData.EventRow evt in eventGroup) { dataGroup = new DataGroup(); dataGroup.FromData(meterDataSet.Meter, eventDataAdapter.GetTimeDomainData(evt.EventDataID)); foreach (DataSeries dataSeries in dataGroup.DataSeries) { meterDataSet.DataSeries.Add(dataSeries); } } meterDataSets.Add(meterDataSet); } return(meterDataSets); }