Ejemplo n.º 1
0
        private void PopulateFieldMap(ParsedDataModel model, List <SensorModel> sensors)
        {
            var dataRow = model.Data.FirstOrDefault();

            if (null != dataRow)
            {
                if (model.FieldMap.Count > dataRow.Count)
                {
                    model.FieldMap = model.FieldMap.Take(dataRow.Count).ToList();
                }
                else
                {
                    int sensorIndex = 0;
                    int sensorCount = null != sensors ? sensors.Count : 0;
                    for (int i = model.FieldMap.Count; i < dataRow.Count; i++)
                    {
                        if (sensorIndex < sensorCount)
                        {
                            model.FieldMap.Add(sensors[sensorIndex++].Tag);
                        }
                        else
                        {
                            model.FieldMap.Add("");
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public async Task <ActionResult> Parse(RawDataModel data)
        {
            ParsedDataModel model = new ParsedDataModel();

            if (null == data)
            {
                return(View(model));
            }

            model.Key           = data.Key;
            model.DataFieldType = DataField.Value;
            List <SensorModel> sensors = null;

            if (!string.IsNullOrEmpty(model.Key))
            {
                Repository r = new Repository();

                sensors = await r.GetSensorsAsync(model.Key);
            }

            model.Data = this.ParseRawData(data);
            this.PopulateFieldMap(model, sensors);

            return(View(model));
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> UpdateData([FromBody] ParsedDataModel data)
        {
            await _mediator.Send(new UpdateData(data));

            return(new OkObjectResult(new { message = "all good" }));
        }
Ejemplo n.º 4
0
 public UpdateData(ParsedDataModel data)
 {
     NewData = data;
 }
 public async Task <ParsedDataModel> GetCurrentData() =>
 _localData = JsonConvert.DeserializeObject <ParsedDataModel>(await _fileService.GetRawData());
        public static InfectionsStatsModel MapToInfectionsStatsModel(LiveUpdateData liveData, ParsedDataModel parsedData)
        {
            if (liveData == null)
            {
                return(new InfectionsStatsModel());
            }

            var data = new InfectionsStatsModel()
            {
                Confirmed    = liveData.NumberDiagnosed ?? 0,
                Cured        = liveData.NumberCured ?? 0,
                Hospitalized = parsedData.PatientsInfo.Count(p => p.Condition == PatientCondition.Hospitalised),
                InQuarantine = liveData.NumberQuarantined ?? 0,
                Monitored    = liveData.NumberMonitoredAtHome ?? 0,
                Deaths       = parsedData.PatientsInfo.Count(p => p.Condition == PatientCondition.Deceased),
                InIcu        = parsedData.PatientsInfo.Count(p => p.Condition == PatientCondition.ICU),
                Date         = new DateTimeOffset(liveData.Timestamp).ToUnixTimeSeconds(),
                DateString   = liveData.Timestamp.ToShortDateString()
            };

            return(data);
        }
Ejemplo n.º 7
0
        public async Task <ActionResult> SaveParsed(ParsedDataModel data)
        {
            if (null == data || string.IsNullOrEmpty(data.Key))
            {
                ModelState.AddModelError("Key", "Key cannot be empty!");
                return(View("Parse", data));
            }

            data.Data = this.ParseRawData(data);

            Repository r = new Repository();

            List <MeasurementModel> measurements = new List <MeasurementModel>();
            MeasurementModel        mm;
            int timeIndex   = data.FieldMap.IndexOf(ParsedDataModel.MeasurementTimeField);
            int objectIndex = data.FieldMap.IndexOf(ParsedDataModel.MeasurementObjectField);
            int tagIndex    = data.FieldMap.IndexOf(ParsedDataModel.MeasurementTagField);

            foreach (var row in data.Data)
            {
                mm = new MeasurementModel()
                {
                    Timestamp = timeIndex > -1 ? row[timeIndex].ToDateTimeOffset() : DateTimeOffset.Now,
                    Object    = objectIndex > -1 ? row[objectIndex] : null,
                    Tag       = tagIndex > -1 ? row[tagIndex] : null,
                    Data      = new List <DataModel>()
                };

                DataModel d;
                switch (data.DataFieldType)
                {
                case DataField.LongValue:
                    for (int i = 0; i < row.Count; i++)
                    {
                        if (i != timeIndex && i != objectIndex && i != tagIndex)
                        {
                            if (string.IsNullOrEmpty(data.FieldMap[i]))
                            {
                                continue;
                            }
                            d = new DataModel()
                            {
                                Tag       = data.FieldMap[i],
                                LongValue = row[i].ToLong()
                            };

                            mm.Data.Add(d);
                        }
                    }
                    break;

                case DataField.Value:
                    for (int i = 0; i < row.Count; i++)
                    {
                        if (i != timeIndex && i != objectIndex && i != tagIndex)
                        {
                            if (string.IsNullOrEmpty(data.FieldMap[i]))
                            {
                                continue;
                            }
                            d = new DataModel()
                            {
                                Tag   = data.FieldMap[i],
                                Value = row[i].ToDouble()
                            };

                            mm.Data.Add(d);
                        }
                    }
                    break;

                default:
                    for (int i = 0; i < row.Count; i++)
                    {
                        if (string.IsNullOrEmpty(data.FieldMap[i]))
                        {
                            continue;
                        }
                        if (i != timeIndex && i != objectIndex && i != tagIndex)
                        {
                            d = new DataModel()
                            {
                                Tag       = data.FieldMap[i],
                                TextValue = row[i]
                            };

                            mm.Data.Add(d);
                        }
                    }
                    break;
                }
                measurements.Add(mm);
            }

            SaveResult result = null;

            try
            {
                result = await r.SaveMeasurementsAsync(data.Key, measurements.ToArray());
            }
            catch (KeyNotFoundException kex)
            {
                return(HttpNotFound(kex.Message));
            }
            catch (UnauthorizedAccessException uex)
            {
                return(HttpNotFound(uex.Message));
            }

            return(View(result));
        }