/// <summary> /// Deploys the specified devices collection to the tracking service. /// </summary> /// <param name="devices">The reference to the devices collection to be deployed.</param> /// <returns>A reference to the collection of <see cref="TrackingDevice"/> objects /// containing information about deployed devices.</returns> private IEnumerable <TrackingDevice> _DeployDevices(IEnumerable <MobileDevice> devices) { Debug.Assert(devices != null); Debug.Assert(devices.All(device => device != null)); var trackingIds = devices.Select(device => device.TrackingId); var tsDevices = _LoadDevices(trackingIds) .ToLookup(device => device.Name); var trackingDevices = devices .Select(device => new TrackingDevice { Device = device, TrackingId = device.TrackingId, ServerId = 0, }) .ToArray(); var devicesToDeploy = new List <DM.Device>(); foreach (var device in trackingDevices) { var tsDevice = tsDevices[device.TrackingId].SingleOrDefault(); if (tsDevice == null) { tsDevice = new DM.Device(); tsDevice.Name = device.TrackingId; devicesToDeploy.Add(tsDevice); } else { device.ServerId = tsDevice.ObjectID; } } if (devicesToDeploy.Count > 0) { var serverIDs = _trackingService.AddMobileDevices(devicesToDeploy).ToList(); if (serverIDs.Count != devicesToDeploy.Count) { throw new TrackingException(Properties.Messages.Error_InvalidTSVehicleIds); } for (int i = 0; i < devicesToDeploy.Count; ++i) { var tsDevice = devicesToDeploy[i]; var td = _FindDeviceByTrackingId(trackingDevices, tsDevice.Name); Debug.Assert(td != null); td.ServerId = serverIDs[i]; } } return(trackingDevices); }
/// <summary> /// Deploys the specified devices collection to the tracking service. /// </summary> /// <param name="devices">The reference to the devices collection to be deployed.</param> /// <returns>A reference to the collection of <see cref="TrackingDevice"/> objects /// containing information about deployed devices.</returns> private IEnumerable<TrackingDevice> _DeployDevices(IEnumerable<MobileDevice> devices) { Debug.Assert(devices != null); Debug.Assert(devices.All(device => device != null)); var trackingIds = devices.Select(device => device.TrackingId); var tsDevices = _LoadDevices(trackingIds) .ToLookup(device => device.Name); var trackingDevices = devices .Select(device => new TrackingDevice { Device = device, TrackingId = device.TrackingId, ServerId = 0, }) .ToArray(); var devicesToDeploy = new List<DM.Device>(); foreach (var device in trackingDevices) { var tsDevice = tsDevices[device.TrackingId].SingleOrDefault(); if (tsDevice == null) { tsDevice = new DM.Device(); tsDevice.Name = device.TrackingId; devicesToDeploy.Add(tsDevice); } else device.ServerId = tsDevice.ObjectID; } if (devicesToDeploy.Count > 0) { var serverIDs = _trackingService.AddMobileDevices(devicesToDeploy).ToList(); if (serverIDs.Count != devicesToDeploy.Count) throw new TrackingException(Properties.Messages.Error_InvalidTSVehicleIds); for (int i = 0; i < devicesToDeploy.Count; ++i) { var tsDevice = devicesToDeploy[i]; var td = _FindDeviceByTrackingId(trackingDevices, tsDevice.Name); Debug.Assert(td != null); td.ServerId = serverIDs[i]; } } return trackingDevices; }