public void ChangeOnlyExternalIdentifier()
        {
            var request = new ContactRequest
            {
                Id = _myContactId,
                ExternalIdentifier = "Unit_Test_New_External_ID"
            };
            using (var client = TestHelper.ClientGet())
            {
                // Change only external ID.

                client.GenericCall(TestHelper.ApiKey, TestHelper.SiteKey, CiviEntity.Contact, ApiAction.Create, request);

                // Get contact again, to check whether all went fine.

                var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey,
                    new ContactRequest {Id = _myContactId});

                Assert.AreEqual(request.ExternalIdentifier, contact.ExternalIdentifier);
                Assert.AreEqual(MyFirstName, contact.FirstName);
                Assert.AreEqual(MyLastName, contact.LastName);
            }
        }
Пример #2
0
        /// <summary>
        /// Create a new contact with an external ID.
        /// </summary>
        public static void Example5()
        {
            using (var client = _factory.CreateChannel())
            {
                var contact = new ContactRequest
                {
                    ContactType = ContactType.Individual,
                    FirstName = "Lucky",
                    LastName = "Luke",
                    BirthDate = new DateTime(1946, 3, 3),
                    Gender = Gender.Male,
                    ExternalIdentifier = "YADAYADA",
                    ApiOptions = new ApiOptions { Match = "external_identifier" }
                };
                var result = client.ContactSave(ApiKey, SiteKey, contact);

                ShowContact(result.Values.FirstOrDefault());

                client.ContactDelete(ApiKey, SiteKey, new DeleteRequest(result.Id.Value), 1);
            }
        }
