From 44466d8087172ddb70f9a8f4d8b03addb53549da Mon Sep 17 00:00:00 2001 From: Kurund Jalmi Date: Sat, 16 Mar 2013 19:07:04 +0530 Subject: [PATCH] worked on CRM-12012, added missing feature of copying relationships/case roles when new client is added for a case, ( when multi-client mode is enabled for case ) --- CRM/Case/BAO/Case.php | 40 ++++++++++++++++++++++++++++++++++++++++ CRM/Case/Page/AJAX.php | 3 +++ 2 files changed, 43 insertions(+) diff --git a/CRM/Case/BAO/Case.php b/CRM/Case/BAO/Case.php index 22929e4676..f5b8397509 100644 --- a/CRM/Case/BAO/Case.php +++ b/CRM/Case/BAO/Case.php @@ -3061,6 +3061,46 @@ WHERE id IN (' . implode(',', $copiedActivityIds) . ')'; break; } return $sql; + } + + /** + * Function to add/copy relationships, when new client is added for a case + * + * @param int $caseId case id + * @param int $contactId contact id / new client id + * + * @return void + */ + static function addCaseRelationships($caseId, $contactId) { + // get the case role / relationships for the case + $caseRelationships = new CRM_Contact_DAO_Relationship(); + $caseRelationships->case_id = $caseId; + $caseRelationships->find(); + $relationshipTypes = array(); + + // make sure we don't add duplicate relationships of same relationship type. + while ($caseRelationships->fetch() && !in_array($caseRelationships->relationship_type_id, $relationshipTypes)) { + $values = array(); + CRM_Core_DAO::storeValues($caseRelationships, $values); + + // add relationship for new client. + $newRelationship = new CRM_Contact_DAO_Relationship(); + $newRelationship->copyValues($values); + $newRelationship->id = NULL; + $newRelationship->case_id = $caseId; + $newRelationship->contact_id_a = $contactId; + $newRelationship->end_date = CRM_Utils_Date::isoToMysql($caseRelationships->end_date); + $newRelationship->start_date = CRM_Utils_Date::isoToMysql($caseRelationships->start_date); + + // another check to avoid duplicate relationship, in cases where client is removed and re-added again. + if (!$newRelationship->find(TRUE)) { + $newRelationship->save(); + } + $newRelationship->free(); + + // store relationship type of newly created relationship + $relationshipTypes[] = $caseRelationships->relationship_type_id; + } } } diff --git a/CRM/Case/Page/AJAX.php b/CRM/Case/Page/AJAX.php index 9739f1f461..00c70611cd 100644 --- a/CRM/Case/Page/AJAX.php +++ b/CRM/Case/Page/AJAX.php @@ -157,6 +157,9 @@ class CRM_Case_Page_AJAX { CRM_Case_BAO_Case::addCaseToContact($params); + // add case relationships + CRM_Case_BAO_Case::addCaseRelationships($caseId, $contactId); + $session = CRM_Core_Session::singleton(); $activityParams = array(); -- 2.25.1