Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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;
        }