private void PerformSensorEnergyLogBatch(Sensor sensor, SensorLogBatch sensorLogBatch) { SensorEnergyLog previousLog = GetSensorEnergyLogLast(sensor); try { foreach (var contentLogItem in sensorLogBatch.Content.Split("|")) { Func <long, long> getSensorDimTimeId = (unixTime) => this.GetOrCreateSensorDimTime(sensor, unixTime).Id; var newEnergyLog = SensorEnergyLog.Parse(sensor, getSensorDimTimeId, contentLogItem); if (previousLog != null) { newEnergyLog.CalculateDuration(sensor.LogDurationMode, previousLog); } this.SensorEnergyLogs.Add(newEnergyLog); this.SaveOrUpdateSensorEnergyLog(newEnergyLog); previousLog = newEnergyLog; } this.SensorLogBatchs.Remove(sensorLogBatch); this.SaveChanges(); } catch (Exception e) { sensorLogBatch.Attempts++; sensorLogBatch.Exception = $"Message: {e.Message}\nSource: {e.Source}"; this.SaveChanges(); } }
public SensorEnergyLog CreateSensorEnergyLog(string sensorId, long sensorDimTimeId, long unixTime, float duration, float watts1, float watts2, float watts3, float convertToUnits) { var createSensorEnergyLog = new SensorEnergyLog() { SensorId = sensorId, SensorDimTimeId = sensorDimTimeId, UnixTime = unixTime, Duration = duration, Watts1 = watts1, Watts2 = watts2, Watts3 = watts3, WattsTotal = watts1 + watts2 + watts3, ConvertToUnits = convertToUnits }; this.SensorEnergyLogs.Add(createSensorEnergyLog); this.SaveChanges(); return(createSensorEnergyLog); }
private void SaveOrUpdateSensorEnergyLog(SensorEnergyLog newEnergyLog) { try { this.SaveChanges(); } catch (Exception e) { this.SensorEnergyLogs.Remove(newEnergyLog); var oldEnergyLog = this.SensorEnergyLogs .Where(log => (log.SensorId == newEnergyLog.SensorId) && (log.UnixTime == newEnergyLog.UnixTime)) .FirstOrDefault(); if (oldEnergyLog != null) { oldEnergyLog.Update(newEnergyLog); this.SaveChanges(); } else { throw e; } } }