public static Task<List<ControlSystemProperty>> GetControlSystemProperties(int componentTypeId) { var task = new TaskCompletionSource<List<ControlSystemProperty>>(); var cee = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint); cee.GetControlSystemPropertiesCompleted += (s, e) => task.SetResult(e.Result); cee.GetControlSystemPropertiesAsync(componentTypeId); return task.Task; }
public AddEditExistingControlSystemComponentPropertyViewModel(ControlSystemComponentType controlSystemEquipmentComponentType, int? groupId) { //Adding PropertyComboEnabled = true; GroupComboEnabled = true; mGroupId = groupId; mComponentTypeId = controlSystemEquipmentComponentType.Id; OkButtonCommand = new DelegateCommand<object>(OkButtonHander, CanModify); CancelButtonCommand = new DelegateCommand<object>(CancelButtonHander, x => true); var cmsWebServiceClient = new CmsWebServiceClient(Utils.WcfBinding, Utils.WcfEndPoint); Properties = new List<ControlSystemProperty>(); //Load Component types EventHandler<GetAllControlSystemPropertiesCompletedEventArgs> fetchCompleted = (s, eventArgs) => { var getControlSystemPropertiesTask = DatabaseLoader.GetControlSystemProperties(controlSystemEquipmentComponentType.Id); var getControlSystemComponentTypeGroupsTask = DatabaseLoader.GetControlSystemComponentTypeGroups( CommonUtils.EquipmentPropertyType.ControlEngineeringProperty, controlSystemEquipmentComponentType.Id); var tasks = new List<Task> {getControlSystemPropertiesTask, getControlSystemComponentTypeGroupsTask}; Task.Factory.ContinueWhenAll(tasks.ToArray(), xx => { CMS.UiFactory.StartNew(() => { Groups = getControlSystemComponentTypeGroupsTask.Result; Groups.Insert(0, new ComponentTypeGroup {Name = "Null"}); var listOfAssignedPropertyIds = new List<int>(); getControlSystemPropertiesTask.Result.ForEach(x => listOfAssignedPropertyIds.Add(x.Id)); foreach (var componentProperty in eventArgs.Result) { if (!listOfAssignedPropertyIds.Contains(componentProperty.Id)) { Properties.Add(componentProperty); } } if (Properties.Count > 0) SelectedProperty = Properties[0]; if (Groups.Count > 0) { if (groupId.HasValue) { Group = Groups.FirstOrDefault(x => x.Id == groupId.Value); GroupComboEnabled = false; } else { Group = Groups[0]; } OriginalSelectedGroup = Group; } Loaded(); }); }); cmsWebServiceClient.GetControlSystemPropertiesAsync(controlSystemEquipmentComponentType.Id); }; cmsWebServiceClient.GetAllControlSystemPropertiesCompleted += fetchCompleted; cmsWebServiceClient.GetAllControlSystemPropertiesAsync(); }