private MeasurementV1 CreateMeasurementFromVariable(Variable variable, IObservation observation, Metadata metadata) { // Look up property based on string, get value var value = observation.GetType().GetProperty(variable.FieldName).GetValue(observation, null); Nsar.Common.Measure.Models.PhysicalQuantity pq = new Nsar.Common.Measure.Models.PhysicalQuantity( Convert.ToDecimal(value), variable.Units); // TODO: create interface, use constructor injection Nsar.Common.Measure.PhysicalQuantityConverter pqConverter = new Nsar.Common.Measure.PhysicalQuantityConverter(); Nsar.Common.Measure.Models.PhysicalQuantity pqMetric = pqConverter.Convert(pq); string name = map.GetMeasurementName(variable.FieldName); DateTime measurementDateTime = new DateTime(observation.TIMESTAMP.Ticks, DateTimeKind.Utc); List <PhysicalQuantityV1> physicalQuantitis = new List <PhysicalQuantityV1>() { new PhysicalQuantityV1(pqMetric.Value, pqMetric.Unit, 0, 0, 0, DateTime.UtcNow, "CosmosDBSqlApiTransformer") }; LocationV1 location = new LocationV1("Point", map.GetLatFromStation(metadata), map.GetLonFromStation(metadata)); string fieldId = map.GetFieldID(metadata); string partitionKey = "EcTower_" + fieldId + "_" + name; string id = fieldId + "_" + name + "_" + measurementDateTime.ToString("o"); return(new MeasurementV1(partitionKey, id, DocumentType, name, TargetSchemaVersion, metadataId, "", "", "", "", null, fieldId, location, measurementDateTime, physicalQuantitis)); }
public MeasurementV1( string partitionKey, string id, string type, string name, string schemaVersion, string metadataID, string _rid, string _self, string _etag, string _attachements, int?_ts, string fieldId, LocationV1 location, DateTime measurementDateTime, List <PhysicalQuantityV1> physicalQuantities) { PartitionKey = partitionKey; ID = id; Type = type; Name = name; SchemaVersion = schemaVersion; MetadataID = metadataID; this._rid = _rid; this._self = _self; this._etag = _etag; this._attachments = _attachments; this._ts = _ts; FieldID = fieldId; Location = location; MeasurementDateTime = measurementDateTime; PhysicalQuantities = physicalQuantities; }