Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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']);
 }
Exemplo n.º 3
0
/**
 * 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);
    }
}