Esempio n. 1
0
/**
* Update a specified case.
*
* @param  array(
   //REQUIRED:
* 'case_id' => int
*
* //OPTIONAL
* 'status_id' => int
* 'start_date' => str datestamp
* 'contact_id' => int // case client
*
* @return Updated case
*
* @access public
*
*/
function civicrm_api3_case_update($params)
{
    //check parameters
    civicrm_api3_verify_mandatory($params, NULL, array('id'));
    // return error if modifing creator id
    if (array_key_exists('creator_id', $params)) {
        return civicrm_api3_create_error(ts('You cannot update creator id'));
    }
    $mCaseId = array();
    $origContactIds = array();
    // get original contact id and creator id of case
    if (!empty($params['contact_id'])) {
        $origContactIds = CRM_Case_BAO_Case::retrieveContactIdsByCaseId($params['id']);
        $origContactId = $origContactIds[1];
    }
    if (count($origContactIds) > 1) {
        // check valid orig contact id
        if (!empty($params['orig_contact_id']) && !in_array($params['orig_contact_id'], $origContactIds)) {
            return civicrm_api3_create_error('Invalid case contact id (orig_contact_id)');
        } elseif (empty($params['orig_contact_id'])) {
            return civicrm_api3_create_error('Case is linked with more than one contact id. Provide the required params orig_contact_id to be replaced');
        }
        $origContactId = $params['orig_contact_id'];
    }
    // check for same contact id for edit Client
    if (!empty($params['contact_id']) && !in_array($params['contact_id'], $origContactIds)) {
        $mCaseId = CRM_Case_BAO_Case::mergeCases($params['contact_id'], $params['case_id'], $origContactId, NULL, TRUE);
    }
    if (!empty($mCaseId[0])) {
        $params['id'] = $mCaseId[0];
    }
    $dao = new CRM_Case_BAO_Case();
    $dao->id = $params['id'];
    $dao->copyValues($params);
    $dao->save();
    $case = array();
    _civicrm_api3_object_to_array($dao, $case);
    return civicrm_api3_create_success($case, $params, 'case', 'update', $dao);
}
Esempio n. 2
0
 /**
  * Process the form
  *
  * @return void
  * @access public
  */
 public function postProcess()
 {
     $params = $this->controller->exportValues($this->_name);
     $buttonName = $this->controller->getButtonName();
     // user context
     $url = CRM_Utils_System::url('civicrm/contact/view/case', "reset=1&action=view&cid={$this->_contactID}&id={$this->_caseID}&show=1");
     $session = CRM_Core_Session::singleton();
     $session->pushUserContext($url);
     if (!empty($params['timeline_id']) && !empty($_POST['_qf_CaseView_next'])) {
         $session = CRM_Core_Session::singleton();
         $this->_uid = $session->get('userID');
         $xmlProcessor = new CRM_Case_XMLProcessor_Process();
         $xmlProcessorParams = array('clientID' => $this->_contactID, 'creatorID' => $this->_uid, 'standardTimeline' => 0, 'activity_date_time' => date('YmdHis'), 'caseID' => $this->_caseID, 'caseType' => $this->_caseType, 'activitySetName' => $params['timeline_id']);
         $xmlProcessor->run($this->_caseType, $xmlProcessorParams);
         $reports = $xmlProcessor->get($this->_caseType, 'ActivitySets');
         CRM_Core_Session::setStatus(ts('Activities from the %1 activity set have been added to this case.', array(1 => $reports[$params['timeline_id']])), ts('Done'), 'success');
     } elseif ($this->_mergeCases && $buttonName == '_qf_CaseView_next_merge_case') {
         $mainCaseId = $params['merge_case_id'];
         $otherCaseId = $this->_caseID;
         //merge two cases.
         CRM_Case_BAO_Case::mergeCases($this->_contactID, $mainCaseId, NULL, $otherCaseId);
         //redirect user to main case view.
         $url = CRM_Utils_System::url('civicrm/contact/view/case', "reset=1&action=view&cid={$this->_contactID}&id={$mainCaseId}&show=1");
         $session = CRM_Core_Session::singleton();
         $session->pushUserContext($url);
     }
 }
Esempio n. 3
0
 /**
  * Process the form.
  */
 public function postProcess()
 {
     $params = $this->controller->exportValues($this->_name);
     //assign case to another client.
     $mainCaseId = CRM_Case_BAO_Case::mergeCases($params['reassign_contact_id'], $this->get('id'), $this->get('cid'), NULL, TRUE);
     // user context
     $url = CRM_Utils_System::url('civicrm/contact/view/case', "reset=1&action=view&cid={$params['reassign_contact_id']}&id={$mainCaseId[0]}&show=1");
     CRM_Core_Session::singleton()->pushUserContext($url);
 }
Esempio n. 4
0
/**
 * Update a specified case.
 *
 * @param  array( //REQUIRED:
 *                  'case_id'          => int
 *
 *                //OPTIONAL
 *                  'status_id'        => int
 *                  'start_date'       => str datestamp
 *                  'contact_id'       => int // case client
 *                  'creator_id'       => int // case manager
 *  
 * @return Updated case
 *
 * @access public
 *
 */
function civicrm_case_update(&$params)
{
    _civicrm_initialize();
    $errors = array();
    //check for various error and required conditions
    $errors = _civicrm_case_check_params($params, 'update');
    if (!empty($errors)) {
        return $errors;
    }
    // return error if modifing creator id
    if (array_key_exists('creator_id', $params)) {
        return civicrm_create_error(ts('You have no provision to update creator id'));
    }
    $mCaseId = array();
    $origContactIds = array();
    // get original contact id and creator id of case
    if ($params['contact_id']) {
        $origContactIds = CRM_Case_BAO_Case::retrieveContactIdsByCaseId($params['case_id']);
        $origContactId = $origContactIds[1];
    }
    if (count($origContactIds) > 1) {
        // check valid orig contact id
        if ($params['orig_contact_id'] && !in_array($params['orig_contact_id'], $origContactIds)) {
            return civicrm_create_error(ts('Invalid case contact id (orig_contact_id)'));
        } else {
            if (!$params['orig_contact_id']) {
                return civicrm_create_error(ts('Case is linked with more than one contact id. Provide the required params orig_contact_id to be replaced'));
            }
        }
        $origContactId = $params['orig_contact_id'];
    }
    // check for same contact id for edit Client
    if ($params['contact_id'] && !in_array($params['contact_id'], $origContactIds)) {
        $mCaseId = CRM_Case_BAO_Case::mergeCases($params['contact_id'], $params['case_id'], $origContactId, null, true);
    }
    if (CRM_Utils_Array::value('0', $mCaseId)) {
        $params['case_id'] = $mCaseId[0];
    }
    $dao = new CRM_Case_BAO_Case();
    $dao->id = $params['case_id'];
    $dao->copyValues($params);
    $dao->save();
    $case = array();
    _civicrm_object_to_array($dao, $case);
    return civicrm_create_success($case);
}