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); } }
/// <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); } }
/// <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); }