コード例 #1
0
        private CrmServiceClient GetCrmService(CrmConnectionInfo crmConnectionInfo)
        {
            string           connStr    = _connectionHelper.BuildConnectionString(crmConnectionInfo);
            CrmServiceClient crmService = new CrmServiceClient(connStr);

            return(crmService);
        }
コード例 #2
0
        public CrmConnectionInfo RetrieveConnection(Guid orgId)
        {
            List <CrmConnectionInfo> crmConnections = RetrieveAvailableConnections();

            CrmConnectionInfo connectionInfo = crmConnections.FirstOrDefault(x => x.OrganizationId == orgId);

            return(connectionInfo);
        }
コード例 #3
0
        public void InitConnectionControl(CrmConnectionInfo crmConnectionToExclude)
        {
            var connectionViewModel = connectionUC.DataContext as ConnectionViewModel;

            connectionViewModel.ConnectionToExclude = crmConnectionToExclude;

            connectionViewModel.Init();
        }
コード例 #4
0
        private void CloseConnectionWindow(object sender, EventArgs e)
        {
            if (sender != null)
            {
                CrmConnectionInfo = sender as CrmConnectionInfo;
            }

            this.Close();
        }
コード例 #5
0
        private void SaveConnectionInfo(CrmConnectionInfo crmConnectionInfo)
        {
            ConnectionHelper connectionHelper = new ConnectionHelper();

            string credentialId = connectionHelper.GetCredentialId(crmConnectionInfo);

            SaveCredential(credentialId);

            connectionHelper.AddNewConnection(crmConnectionInfo);
        }
コード例 #6
0
        public void DeleteConnection(Guid orgId)
        {
            List <CrmConnectionInfo> crmConnections = RetrieveAvailableConnections();

            CrmConnectionInfo connectionToRemove = crmConnections.FirstOrDefault(x => x.OrganizationId == orgId);


            if (connectionToRemove != null)
            {
                crmConnections.Remove(connectionToRemove);
            }

            UpdateConnections(crmConnections);
        }
コード例 #7
0
        public DataReaderTestsSandbox()
            : base()
        {
            // Arrange by registering our fake services into the test container.
            FakeCrmDbConnection = this.RegisterMockInstance <CrmDbConnection>();
            this.Container.Register <DbConnection>(FakeCrmDbConnection);

            CrmConnectionInfo connInfo = new CrmConnectionInfo();

            connInfo.BusinessUnitId   = Guid.NewGuid();
            connInfo.OrganisationId   = Guid.NewGuid();
            connInfo.OrganisationName = "UnitTesting";
            connInfo.ServerVersion    = "1.0.0.0";
            connInfo.UserId           = Guid.NewGuid();

            FakeCrmDbConnection.Stub(c => c.ConnectionInfo).Return(connInfo);

            SchemaTableProvider = new SchemaTableProvider();
            this.Container.Register <ISchemaTableProvider>(SchemaTableProvider); // Singleton.

            // Create some fake results data
            FakeResultSet = new EntityResultSet(null, null, null);
            FakeResultSet.ColumnMetadata = new List <ColumnMetadata>();

            var firstNameAttInfo = new StringAttributeInfo();

            firstNameAttInfo.AttributeType = AttributeTypeCode.String;
            firstNameAttInfo.LogicalName   = "firstname";
            var firstNameC = new ColumnMetadata(firstNameAttInfo);

            var lastNameAttInfo = new StringAttributeInfo();

            lastNameAttInfo.AttributeType = AttributeTypeCode.String;
            lastNameAttInfo.LogicalName   = "lastname";
            var lastnameC = new ColumnMetadata(lastNameAttInfo);

            FakeResultSet.ColumnMetadata.Add(firstNameC);
            FakeResultSet.ColumnMetadata.Add(lastnameC);
            FakeResultSet.Results = new EntityCollection(new List <Entity>());
            var result = new Entity("contact");

            result.Id           = Guid.NewGuid();
            result["firstname"] = "joe";
            result["lastname"]  = "schmoe";
            FakeResultSet.Results.Entities.Add(result);

            this.Container.Register <EntityResultSet>(FakeResultSet);
            this.Container.Register <ResultSet>(FakeResultSet);
        }
