public function upgrade_1106() { $this->ctx->log->info('Applying update 1106'); // create activity_type 'Visa Expiration' $params = array('weight' => 1, 'label' => 'Visa Expiration', 'filter' => 0, 'is_active' => 1, 'is_default' => 0); $resultActivityType = civicrm_api3('activity_type', 'create', $params); if ($resultActivityType['is_error']) { return FALSE; } // find all contacts who require visa $cfId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', 'Is_Visa_Required', 'id', 'name'); $params = array("custom_{$cfId}" => 1, 'return.id' => 1); $result = civicrm_api3('contact', 'get', $params); if ($result['count']) { foreach ($result['values'] as $value) { CRM_HRVisa_Activity::sync($value['id']); } } // create weekly reminder for Visa Expiration $actionSchedule = civicrm_api3('action_schedule', 'get', array('name' => 'Visa Expiration Reminder')); $activityTypeId = $resultActivityType['values'][$resultActivityType['id']]['value']; if (empty($actionSchedule['id'])) { $activityContacts = CRM_Core_OptionGroup::values('activity_contacts', FALSE, FALSE, FALSE, NULL, 'name'); $targetID = CRM_Utils_Array::key('Activity Targets', $activityContacts); $params = array('name' => 'Visa Expiration Reminder', 'title' => 'Visa Expiration Reminder', 'recipient' => $targetID, 'limit_to' => 1, 'entity_value' => $activityTypeId, 'entity_status' => CRM_Core_OptionGroup::getValue('activity_status', 'Scheduled', 'name'), 'start_action_offset' => 1, 'start_action_unit' => 'week', 'start_action_condition' => 'before', 'start_action_date' => 'activity_date_time', 'is_repeat' => 0, 'is_active' => 1, 'body_html' => '<p>Your latest visa expiries on {activity.activity_date_time}</p>', 'subject' => 'Reminder for Visa Expiration', 'record_activity' => 1, 'mapping_id' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_ActionMapping', 'activity_type', 'id', 'entity_value')); $result = civicrm_api3('action_schedule', 'create', $params); if ($result['is_error']) { return FALSE; } } return TRUE; }
function testSyncSncenario2() { // create a test individual $cid = $this->individualCreate(); $startDate = date('YmdHis'); $endDate = date('YmdHis', strtotime('+1 year')); $params = array('entity_id' => $cid, $this->customFields['Extended_Demographics:Is_Visa_Required'] => 1, "{$this->customFields['Immigration:Visa_Type']}:-1" => 'B-1', "{$this->customFields['Immigration:Start_Date']}:-1" => $startDate, "{$this->customFields['Immigration:End_Date']}:-1" => $endDate, "{$this->customFields['Immigration:Visa_Number']}:-1" => '4111111111111111'); $this->callAPISuccess('custom_value', 'create', $params); // sync activity with contact of above details CRM_HRVisa_Activity::sync($cid); // calling a common function for getting acivity a particular target contact and acitvity type // this will return activity id and number of activities found list($count, $activityId) = self::_getTargetContactActivity($cid); $activityGetParams = array('id' => $activityId); $activity = civicrm_api3('activity', 'get', $activityGetParams); $this->assertEquals(1, $count); $this->assertEquals($endDate, date('YmdHis', strtotime($activity['values'][$activity['id']]['activity_date_time'])), "Activity date time not set to latest Immigration visa end date for 'Visa Expiration' activity (in line " . __LINE__ . ")"); $this->assertEquals(CRM_Core_OptionGroup::getValue('activity_status', 'Scheduled', 'name'), $activity['values'][$activity['id']]['status_id'], 'in line ' . __LINE__ . ' Status of \'Visa Expiration\' activity should be \'Scheduled\' but wrongly is ' . $activity['values'][$activity['id']]['status_id']); // now mark the field visa required to false $params = array('entity_id' => $cid, $this->customFields['Extended_Demographics:Is_Visa_Required'] => 0); $this->callAPISuccess('custom_value', 'create', $params); // sync activity with contact of above details CRM_HRVisa_Activity::sync($cid); $activityGetParams = array('id' => $activityId); $activity = civicrm_api3('activity', 'get', $activityGetParams); $this->assertEquals(CRM_Core_OptionGroup::getValue('activity_status', 'Cancelled', 'name'), $activity['values'][$activity['id']]['status_id'], 'in line ' . __LINE__ . ' Status of \'Visa Expiration\' activity should be \'Cancelled\' but wrongly is ' . $activity['values'][$activity['id']]['status_id']); }
/** * Implementation of hook_civicrm_custom */ function hrvisa_civicrm_custom($op, $groupID, $entityID, &$params) { if ($op != 'create' && $op != 'edit') { return; } $groups = CRM_Core_PseudoConstant::get('CRM_Core_BAO_CustomField', 'custom_group_id', array('labelColumn' => 'name')); $groupName = CRM_Utils_Array::value($groupID, $groups); if ($groupName == 'Immigration' || $groupName == 'Extended_Demographics') { CRM_HRVisa_Activity::sync($entityID); } }