Tuesday, May 6, 2014

FuseDesk API Integration

FuseDesk PHP API Integration Class Wrapper.
Use the cases method to add, find and update cases.
see full documentation: https://fusedesk.com/help/api/cases/

Source Code:
<?php
class fusedesk_api
{
 public $fusedeskAppName = 'XXXXXXXX'; // Your fusedesk app name
 public $fusedeskApiKey  = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; // Your fusedesk api key
 
 function _newcase($params)
 {
  $err = array();
  
  $args['repid']  = (!empty($params['repid']) ? $params['repid'] : ''); 
  $args['contactid']  = (!empty($params['contactid']) ? $params['contactid']: '');
  $args['status']  = (!empty($params['status']) ? $params['status']: '');
  $args['companyid']  = (!empty($params['companyid']) ? $params['companyid']: '');
  $args['date_assigned']  = (!empty($params['date_assigned']) ? $params['date_assigned']: '');
  $args['date_opened']  = (!empty($params['date_opened']) ? $params['date_opened']: '');
  $args['companyid']  = (!empty($params['companyid']) ? $params['companyid']: '');
  
  date_default_timezone_set('Australia/Sydney');
  $args['date_updated']  = date('Y-m-d H:i:s',time());  
  
  if(!empty($params['email'])){
   $args['email']      = $params['email']; 
  }
  
  if(!empty($params['depid'])){
   $args['depid']   = $params['depid'];   
  }else{
   $err[] = 'depid';
  }
  
  if(!empty($params['summary'])){
   $args['summary']  = $params['summary'];    
  }else{
   $err[] = 'summary';
  }

  if(!empty($params['details'])){
   $args['details']  = $params['details'];  
  }else{
   $err[] = 'details';
  }
  
  if(!empty($params['openedby'])){
   $args['openedby']  = $params['openedby']; 
  }else{
   $err[] = 'openedby';
  }

  if(empty($err)){
   $results =  json_encode($this->_apicall("/cases/", $args, 'POST'));
  }else{
   $results = json_encode(array('error' => 'Invalid submission! Please refresh the page and try again.'));
  }
  
  return $results;
 }
 
 function _apicall( $url, $args = array(), $type = 'GET' )
 {
     $fullurl = 'https://'.$this->fusedeskAppName.'.fusedesk.com/api/v1'.$url; 
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $fullurl);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FuseDesk-API-Key: '.$this->fusedeskApiKey));

     if($type == 'POST') {
         curl_setopt($ch, CURLOPT_POST, true);
         curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
     } else {
         curl_setopt($ch, CURLOPT_URL, $fullurl.'?'.http_build_query($args));
     }
 
  $result = json_decode(curl_exec($ch));
  curl_close($ch);
  
     return $result;
 }
}
?>

Sample Code:

<?php
$params['repid']   = (int) 1;
$params['depid']   = (int) 001;
$params['summary'] = 'Test API summary';
$params['details'] = 'Test API details';
$params['openedby'] = 'Juan Dela Cruz';

$payload = new fusedesk_api();
$cases = $payload->_newcase($params);
print_r($cases);

?>

Genesis Framework for WordPress