private async Task <TrackingPoint> AddAsyncInternal(TrackingPoint trackingPoint, TrackingDeviceData deviceData) { var data = this.ObjectMapper.Map <TrackingPointData>(trackingPoint); var addedData = this.Db.Set <TrackingPointData>().Add(data); deviceData.LatestPosition = addedData; deviceData.Asset.LatestPosition = addedData; await this.Db.SaveChangesAsync(); return(this.ObjectMapper.Map <TrackingPoint>(await this.FindAsync(addedData.Id))); }
private async Task <TrackingPoint> AddAsyncInternal(TrackingPoint trackingPoint, TrackingDeviceData deviceData) { var data = this.ObjectMapper.Map <TrackingPointData>(trackingPoint); var addedData = this.Db.TrackingPoints.Add(data); this.Db.TrackingDevices.Attach(deviceData); var deviceLatestPointTime = deviceData?.LatestPosition?.DeviceTimestampUtc; if (!deviceLatestPointTime.HasValue || trackingPoint.DeviceTimestampUtc > deviceLatestPointTime.Value) { deviceData.LatestPosition = addedData; } var assetLatestPointTime = deviceData?.Asset?.LatestPosition?.DeviceTimestampUtc; if (!assetLatestPointTime.HasValue || trackingPoint.DeviceTimestampUtc > assetLatestPointTime.Value) { deviceData.Asset.LatestPosition = addedData; } await this.Db.SaveChangesAsync(); return(this.ObjectMapper.Map <TrackingPoint>(addedData)); }