Example #1
0
        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);
        }
Example #2
0
        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);
        }