Пример #3
0
        /// <summary>
        /// This example updates a contact with a given external ID, without
        /// knowing the CiviCRM ID.
        /// </summary>
        public static void Example3()
        {
            using (var client = _factory.CreateChannel())
            {
                var contactRequest = new ContactRequest
                {
                    ExternalIdentifier = ExternalId,
                    FirstName = "Wesley",
                    LastName = "Decabooter",
                    // use external ID to find the contact, instead of contact id.
                    ApiOptions = new ApiOptions{Match = "external_identifier"}
                };

                client.ContactSave(
                    ApiKey, SiteKey, contactRequest 
                    );

                // Get the contact again. First name and last name
                // should be updated. Other info should still be
                // there.

                var contact = client.ContactGetSingle(ApiKey, SiteKey, new ContactRequest {ExternalIdentifier = ExternalId});
                ShowContact(contact);
            }
        }
        public void ChainedSearchRequest()
        {
            using (var client = TestHelper.ClientGet())
            {
                // Create a contact, chain website.
                var my1StWebsite = new WebsiteRequest { Url = "http://smurf.com", WebsiteType = WebsiteType.Main};
                var my2NdWebsite = new WebsiteRequest { Url = "http://salsaparilla.org", WebsiteType = WebsiteType.Work};

                var newContact = new ContactRequest
                {
                    ContactType = ContactType.Individual,
                    LastName = "Smurf",
                    FirstName = "Smul",
                    ExternalIdentifier = "Test_External_Smurf",
                    ApiOptions = new ApiOptions { Match = "external_identifier" },
                    WebsiteSaveRequest = new List<WebsiteRequest> { my1StWebsite, my2NdWebsite }
                };

                var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, newContact);
                Debug.Assert(result.Id.HasValue);

                // Get contact with main websites
                var contact = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey,
                    new ContactRequest
                    {
                        Id = result.Id.Value,
                        WebsiteGetRequest = new WebsiteRequest {WebsiteType = WebsiteType.Main}
                    });
                Assert.IsNotNull(contact.Id);

                // Clean up first (delete contact), then do other assertions.
                // (So the contact gets deleted even if the assertions fail.)
                client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(contact.Id), 1);

                Assert.IsTrue(contact.WebsiteResult.Values.All(w => w.WebsiteType == WebsiteType.Main));
                Assert.IsTrue(contact.WebsiteResult.Values.Any(w => w.Url == my1StWebsite.Url));
            }
        }
        public void ApiOptions()
        {
            using (var client = TestHelper.ClientGet())
            {
                var contact = new ContactRequest
                {
                    ContactType = ContactType.Individual,
                    ExternalIdentifier = MyExternalId,
                    FirstName = "Wesley",
                    LastName = "Decabooter",
                    // use external ID to find the contact, instead of contact id.
                    ApiOptions = new ApiOptions { Match = "external_identifier" }
                };

                var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, contact);

                Assert.AreEqual(0, result.IsError);
                Assert.AreEqual(_myContactId, result.Id);
                Assert.AreEqual(_myContactId, result.Values.First().Id);
                Assert.AreEqual(contact.FirstName, result.Values.First().FirstName);
                Assert.AreEqual(contact.LastName, result.Values.First().LastName);
            }
        }
        public void SortAndLimit()
        {
            using (var client = TestHelper.ClientGet())
            {
                var contactRequest = new ContactRequest
                {
                    // Because of upstream issue CRM-15905, you cannot search contacts on 'id'.
                    // A workaround is writing 'contact_a.id'.
                    // https://issues.civicrm.org/jira/browse/CRM-15905
                    ApiOptions = new ApiOptions {Sort = "contact_a.id DESC", Limit = 2}
                };

                var result = client.ContactGet(TestHelper.ApiKey, TestHelper.SiteKey, contactRequest);

                Assert.AreEqual(0, result.IsError);
                Assert.AreEqual(2, result.Count);
                Assert.IsTrue(result.Values.First().Id > result.Values.Last().Id);
            }            
        }
        public void CreateWithContactSubType()
        {
            using (var client = TestHelper.ClientGet())
            {
                var contact = new ContactRequest
                {
                    ContactType = ContactType.Organization,
                    // this should be an existing subtype:
                    // I am not sure why the subtype should be an array.
                    ContactSubType = "Ploeg",
                    OrganizationName = "Organization X",
                    ExternalIdentifier = "test_ext_id_subtype",
                    ApiOptions = new ApiOptions { Match = "external_identifier" }
                };

                var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, contact);

                Assert.AreEqual(0, result.IsError);
                Assert.IsNotNull(result.Id);
                Assert.AreEqual(result.Id, result.Values.First().Id);
                Assert.AreEqual(contact.OrganizationName, result.Values.First().OrganizationName);
                Assert.AreEqual(contact.ContactSubType, result.Values.First().ContactSubType.First());

                client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(result.Id.Value), 1);
            }
        }
        public void DeceasedContactGet()
        {
            using (var client = TestHelper.ClientGet())
            {
                var request = new ContactRequest
                {
                    Id = _myDeceasedContactId
                };

                var result = client.ContactGet(TestHelper.ApiKey, TestHelper.SiteKey, request);

                Assert.AreEqual(0, result.IsError);
                Assert.IsNotNull(result.Id);
                Assert.AreEqual(result.Id, result.Values.First().Id);
                Assert.AreEqual(_myDeceasedContactId, result.Id);
            }
        }
        public void CreateContact()
        {
            using (var client = TestHelper.ClientGet())
            {
                var contact = new ContactRequest
                {
                    ContactType = ContactType.Individual,
                    FirstName = "Lucky",
                    LastName = "Luke",
                    BirthDate = new DateTime(1946, 3, 3),
                    Gender = Gender.Male,
                    ExternalIdentifier = "test_ext_id_yep",
                    ApiOptions = new ApiOptions {Match = "external_identifier"}
                };

                var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, contact);

                Assert.AreEqual(0, result.IsError);
                Assert.IsNotNull(result.Id);
                Assert.AreEqual(result.Id, result.Values.First().Id);
                Assert.AreEqual(contact.FirstName, result.Values.First().FirstName);
                Assert.AreEqual(contact.LastName, result.Values.First().LastName);
                Assert.AreEqual(contact.BirthDate, result.Values.First().BirthDate);
                Assert.AreEqual(contact.Gender, result.Values.First().Gender);

                client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(result.Id.Value), 1);
            }
        }
        public void InitializeTest()
        {
            using (var client = TestHelper.ClientGet())
            {
                var result = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey,
                    new ContactRequest
                    {
                        ContactType = ContactType.Individual,
                        FirstName = "Joe",
                        LastName = "Schmoe",
                        ExternalIdentifier = MyExternalId,
                        AddressSaveRequest = new[]
                        {
                            new AddressRequest
                            {
                                StreetAddress = "Kipdorp 30",
                                PostalCode = "2000",
                                City = "Antwerpen",
                                CountryId = 1020, // Belgium
                                LocationTypeId = 1,
                            }
                        },
                        PhoneSaveRequest = new[] {new PhoneRequest {PhoneNumber = "02-345 67 89", PhoneType = PhoneType.Phone}},
                        EmailSaveRequest = new[] {new EmailRequest {EmailAddress = "*****@*****.**"}},
                        WebsiteSaveRequest = new[]
                        {
                            new WebsiteRequest
                            {
                                Url = "https://twitter.com/jschmoe",
                                WebsiteType = WebsiteType.Twitter
                            }
                        },
                        ImSaveRequest = new[] {new ImRequest {Name = "*****@*****.**", Provider = Provider.Jabber}},
                        // If the contact with given external identifier already exists,
                        // reuse it.
                        ApiOptions = new ApiOptions {Match = "external_identifier"}
                    });

                _myContactId = result.Values.First().Id;

                // Fetch contact again, because chaining, sequential and reload option don't play well
                // together. See https://issues.civicrm.org/jira/browse/CRM-15904.

                var request = new ContactRequest
                {
                    Id = _myContactId,
                    WebsiteGetRequest = new WebsiteRequest(),
                    AddressGetRequest = new AddressRequest(),
                    PhoneGetRequest = new PhoneRequest(),
                    EmailGetRequest = new EmailRequest(),
                    ImGetRequest = new ImRequest()
                };

                var result2 = client.ContactGet(TestHelper.ApiKey, TestHelper.SiteKey, request);

                int? websiteId = result2.Values.First().WebsiteResult.Values.First().Id;
                Debug.Assert(websiteId.HasValue);
                _myWebsiteId = websiteId.Value;

                int? addressId = result2.Values.First().AddressResult.Values.First().Id;
                Debug.Assert(addressId.HasValue);
                _myAddressId = addressId.Value;

                int? phoneId = result2.Values.First().PhoneResult.Values.First().Id;
                Debug.Assert(phoneId.HasValue);
                _myPhoneId = phoneId.Value;

                int? emailId = result2.Values.First().EmailResult.Values.First().Id;
                Debug.Assert(emailId.HasValue);
                _myEmailId = emailId.Value;

                int? imId = result2.Values.First().ImResult.Values.First().Id;
                Debug.Assert(imId.HasValue);
                _myImId = imId.Value;

                var deceisedContactRequest = new ContactRequest
                {
                    ContactType = ContactType.Individual,
                    FirstName = "Jolly",
                    LastName = "Jumper",
                    BirthDate = new DateTime(1946, 3, 3),
                    Gender = Gender.Male,
                    ExternalIdentifier = "test_ext_id_deceised",
                    IsDeceased = true,
                    ApiOptions = new ApiOptions { Match = "external_identifier" }
                };

                var deceisedResult = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, deceisedContactRequest);
                Debug.Assert(deceisedResult.IsError == 0);
                Debug.Assert(deceisedResult.Id.HasValue);
                _myDeceasedContactId = deceisedResult.Id.Value;
            }
        }
        public void CreateWithChainedRelationship()
        {
            using (var client = TestHelper.ClientGet())
            {
                var relationshipSaveRequest = new RelationshipRequest
                {
                    RelationshipTypeId = 5,
                    ContactIdB = 1,
                    ContactIdAValueExpression = "$value.id"
                };

                var contact = new ContactRequest
                {
                    ContactType = ContactType.Individual,
                    FirstName = "Lucky",
                    LastName = "Luke",
                    BirthDate = new DateTime(1946, 3, 3),
                    Gender = Gender.Male,
                    ExternalIdentifier = "test_ext_id_yep",
                    RelationshipSaveRequest = new[] {relationshipSaveRequest},
                    ApiOptions = new ApiOptions {Match = "external_identifier"}
                };

                var saveResult = client.ContactSave(TestHelper.ApiKey, TestHelper.SiteKey, contact);
                var getResult = client.ContactGetSingle(TestHelper.ApiKey, TestHelper.SiteKey,
                    new ContactRequest
                    {
                        Id = saveResult.Id,
                        RelationshipGetRequest = new RelationshipRequest {ContactIdAValueExpression = "$value.id"}
                    });

                // Delete first (cleanup), check afterward.
                client.ContactDelete(TestHelper.ApiKey, TestHelper.SiteKey, new DeleteRequest(saveResult.Id.Value), 1);

                Assert.AreEqual(0, saveResult.IsError);
                Assert.AreEqual(1, getResult.RelationshipResult.Count);

                var relationShip = getResult.RelationshipResult.Values.First();

                Assert.AreEqual(relationshipSaveRequest.RelationshipTypeId, relationShip.RelationshipTypeId);
                Assert.AreEqual(relationshipSaveRequest.ContactIdB, relationShip.ContactIdB);
            }
        }
 public void RequestEntityType()
 {
     var request = new ContactRequest();
     Assert.AreEqual(CiviEntity.Contact, request.EntityType);
 }