コード例 #1
0
ファイル: DatabaseLoader.cs プロジェクト: barrett2474/CMS2
 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();
        }