private MeasurementsDTO GenerateMeasurementsDTO(string input)
        {
            try
            {
                string pattern = "Measurement Date: (.*?)" + "\r\n"
                                 + "Body temperature: (.*?)" + "\r\n"
                                 + "Blood Oxygen Level: (.*?)" + "\r\n"
                                 + "Heart Pulse Rate: (.*?)" + "\r\n";
                RegexOptions options = RegexOptions.Multiline;
                string[]     measurementsDataArray = Regex.Split(input, pattern, options);
                if (ValidateRequestFields(measurementsDataArray))
                {
                    MeasurementsDTO measurementsDTO = new MeasurementsDTO();
                    measurementsDTO.MeasurementDate  = measurementsDataArray[1];
                    measurementsDTO.BodyTemperature  = measurementsDataArray[2];
                    measurementsDTO.BloodOxygenLevel = measurementsDataArray[3];
                    measurementsDTO.HeartPulse       = measurementsDataArray[4];
                    return(measurementsDTO);
                }

                return(null);
            }
            catch (Exception exception)
            {
                this.devLogger.Log(exception);
                return(null);
            }
        }
        public void MeasurementsDTOJsonTest()
        {
            MeasurementsDTO firstInstance = new MeasurementsDTO();

            firstInstance.MeasurementDate  = "2021-05-08 17:30";
            firstInstance.BloodOxygenLevel = "91";
            firstInstance.BodyTemperature  = "36.55";
            firstInstance.HeartPulse       = "99";
            string firstInstanceJson = firstInstance.ToJson();

            MeasurementsDTO secondInstance = new MeasurementsDTO();

            secondInstance = MeasurementsDTO.FromJson(firstInstanceJson);

            string secondInstanceJson = secondInstance.ToJson();

            Assert.Equal(firstInstanceJson, secondInstanceJson);
        }
 private void SendMeasurmentsToDatabase(MeasurementsDTO measurementsDTO, string deviceID)
 {
     try
     {
         if (measurementsDTO != null && deviceID != null)
         {
             string jsonData   = measurementsDTO.ToJson();
             string entryIndex = this.entryIndexManager.GetEntryIndexAndIncrement(deviceID).ToString();
             this.firebaseClient.PutData($"users\\{deviceID}\\measurementsList", entryIndex, jsonData);
         }
         else
         {
             throw new Exception("Invalid measurementsDTO or deviceID.");
         }
     }
     catch (Exception exception)
     {
         this.devLogger.Log(exception);
     }
 }
        public static List <MeasurementsDTO> MapMeasurements(List <MeasurementsInfo> measurementsInfo)
        {
            var measurementsDTOList = new List <MeasurementsDTO>();

            foreach (var measurement in measurementsInfo)
            {
                var measurementDTO = new MeasurementsDTO();

                measurementDTO.location  = measurement.location;
                measurementDTO.parameter = measurement.parameter;
                measurementDTO.value     = measurement.value;
                measurementDTO.unit      = measurement.unit;
                measurementDTO.utc       = measurement.date.utc.ToString();
                measurementDTO.local     = measurement.date.local.ToString();
                measurementDTO.latitude  = measurement.coordinates.latitude;
                measurementDTO.longitude = measurement.coordinates.longitude;

                measurementsDTOList.Add(measurementDTO);
            }

            return(measurementsDTOList);
        }
 private bool ProcessMeasurments(string encryptedBody)
 {
     try
     {
         string          decryptedBody   = ProcessEncryptedResponse(encryptedBody);
         string          deviceID        = ExtractDeviceID(decryptedBody);
         MeasurementsDTO measurementsDTO = GenerateMeasurementsDTO(decryptedBody);
         if (measurementsDTO == null)
         {
             return(false);
         }
         if (this.verbose)
         {
             PrintLog(decryptedBody);
         }
         SendMeasurmentsToDatabase(measurementsDTO, deviceID);
         return(true);
     }
     catch (Exception exception)
     {
         this.devLogger.Log(exception);
         return(false);
     }
 }