Пример #1
0
        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)));
        }
Пример #2
0
        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));
        }