private void LastInserted(LastInserted last) { string collectionname = "600LastInserted"; var coll = _db.GetCollection <LastInserted>(collectionname); var filter = Builders <LastInserted> .Filter .Eq(x => x.Key, 1); coll.ReplaceOne(filter, last); }
public void SaveSession(SerializerSession session) { if (session != null && session.PumpDataHistory != null && (session.PumpDataHistory.PumpEvents.Count > 0 || session.PumpDataHistory.SensorEvents.Count > 0)) { LastInserted last = GetLastInserted(); if (session.PumpDataHistory.PumpEvents.Count > 0) { //Pump events var filteredpumpevents = session.PumpDataHistory.PumpEvents.Where(e => e.EventType != EventTypeEnum.PLGM_CONTROLLER_STATE).ToList(); if (last.Pump.Rtc != 0) { filteredpumpevents = filteredpumpevents.Where(e => e.Rtc > last.Pump.Rtc).ToList(); } if (filteredpumpevents.Count > 0) { //filteredpumpevents.ForEach(e => e.Index = 0); //filteredpumpevents.Last().Index = 1; this.InsertPumpEvent(filteredpumpevents, HistoryDataTypeEnum.Pump); session.PumpDataHistory.PumpEventsNew = filteredpumpevents; Logger.LogInformation($"{filteredpumpevents.Count} pumpevents uploaded to MongoDb"); last.Pump.Rtc = filteredpumpevents.Last().Rtc; } } if (session.PumpDataHistory.SensorEvents.Count > 0) { //sensor events var filteredsensorevents = session.PumpDataHistory.SensorEvents.Where(e => e.EventType != EventTypeEnum.PLGM_CONTROLLER_STATE ).ToList(); if (last.Sensor.Rtc != 0) { filteredsensorevents = filteredsensorevents.Where(e => e.Rtc > last.Sensor.Rtc).ToList(); } if (filteredsensorevents.Count > 0) { //filteredsensorevents.ForEach(e => e.Index = 0); //filteredsensorevents.Last().Index = 1; this.InsertPumpEvent(filteredsensorevents, HistoryDataTypeEnum.Sensor); session.PumpDataHistory.SensorEventsNew = filteredsensorevents; Logger.LogInformation($"{filteredsensorevents.Count} sensorevents uploaded to MongoDb"); last.Sensor.Rtc = filteredsensorevents.Last().Rtc; var readings = filteredsensorevents.Where(e => e.EventType == EventTypeEnum.SENSOR_GLUCOSE_READINGS_EXTENDED).Select(e => (SENSOR_GLUCOSE_READINGS_EXTENDED_Event)e.Message); var details = readings.SelectMany(e => e.Details).ToList(); this.InsertSensorData(details); Logger.LogInformation($"{details.Count} sensordetails uploaded to MongoDb"); } } if (string.IsNullOrEmpty(last.PumpSettings) || session.PumpSettings.IsNew(last.PumpSettings)) { last.PumpSettings = session.PumpSettings.GetCompareString(); SavePumpSettings(session.PumpSettings); } List <PumpStatusMessage> statusList = session.Status; if (last.StatusRtc != 0) { statusList = session.Status.Where(e => e.SgvDateTime.Rtc > last.StatusRtc).ToList(); } if (statusList.Count > 0) { this.Insert <PumpStatusMessage>("600PumpStatus", statusList); last.StatusRtc = statusList.Last().SgvDateTime.Rtc; } LastInserted(last); NightscoutMongoUploader uploader = new NightscoutMongoUploader(session); CancellationTokenSource _tokenSource = new CancellationTokenSource(); CancellationToken _token = _tokenSource.Token; uploader.Upload(_token); } else { Logger.LogInformation("No data uploaded to MongoDb"); } //await ReplaceOne(session.Device); }