コード例 #8
0
        public void AddNewConnection(CrmConnectionInfo crmConnectionInfo)
        {
            List <CrmConnectionInfo> crmConnections = RetrieveAvailableConnections();

            CrmConnectionInfo existingCrmConnectionInfo = crmConnections.FirstOrDefault(x => x.OrganizationId == crmConnectionInfo.OrganizationId);

            if (existingCrmConnectionInfo != null)
            {
                existingCrmConnectionInfo = crmConnectionInfo;//To Do might need to remove the Old Credential if one exists
            }
            else
            {
                crmConnections.Add(crmConnectionInfo);
            }
            UpdateConnections(crmConnections);
        }
コード例 #9
0
        public string BuildConnectionString(CrmConnectionInfo crmConnectionInfo)
        {
            string credentialId = GetCredentialId(crmConnectionInfo);


            SavedCredentials credential = CredentialManager.ReadCredentials(credentialId);



            string connectionString = BuildConnectionString(crmConnectionInfo.OrganizationURL,
                                                            crmConnectionInfo.AuthType,
                                                            crmConnectionInfo.Domain,
                                                            credential.UserName,
                                                            credential.Password);

            return(connectionString);
        }
コード例 #10
0
        public DataReaderTestsSandbox()
            : base()
        {
            // Arrange by registering our fake services into the test container.
            FakeCrmDbConnection = this.RegisterMockInstance<CrmDbConnection>();
            this.Container.Register<DbConnection>(FakeCrmDbConnection);

            CrmConnectionInfo connInfo = new CrmConnectionInfo();
            connInfo.BusinessUnitId = Guid.NewGuid();
            connInfo.OrganisationId = Guid.NewGuid();
            connInfo.OrganisationName = "UnitTesting";
            connInfo.ServerVersion = "1.0.0.0";
            connInfo.UserId = Guid.NewGuid();

            FakeCrmDbConnection.Stub(c => c.ConnectionInfo).Return(connInfo);

            SchemaTableProvider = new SchemaTableProvider();
            this.Container.Register<ISchemaTableProvider>(SchemaTableProvider); // Singleton.

            // Create some fake results data
            FakeResultSet = new EntityResultSet(null, null, null);
            FakeResultSet.ColumnMetadata = new List<ColumnMetadata>();

            var firstNameAttInfo = new StringAttributeInfo();
            firstNameAttInfo.AttributeType = AttributeTypeCode.String;
            firstNameAttInfo.LogicalName = "firstname";
            var firstNameC = new ColumnMetadata(firstNameAttInfo);

            var lastNameAttInfo = new StringAttributeInfo();
            lastNameAttInfo.AttributeType = AttributeTypeCode.String;
            lastNameAttInfo.LogicalName = "lastname";
            var lastnameC = new ColumnMetadata(lastNameAttInfo);

            FakeResultSet.ColumnMetadata.Add(firstNameC);
            FakeResultSet.ColumnMetadata.Add(lastnameC);
            FakeResultSet.Results = new EntityCollection(new List<Entity>());
            var result = new Entity("contact");
            result.Id = Guid.NewGuid();
            result["firstname"] = "joe";
            result["lastname"] = "schmoe";
            FakeResultSet.Results.Entities.Add(result);

            this.Container.Register<EntityResultSet>(FakeResultSet);
            this.Container.Register<ResultSet>(FakeResultSet);
        }
