Пример #1
0
        private void InitializeCommands()
        {
            CreateCommand = new RelayCommand((data) =>
            {
                BusinessEventManager.RaiseOnCreateRequested(Entity);
            });

            AddNewRelatedCommand = new RelayCommand((data) =>
            {
                var initialValues = new Dictionary <string, object>();
                initialValues.Add(FilterRelationsip.RelatedAttribute, new EntityReferenceValue()
                {
                    Id = FilterRelationsipId
                });
                BusinessEventManager.RaiseOnCreateRequested(Entity, initialValues);
            });

            AssociateCommand = new RelayCommand((data) =>
            {
                var availableValues            = GenericManager.RetrieveAll(FirstEntityAssociation);
                var availablesEntityReferences = availableValues
                                                 .Values
                                                 .Select(k => new EntityReferenceValue()
                {
                    Id = k.Id, DisplayName = (string)k.Values["Name"]
                })
                                                 .ToList();

                var initialEntityReferences = DataSetModel
                                              .Values
                                              .Select(k => new EntityReferenceValue()
                {
                    Id = k.Id, DisplayName = (string)k.Values["Name"]
                })
                                              .ToList();

                var associateWindow = new MultipleAssociationWindow(
                    $"Associate {FirstEntityAssociation}(s) to this {SecondEntityAssociation}",
                    "Association",
                    availablesEntityReferences,
                    initialEntityReferences);

                associateWindow.ShowDialog();
                var response = associateWindow.Response;
                if (response == MultipleAssociationWindow.MultipleAssociationResponse.OK)
                {
                    var selectedValues = associateWindow.SelectedValues;
                    foreach (var item in initialEntityReferences)
                    {
                        GenericManager.Disassociate(FilterRelationsip.MainEntity, FilterRelationsipId, FilterRelationsip.IntersectionName, FilterRelationsip.RelatedEntity, item.Id);
                    }
                    foreach (var item in selectedValues)
                    {
                        GenericManager.Associate(FilterRelationsip.MainEntity, FilterRelationsipId, FilterRelationsip.IntersectionName, FilterRelationsip.RelatedEntity, item.Id);
                    }
                    GetValues();
                }
            });

            RegisterCommand(AddNewRelatedCommand);
            RegisterCommand(CreateCommand);
            RegisterCommand(AssociateCommand);
        }