internal static async Task<Device> Create(Guid id, Environment environment, IEnvironmentService service) { service.ValidateNonNull(nameof(service)); var info = await service.Device(id); var result = new Device(environment, service, id, info.Name, info.Description, info.Location, info.IsAvailable, info.IsConnected); await DeviceProvider.AddDevices(environment, service, info.DeviceIds, result.Devices); await AddRecordables(environment, service, info.RecordableIds, result); return result; }
internal static async Task AddRecordables(Environment environment, IEnvironmentService service, IEnumerable<Guid> recordableIds, Device device) { IEnumerable<IRecordable> recordables = null; await Task.Run(() => { recordables = recordableIds. AsParallel().AsOrdered(). Select(rid => Recordable.Create(rid, environment, service).Result); }); device.Recordables.Add(recordables); }