コード例 #11
0
        private CrmConnectionInfo GetCrmConnectionInfo(CrmServiceClient crmServiceClient)
        {
            WhoAmIRequest whoAmIRequest = new WhoAmIRequest();

            WhoAmIResponse whoAmIresponse = (WhoAmIResponse)crmServiceClient.Execute(whoAmIRequest);


            CrmConnectionInfo crmConnectionInfo = new CrmConnectionInfo
            {
                OrganizationId  = whoAmIresponse.OrganizationId,
                UserId          = whoAmIresponse.UserId,
                OrganizationURL = ConnectionItem.OrganizationURL,
                OrgDisplayName  = crmServiceClient.ConnectedOrgFriendlyName,
                OrgUniqueName   = crmServiceClient.ConnectedOrgUniqueName,
                AuthType        = ConnectionItem.AuthType,
                Domain          = ConnectionItem.Domain
            };

            return(crmConnectionInfo);
        }
コード例 #12
0
        public void OpenConnectionWindow(CrmConnectionInfo selectedSourceConnection)
        {
            CrmLoginWindow loginWindow = new CrmLoginWindow();

            loginWindow.InitConnectionControl(selectedSourceConnection);
            loginWindow.ShowDialog();

            if (loginWindow.CrmConnectionInfo != null)
            {
                var mainVM = this.DataContext as MainViewModel;

                if (selectedSourceConnection != null)
                {
                    mainVM.SelectedTargetConnection = loginWindow.CrmConnectionInfo;
                }
                else
                {
                    mainVM.SelectedSourceConnection = loginWindow.CrmConnectionInfo;
                }
            }
        }
コード例 #13
0
 public void ConnectionComplete(CrmConnectionInfo crmConnectionInfo)
 {
     OnConnectionComplete?.Invoke(crmConnectionInfo, null);
 }
コード例 #14
0
        public async Task BuildConnectionAsync()
        {
            ConnectionInProgress = true;

            string            connectionString  = "";
            CrmConnectionInfo crmConnectionInfo = null;


            ConnectionHelper connectionHelper = new ConnectionHelper();

            if (SelectedConnection != null)
            {
                crmConnectionInfo = SelectedConnection;
                connectionString  = connectionHelper.BuildConnectionString(SelectedConnection);
            }
            else
            {
                if (ConnectionItem == null || string.IsNullOrWhiteSpace(ConnectionItem.OrganizationURL) || !IsURLValid(ConnectionItem.OrganizationURL))
                {
                    SetMessageNotification(NotificationType.Error, "Please provide a  valid Organization URL");
                }

                if (string.IsNullOrWhiteSpace(ConnectionItem.AuthType))
                {
                    SetMessageNotification(NotificationType.Error, "Please provide Auth Type");
                }

                connectionString = connectionHelper.BuildConnectionString(ConnectionItem.OrganizationURL,
                                                                          ConnectionItem.AuthType,
                                                                          ConnectionItem.Domain,
                                                                          ConnectionItem.UserName,
                                                                          ConnectionItem.Password);
            }
            CrmServiceClient crmServiceClient = null;
            string           connectionError  = null;
            await Task.Factory.StartNew(() =>
            {
                try
                {
                    crmServiceClient = new CrmServiceClient(connectionString);

                    connectionError = crmServiceClient.LastCrmError;
                }
                catch (Exception ex)
                {
                    connectionError = ex.Message;
                }
            });

            if (!string.IsNullOrWhiteSpace(connectionError))
            {
                SetMessageNotification(NotificationType.Error, connectionError);
            }

            ConnectionInProgress = false;

            if (crmServiceClient != null && crmServiceClient.IsReady)
            {
                if (crmConnectionInfo == null)
                {
                    crmConnectionInfo = GetCrmConnectionInfo(crmServiceClient);

                    if (SaveConnection)
                    {
                        SaveConnectionInfo(crmConnectionInfo);
                    }
                }

                ConnectionComplete(crmConnectionInfo);
            }
        }
コード例 #15
0
        public string GetCredentialId(CrmConnectionInfo crmConnectionInfo)
        {
            string credentialId = crmConnectionInfo.OrganizationId.ToString().Replace("-", "") + "_" + crmConnectionInfo.UserId.ToString().Replace("-", "");

            return(credentialId);
        }