// create employer relationship with $contactID only when new organization is there
// else retain the existing relationship
else {
- // get the Employee relationship type id
- $relTypeId = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_RelationshipType', 'Employee of', 'id', 'name_a_b');
-
- // keep relationship params ready
- $relParams['relationship_type_id'] = $relTypeId . '_a_b';
- $relParams['is_permission_a_b'] = 1;
- $relParams['is_active'] = 1;
$isNotCurrentEmployer = TRUE;
}
- // formalities for creating / editing organization.
- $behalfOrganization['contact_type'] = 'Organization';
-
if (!$orgID) {
// check if matching organization contact exists
$dupeIDs = CRM_Contact_BAO_Contact::getDuplicateContacts($behalfOrganization, 'Organization', 'Unsupervised', [], FALSE);
}
// create organization, add location
+ $behalfOrganization['contact_type'] = 'Organization';
$orgID = CRM_Contact_BAO_Contact::createProfileContact($behalfOrganization, $fields, $orgID,
NULL, NULL, 'Organization'
);
// create relationship
if ($isNotCurrentEmployer) {
- $relParams['contact_check'][$orgID] = 1;
- $cid = ['contact' => $contactID];
- CRM_Contact_BAO_Relationship::legacyCreateMultiple($relParams, $cid);
+ try {
+ \Civi\Api4\Relationship::create(FALSE)
+ ->addValue('contact_id_a', $contactID)
+ ->addValue('contact_id_b', $orgID)
+ ->addValue('relationship_type_id', CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_RelationshipType', 'Employee of', 'id', 'name_a_b'))
+ ->addValue('is_permission_a_b:name', 'View and update')
+ ->execute();
+ }
+ catch (CRM_Core_Exception $e) {
+ // Ignore if duplicate relationship.
+ if ($e->getMessage() !== 'Duplicate Relationship') {
+ throw $e;
+ }
+ }
}
// if multiple match - send a duplicate alert
'postal_code' => '222222',
'country' => 'United States',
];
- $contactID = $this->individualCreate();
+ $originalContactId = $contactID = $this->individualCreate();
$orgId = $this->organizationCreate(['organization_name' => 'testorg1']);
$orgCount = $this->callAPISuccessGetCount('Contact', [
'contact_type' => "Organization",
$this->assertEquals($orgCount, 1);
$values = $params = [];
- $behalfOrganization = [
+ $originalBehalfOrganization = $behalfOrganization = [
'organization_name' => 'testorg1',
'phone' => [
1 => [
'country-3' => 1,
'state_province-3' => 1,
];
- CRM_Contribute_Form_Contribution_Confirm::processOnBehalfOrganization($behalfOrganization, $contactID, $values, $params, $fields);
+ $empty = [];
+ CRM_Contribute_Form_Contribution_Confirm::processOnBehalfOrganization($behalfOrganization, $contactID, $empty, $empty, $empty);
- //Check whether new organisation is not created.
+ //Check whether new organisation is created.
$result = $this->callAPISuccess('Contact', 'get', [
'contact_type' => "Organization",
'organization_name' => "testorg1",
//Check if alert is assigned to params if more than 1 dupe exists.
$orgId = $this->organizationCreate(['organization_name' => 'testorg1', 'email' => 'testorg@gmail.com']);
- CRM_Contribute_Form_Contribution_Confirm::processOnBehalfOrganization($behalfOrganization, $contactID, $values, $params, $fields);
+ CRM_Contribute_Form_Contribution_Confirm::processOnBehalfOrganization($originalBehalfOrganization, $originalContactId, $values, $params, $fields);
$this->assertEquals($params['onbehalf_dupe_alert'], 1);
}