HEX
Server: Apache/2.4.46 (Ubuntu)
System: Linux localhost 5.11.0-49-generic #55-Ubuntu SMP Wed Jan 12 17:36:34 UTC 2022 x86_64
User: root (0)
PHP: 7.4.16
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/kipu-backup-old/index-old-06-03-2023.php
<?php
header("Content-Type: text/xml\r\n");
ob_start();

function respond($tf) {
         print '<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <soapenv:Body>
         <notifications xmlns="http://soap.sforce.com/2005/09/outbound">
         <Ack>' . $tf . '</Ack>
         </notifications>
         </soapenv:Body>
         </soapenv:Envelope>';
}

// Get raw post data
$data = fopen('php://input', 'rb');
$content = fread($data,5000);
ob_end_clean();

respond('true');

$rcXML = simplexml_load_string($content);

$opportunityId = trim($rcXML->children('http://schemas.xmlsoap.org/soap/envelope/')->Body->children('http://soap.sforce.com/2005/09/outbound')->notifications->Notification->sObject->children('urn:sobject.enterprise.soap.sforce.com')->Id.PHP_EOL);
//$opportunityId = '0061U00000OIO5bQAH';
//$opportunityId = '0067i00000MJhty';

 
my_log($opportunityId);


$BASE_URL 				= 'https://kipuapi.kipuworks.com';    
$ACCESS_ID 				= '4bKm8x-ACsrhS7dydgz1kPcPKFu_EJ_yznJF7sdB2nM';
$KIPU_RECIPIENT_ID 		= 'JyrdYNdKv5nLgJPoACwY6GHbyyxZ25YT6r-ndIY-IjM';
$SECRET_KEY 			= 'hupTtcrI1EyRjQh95Ve+8XB9OqkuwbfAjbDfvwsdy0YcHEz8yLvZXx9by36OFgibggSftlBr+cpfHpEgTrLyNw==';   	 
$APP_IDENTIFIER 		= 'Bridge Connector';
$ACCEPT_HEADER 			= 'Accept';
$CONTENT_TYPE_HEADER 	= 'Content-type';
$CONTENT_MD5_HEADER 	= 'Content-MD5';
$DATE_HEADER 			= 'Date';

if(isset($opportunityId) && !empty($opportunityId)){
	$accessData 	= getAccessData();	
	$instance_url 	= (isset($accessData[ 'instance_url' ]))?$accessData[ 'instance_url' ]:'';
	$access_token 	= (isset($accessData[ 'access_token' ]))?$accessData[ 'access_token' ]:'';

	if(!empty($instance_url) && !empty($access_token) && !empty($opportunityId)){    	
		//Opportunity Data    	
    	$oppData 	= (array)opportunityData($instance_url, $access_token, $opportunityId);

		$opData = json_encode($oppData);

		my_log($opData);


		// exit;
    	$stageName 	= (isset($oppData['StageName']))?$oppData['StageName']:'';
		$AccountId 	= (isset($oppData['AccountId']))?$oppData['AccountId']:'';
		$Subscriber_Gender__c 	= (isset($oppData['Subscriber_Gender__c']))?$oppData['Subscriber_Gender__c']:'';		
    	$Client_First_Name__c 	= (isset($oppData['Client_First_Name__c']))?$oppData['Client_First_Name__c']:'';
    	$Client_Middle_Name__c 	= (isset($oppData['Client_Middle_Name__c']))?$oppData['Client_Middle_Name__c']:'';
    	$Client_Last_Name__c = (isset($oppData['Client_Last_Name__c']))?$oppData['Client_Last_Name__c']:'';
    	$Preferred_Name__c = (isset($oppData['Preferred_Name__c']))?$oppData['Preferred_Name__c']:'';
    	$Client_DOB__c = (isset($oppData['Client_DOB__c']))?$oppData['Client_DOB__c']:'';
    	$Marital_Status__c = (isset($oppData['Marital_Status__c']))?$oppData['Marital_Status__c']:'';
    	$MR__c = (isset($oppData['MR__c']))?$oppData['MR__c']:'';
    	$Client_Phone__c = (isset($oppData['Client_Phone__c']))?$oppData['Client_Phone__c']:'';
    	$Client_Alternate_Phone__c = (isset($oppData['Client_Alternate_Phone__c']))?$oppData['Client_Alternate_Phone__c']:'';
    	$Ethnicity__c = (isset($oppData['Ethnicity__c']))?$oppData['Ethnicity__c']:'';
    	$Pre_Admission_Status__c = (isset($oppData['Pre_Admission_Status__c']))?$oppData['Pre_Admission_Status__c']:'';
    	$Admission_Date__c = (isset($oppData['Admission_Date__c']))?$oppData['Admission_Date__c']:'';
    	$Discharge_Date__c = (isset($oppData['Discharge_Date__c']))?$oppData['Discharge_Date__c']:'';
    	$Anticipated_Discharge_Date__c = (isset($oppData['Anticipated_Discharge_Date__c']))?$oppData['Anticipated_Discharge_Date__c']:'';
    	$Sobriety_Date__c = (isset($oppData['Sobriety_Date__c']))?$oppData['Sobriety_Date__c']:'';
    	$SSN__c = (isset($oppData['SSN__c']))?$oppData['SSN__c']:'';
    	$Address_1__c = (isset($oppData['Address_1__c']))?$oppData['Address_1__c']:'';
    	$Address_2__c = (isset($oppData['Address_2__c']))?$oppData['Address_2__c']:'';
    	$City__c = (isset($oppData['City__c']))?$oppData['City__c']:'';
    	$Zip__c = (isset($oppData['Zip__c']))?$oppData['Zip__c']:'';
    	$state_kipu__c = (isset($oppData['state_kipu__c']))?$oppData['state_kipu__c']:'';
    	$Country__c = (isset($oppData['Country__c']))?$oppData['Country__c']:'';
    	$Gender__c = (isset($oppData['Gender__c']))?$oppData['Gender__c']:'';
    	$Client_Email__c = (isset($oppData['Client_Email__c']))?$oppData['Client_Email__c']:'';
    	$First_Contact_Date__c = (isset($oppData['First_Contact_Date__c']))?$oppData['First_Contact_Date__c']:'';
    	$First_Contact_Rep_On_Call__c = (isset($oppData['First_Contact_Rep_On_Call__c']))?$oppData['First_Contact_Rep_On_Call__c']:'';
    	$First_Contact_Name__c = (isset($oppData['First_Contact_Name__c']))?$oppData['First_Contact_Name__c']:'';
    	$First_Contact_Information__c = (isset($oppData['First_Contact_Information__c']))?$oppData['First_Contact_Information__c']:'';
    	$First_Contact_Relationship__c = (isset($oppData['First_Contact_Relationship__c']))?$oppData['First_Contact_Relationship__c']:'';
    	$Referral_Source__c = (isset($oppData['Referral_Source__c']))?$oppData['Referral_Source__c']:'';
    	$Referral_Source_Name__c = (isset($oppData['Referral_Source_Name__c']))?$oppData['Referral_Source_Name__c']:'';
    	$Discharge_To_Name__c = (isset($oppData['Discharge_To_Name__c']))?$oppData['Discharge_To_Name__c']:'';
    	$KIPU_Bed__c = (isset($oppData['KIPU_Bed__c']))?$oppData['KIPU_Bed__c']:'';
    	$Payment_Method__c = (isset($oppData['Payment_Method__c']))?$oppData['Payment_Method__c']:'';
    	$Insurance_Provider__c = (isset($oppData['Insurance_Provider__c']))?$oppData['Insurance_Provider__c']:'';
    	$Insurance_Phone__c = (isset($oppData['Insurance_Phone__c']))?$oppData['Insurance_Phone__c']:'';
    	$Subscriber_First_Name__c = (isset($oppData['Subscriber_First_Name__c']))?$oppData['Subscriber_First_Name__c']:'';
    	$Subscriber_Middle_Name__c = (isset($oppData['Subscriber_Middle_Name__c']))?$oppData['Subscriber_Middle_Name__c']:'';
    	$Subscriber_Last_Name__c = (isset($oppData['Subscriber_Last_Name__c']))?$oppData['Subscriber_Last_Name__c']:'';
    	$Subscriber_SSN__c = (isset($oppData['Subscriber_SSN__c']))?$oppData['Subscriber_SSN__c']:'';
    	$Subscriber_DOB__c = (isset($oppData['Subscriber_DOB__c']))?$oppData['Subscriber_DOB__c']:'';
    	$Insurance_Primary_Notes__c = (isset($oppData['Insurance_Primary_Notes__c']))?$oppData['Insurance_Primary_Notes__c']:'';
    	$Group__c = (isset($oppData['Group__c']))?$oppData['Group__c']:'';
    	$Subscriber_Address_1__c = (isset($oppData['Subscriber_Address_1__c']))?$oppData['Subscriber_Address_1__c']:'';
    	$Subscriber_Address_2__c = (isset($oppData['Subscriber_Address_2__c']))?$oppData['Subscriber_Address_2__c']:'';
    	$Subscriber_City__c = (isset($oppData['Subscriber_City__c']))?$oppData['Subscriber_City__c']:'';
    	$Subscriber_Zip__c = (isset($oppData['Subscriber_Zip__c']))?$oppData['Subscriber_Zip__c']:'';
    	$Subscriber_State__c = (isset($oppData['Subscriber_State__c']))?$oppData['Subscriber_State__c']:'';
    	$Policy_Number__c = (isset($oppData['Policy_Number__c']))?$oppData['Policy_Number__c']:'';
    	$Subscriber_Relationship_to_Client__c = (isset($oppData['Subscriber_Relationship_to_Client__c']))?$oppData['Subscriber_Relationship_to_Client__c']:'';
    	$Insurance_Plan_Type__c = (isset($oppData['Insurance_Plan_Type__c']))?$oppData['Insurance_Plan_Type__c']:'';
    	$Subscriber_Employer__c = (isset($oppData['Subscriber_Employer__c']))?$oppData['Subscriber_Employer__c']:'';
		
		$fileDataArray 		= array();
    	$preAssessData 		= (array)preAssessmentData($instance_url, $access_token, $opportunityId);
    	$vobFileLimit 		= 12;
    	if(count($preAssessData)>0){
    		$preAssessDataId 	= (isset($preAssessData['Id']))?$preAssessData['Id']:'';
    		$preAssessAttachData = (array)getContentDocumentLink($instance_url, $access_token, $preAssessDataId,1);
	    	$contentDocumentId 	= (isset($preAssessAttachData['ContentDocumentId']))?$preAssessAttachData['ContentDocumentId']:'';
	    	if(!empty($contentDocumentId)){
		    	$contentDocumentData = (array)getContentDocument($instance_url, $access_token, $contentDocumentId);
		    	
		    	$latestPublishedVersionId = (isset($contentDocumentData['LatestPublishedVersionId']))?$contentDocumentData['LatestPublishedVersionId']:'';
		    	$latestPublishedVersionData=(array)getContentVersion($instance_url, $access_token,$latestPublishedVersionId);

		    	$attachId = (isset($latestPublishedVersionData['Id']))?$latestPublishedVersionData['Id']:'';
		    	$attachName = (isset($latestPublishedVersionData['Title']))?$latestPublishedVersionData['Title']:'';
		    	$fileExtension = (isset($latestPublishedVersionData['FileExtension']))?$latestPublishedVersionData['FileExtension']:'';
		    	if(strtolower($fileExtension)=='pdf'){
			    	$attachBodyData = getContentVersionData($instance_url, $access_token, $attachId);

					my_log('---- Log attachBodyData key ----');
					my_log(json_encode($fileDataArray[$attachName.'.'.$fileExtension]));


			    	$fileDataArray[$attachName.'.'.$fileExtension]=$attachBodyData;
			    }
	    	}	
    	}

		my_log('---- Log preAssessData ----');
		my_log(json_encode($preAssessData));


    	$oppAttachmentData = (array)getContentDocumentLink($instance_url, $access_token, $opportunityId,$vobFileLimit);

		my_log('---- Log oppAttachmentData ----');
		my_log(json_encode($oppAttachmentData));


    	$counter=1;
    	foreach ($oppAttachmentData as $key => $singleValue) {
    		$singleValue = (array)$singleValue;
    		$counter++;
    		$contentDocumentId 	= (isset($singleValue['ContentDocumentId']))?$singleValue['ContentDocumentId']:'';
	    	$contentDocumentData = (array)getContentDocument($instance_url, $access_token, $contentDocumentId);
	    	
	    	$latestPublishedVersionId = (isset($contentDocumentData['LatestPublishedVersionId']))?$contentDocumentData['LatestPublishedVersionId']:'';
	    	$latestPublishedVersionData=(array)getContentVersion($instance_url, $access_token,$latestPublishedVersionId);
	    	
	    	$attachId = (isset($latestPublishedVersionData['Id']))?$latestPublishedVersionData['Id']:'';
	    	$attachName = (isset($latestPublishedVersionData['Title']))?$latestPublishedVersionData['Title']:'';
	    	$fileExtension = (isset($latestPublishedVersionData['FileExtension']))?$latestPublishedVersionData['FileExtension']:'';
	    	if(strtolower($fileExtension)=='pdf'){
		    	$attachBodyData = getContentVersionData($instance_url, $access_token, $attachId);
		    	$fileDataArray[$attachName.$counter.'.'.$fileExtension]=$attachBodyData;
		    }
    	}

		my_log('---- Log fileDataArray ----');
		my_log(json_encode($fileDataArray));

    	
    	$attachmentParts = '';
    	if(count($fileDataArray)>0){
    		$attachmentParts = ',"attachments_attributes":[';
    		for($i=1;$i<=count($fileDataArray);$i++){
    			if($i>1){
    				$attachmentParts .=',';
    			}
    			$attachmentParts .='{
			    		"attachment_patient_process_id":"61"
			    	}';
    		}
    		$attachmentParts .=']';
    	}

		// my_log('---- Log attachmentParts ----');
		// my_log(json_encode($attachmentParts));


    	$requestbody='{
		  	"document": {
			    "recipient_id": "'.$KIPU_RECIPIENT_ID.'",
			    "sending_app_name": "'.$APP_IDENTIFIER.'",
			    "data": {
					
					"sending_app_patient_id": "'.$AccountId.'",
					"first_name": "'.$Client_First_Name__c.'",
					"middle_name": "'.$Client_Middle_Name__c.'",
					"last_name": "'.$Client_Last_Name__c.'",
					"preferred_name": "'.$Preferred_Name__c.'",
					"dob": "'.$Client_DOB__c.'",
					"marital_status": "'.$Marital_Status__c.'",
					"mr": "'.$MR__c.'",
					"phone": "'.$Client_Phone__c.'",					
					"alternate_phone": "'.$Client_Alternate_Phone__c.'",
					"ethnicity": "'.$Ethnicity__c.'",
					"pre_admission_status": "'.$Pre_Admission_Status__c.'",
					"admission_date": "'.$Admission_Date__c.'",					
					"anticipated_discharge_date": "'.$Anticipated_Discharge_Date__c.'",
					"sobriety_date": "'.$Sobriety_Date__c.'",
					"ssn": "'.$SSN__c.'",
					"address_street": "'.$Address_1__c.'",
					"address_street2": "'.$Address_2__c.'",
					"address_city": "'.$City__c.'",
					"address_zip": "'.$Zip__c.'",
					"address_state": "'.$state_kipu__c.'",
					"address_country": "'.$Country__c.'",
					"gender": "'.strtolower($Gender__c).'",
					"email": "'.$Client_Email__c.'",
					"first_contact_date": "'.$First_Contact_Date__c.'",
					"first_contact_rep_on_call": "'.$First_Contact_Rep_On_Call__c.'",
					"first_contact_name": "'.$First_Contact_Name__c.'",
					"first_contact_information": "'.$First_Contact_Information__c.'",
					"first_contact_relationship": "'.$First_Contact_Relationship__c.'",
					"referrer_id": "'.$Referral_Source__c.'",
					"payment_method": "'.$Payment_Method__c.'",
					"referrer_name": "'.$Referral_Source_Name__c.'",					
					"discharge_to_name": "'.$Discharge_To_Name__c.'",					
					"bed_name": "'.$KIPU_Bed__c.'",	
					"ext_id_mappings_attributes": [
				        		{
							"ext_system_name": "Salesforce",
							"ext_id": "'.$opportunityId.'"
						}
					],
					"insurances_attributes": [
				        	{
							"insurance_company": "'.$Insurance_Provider__c.'",
							"insurance_phone": "'.$Insurance_Phone__c.'",
							"subscriber_first_name": "'.$Subscriber_First_Name__c.'",
							"subscriber_middle_name": "'.$Subscriber_Middle_Name__c.'",
							"subscriber_last_name": "'.$Subscriber_Last_Name__c.'",
							"subscriber_SSN": "'.$Subscriber_SSN__c.'",
							"subscriber_DOB": "'.$Subscriber_DOB__c.'",
							"subscriber_address_street": "'.$Subscriber_Address_1__c.'",
							"subscriber_address_street2": "'.$Subscriber_Address_2__c.'",
							"subscriber_address_city": "'.$Subscriber_City__c.'",
							"subscriber_address_zip": "'.$Subscriber_Zip__c.'",
							"subscriber_address_state": "'.$Subscriber_State__c.'",
							"subscriber_address_country": "",
							"notes": "'.$Insurance_Primary_Notes__c.'",
							"policy_no": "'.$Policy_Number__c.'",
							"group_ID": "'.$Group__c.'",
							"subscriber_relationship": "'.$Subscriber_Relationship_to_Client__c.'",
							"insurance_plan_type": "'.$Insurance_Plan_Type__c.'",
							"subscriber_employer":"'.$Subscriber_Employer__c.'",
							"subscriber_gender":"'.$Subscriber_Gender__c.'"
							
				        }
			      	]		      	
			    }'.$attachmentParts.'
		  	}
		}';

		my_log('---- Log requestbody ----');
		my_log($requestbody);
 
		$requestbody= json_decode($requestbody,true);   
		$finalBody = buildMultipartFormData($requestbody,$fileDataArray);

		if(!empty($stageName)){		

			$ACCEPT_HEADER 			= 'Accept';
			$CONTENT_TYPE_HEADER 	= 'Content-type';
			$CONTENT_MD5_HEADER 	= 'Content-MD5';
			$DATE_HEADER 			= 'Date';

			$accept_header_value 	= 'application/vnd.kipusystems+json; version=1';
			$content_type 			= 'multipart/form-data; boundary=MultipartBoundary';
			$currDate 				= gmdate('D, d M Y H:i:s T',time());
			$request_uri 			= '/api/patients';  
			$content_md5 			= base64_encode(hex2bin(MD5($finalBody)));
			$canonical_string 		= $content_type.','.$content_md5.','.$request_uri.','.$currDate;
			$encoded_signature		=  base64_encode(hash_hmac('sha1',$canonical_string,$SECRET_KEY, true));
			$authorization_header 	= 'APIAuth '. $ACCESS_ID . ':' . $encoded_signature;
			$endpoint 				= $BASE_URL.$request_uri;
			$headers = [
				$ACCEPT_HEADER.': '.$accept_header_value,
				'Authorization: '.$authorization_header,
				$CONTENT_TYPE_HEADER.': '.$content_type,
				$CONTENT_MD5_HEADER.': '.$content_md5,
				$DATE_HEADER.': '.$currDate
			];
			//exit;
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL,$endpoint);
			curl_setopt($ch, CURLOPT_POST, 1);
			curl_setopt($ch, CURLOPT_POSTFIELDS,$finalBody);  //Post Fields
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
			$server_output = curl_exec ($ch);

			//echo "server_output = ".$server_output;
			my_log(print_r($server_output, true));
		}
    }
}

function pre($data){
	echo "<pre>";
	print_r($data);
	echo "</pre>";
}
function getAccessData(){
	$isProduction=0;
	if($isProduction==1){
		$url_demo 		= "https://login.salesforce.com/services/oauth2/token";
		$client_id 		= '3MVG9KsVczVNcM8xnq8coQuucXlxi45TbaWu4sUIKAS_biifcSH2fdtVMSZGm7Cw.yo1ZT8DMOi_N7RyrFnnQ';
		$client_secret 	= 'E748E6718E553C693BCE05DBB40AF081FF9A2320D977C0B1A1090A018C722235';
		$username 		= 'apnsf@journeysthroughsearch.com';
		$password 		= 'SDds98&^s#sDffd';
		$security_token = 'dDrbAGhZWk55oDByoOuLnGC2';
	}else{
		 
		// $url_demo 		= "https://test.salesforce.com/services/oauth2/token";
		// $client_id 		= '3MVG9bx.kiqxiA6aCTXOCC64qD30y_OBp9STdlz3yZmVqARBZUvRxN8q293ZTKd7xrCdQgIpP_fwExXN1.QDS';
		// $client_secret 	= '297D5D8DBE5AD3EE023BF60CCCD5112C181EF59D04C4FBC8DC0F548FD9E51F51';
		// $username 		= 'bridgeconnector@apnlodge.com.partial';
		// $password 		= 'JslHkln9&900-JnL:;';
		// $security_token = 'dDrbAGhZWk55oDByoOuLnGC2';

		$url_demo 		= "https://test.salesforce.com/services/oauth2/token";
		$client_id 		= '3MVG9PE4xB9wtoY_i29RD53K7wSEBnIlLjrwxkQcRyAlRUO6Ft8hyRNYdBjwDWMIs.oJGTIOrPPFfkWDQ0P9X';
		$client_secret 	= 'ABBDF63BE57945CBFB188535D109509A53C2CBA3AC684583712B5218A8AF5663';
		$username 		= 'bridgeconnector@apnlodge.com.partial';
		$password 		= 'JslHkln9&900-JnL:;';
		$security_token = 'dDrbAGhZWk55oDByoOuLnGC2';

	}
	$paramsdemo = array(
		'grant_type' => 'password',
		'client_id' => $client_id,
		'client_secret' => $client_secret,
		'username' => $username,
		'password' => $password . $security_token
	);
	$chdemo = curl_init();
	curl_setopt( $chdemo, CURLOPT_URL, $url_demo );
	curl_setopt( $chdemo, CURLOPT_POST, true );
	curl_setopt( $chdemo, CURLOPT_POSTFIELDS, $paramsdemo );
	curl_setopt( $chdemo, CURLOPT_RETURNTRANSFER, 1 );
	$rslt = curl_exec( $chdemo );
	$response = json_decode( $rslt, true );
	return $response;
}
function opportunityData($instance_url, $access_token, $oppId) {
    $query = "SELECT Id,AccountId,stageName,Client_First_Name__c,Client_Middle_Name__c,Client_Last_Name__c,Preferred_Name__c,Client_DOB__c,Marital_Status__c,MR__c,Client_Phone__c,Client_Alternate_Phone__c,Ethnicity__c,Pre_Admission_Status__c,Admission_Date__c,Discharge_Date__c,Anticipated_Discharge_Date__c,Sobriety_Date__c,SSN__c,Address_1__c,Address_2__c,City__c,Zip__c,state_kipu__c,Country__c,Gender__c,Client_Email__c,First_Contact_Date__c,First_Contact_Rep_On_Call__c,First_Contact_Name__c,First_Contact_Information__c,First_Contact_Relationship__c,Referral_Source__c,Referral_Source_Name__c,Discharge_To_Name__c,KIPU_Bed__c,Payment_Method__c,Insurance_Provider__c,Insurance_Phone__c,Subscriber_First_Name__c,Subscriber_Middle_Name__c,Subscriber_Last_Name__c,Subscriber_SSN__c,Subscriber_DOB__c,Insurance_Primary_Notes__c,Group__c,Subscriber_Address_1__c,Subscriber_Address_2__c,Subscriber_City__c,Subscriber_Zip__c,Subscriber_State__c,Policy_Number__c,Subscriber_Relationship_to_Client__c,Insurance_Plan_Type__c,Subscriber_Employer__c FROM Opportunity where Id = '".$oppId."' LIMIT 1";
    $url = "$instance_url/services/data/v48.0/query?q=" . urlencode($query);

    //Curl code start here
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Authorization: OAuth $access_token","Accept-Language: en-US"));

    $json_response = curl_exec($curl);
    curl_close($curl);
    $array_res = json_decode($json_response);
    return (isset($array_res->records[0]))?$array_res->records[0]:'';    
}
function preAssessmentData($instance_url, $access_token, $oppId) {
    $query = "SELECT Id  FROM Pre_Assessment__c where Opportunity__c = '".$oppId."' order by createddate desc LIMIT 1 ";
    $url = "$instance_url/services/data/v48.0/query?q=" . urlencode($query);

    //Curl code start here
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Authorization: OAuth $access_token","Accept-Language: en-US"));

    $json_response = curl_exec($curl);
    curl_close($curl);
    //Curl code end here
    $array_res = json_decode($json_response);
    return (isset($array_res->records[0]))?$array_res->records[0]:'';
}
function attachmentData($instance_url, $access_token, $parentId, $limit=1) {
    $query = "SELECT Id, Name, Body, ContentType, ParentId From Attachment WHERE ParentId ='".$parentId."' AND Name like '%.pdf' order by lastmodifieddate desc LIMIT  ".$limit;
    $url = "$instance_url/services/data/v48.0/query?q=" . urlencode($query);

    //Curl code start here
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Authorization: OAuth $access_token","Accept-Language: en-US"));

    $json_response = curl_exec($curl);
    curl_close($curl);
    //Curl code end here
    $array_res = json_decode($json_response);
    if($limit==1){
    	return (isset($array_res->records[0]))?$array_res->records[0]:'';
    }else{
    	return (isset($array_res->records))?$array_res->records:'';
    }    
}
function attachmentBodyData($instance_url, $access_token, $attachId) {
    $url = $instance_url.'/services/data/v51.0/sobjects/Attachment/'.$attachId.'/body';

	

    //Curl code start here
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Authorization: Bearer $access_token","Accept-Language: en-US"));
    $json_response = curl_exec($curl);
    curl_close($curl);
   	return $json_response;
}
function getContentDocumentLink($instance_url, $access_token, $attachId, $limit=1){
	$query = "SELECT Id, ContentDocumentId FROM ContentDocumentLink WHERE LinkedEntityId = '".$attachId."' ORDER BY SystemModstamp DESC LIMIT ".$limit;
    $url = "$instance_url/services/data/v48.0/query?q=" . urlencode($query);

    //Curl code start here
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Authorization: OAuth $access_token","Accept-Language: en-US"));

    $json_response = curl_exec($curl);
    curl_close($curl);
    //Curl code end here
    $array_res = json_decode($json_response);
    if($limit==1){
    	return (isset($array_res->records[0]))?$array_res->records[0]:'';
    }else{
    	return (isset($array_res->records))?$array_res->records:'';
    }
}
function getContentDocument($instance_url, $access_token, $contentDocumentId){
	$query = "SELECT Id, LatestPublishedVersionId FROM ContentDocument WHERE Id ='".$contentDocumentId."' ORDER BY LastModifiedDate DESC LIMIT 1";
    $url = "$instance_url/services/data/v48.0/query?q=" . urlencode($query);
    //Curl code start here
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Authorization: OAuth $access_token","Accept-Language: en-US"));
    $json_response = curl_exec($curl);
    curl_close($curl);
    //Curl code end here
    $array_res = json_decode($json_response);
    return (isset($array_res->records[0]))?$array_res->records[0]:'';
}
function getContentVersion($instance_url, $access_token, $latestPublishedVersionId){
	$query = "SELECT Id, Title,FileExtension, VersionData FROM ContentVersion WHERE Id = '".$latestPublishedVersionId."' ORDER BY LastModifiedDate DESC LIMIT 1";
    $url = "$instance_url/services/data/v48.0/query?q=" . urlencode($query);
    //Curl code start here
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Authorization: OAuth $access_token","Accept-Language: en-US"));
    $json_response = curl_exec($curl);
    curl_close($curl);
    //Curl code end here
    $array_res = json_decode($json_response);
    return (isset($array_res->records[0]))?$array_res->records[0]:'';
}
function getContentVersionData($instance_url, $access_token, $attachId){
	$url = $instance_url.'/services/data/v48.0/sobjects/ContentVersion/'.$attachId.'/VersionData';

	my_log("--------- getContentVersionData -------------");
	my_log($url);

	my_log("--------- Authorization -------------");
	my_log("Bearer $access_token");

    //Curl code start here
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER,
    array("Authorization: Bearer $access_token","Accept-Language: en-US"));
    $json_response = curl_exec($curl);
    curl_close($curl);
   	return $json_response;
}

function curlResquest( $url, $hdr, $content ) {
	$c = curl_init( $url );
	curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
	curl_setopt( $c, CURLOPT_HTTPHEADER, $hdr );
	curl_setopt( $c, CURLOPT_POST, true );
	curl_setopt( $c, CURLOPT_POSTFIELDS, $content );
	$json_response 	= curl_exec( $c );	
	$response 		= json_decode( $json_response, true );
	$status 		= curl_getinfo( $c, CURLINFO_HTTP_CODE );
	curl_close( $c );
	return array('status'=>$status,'response'=>$response);
}
function buildMultipartFormData(array &$data, $fileDataArray)
{
	$eol = "\r\n";	
	// Build test string
	$testStr = '';
	array_walk_recursive($data, function($item, $key) use (&$testStr, &$eol) {
		$testStr .= $key . $eol . $item . $eol;
	});
	
	
	$boundary = 'MultipartBoundary';
	// Build data
	$rtn = '';
	$func = function($data, $baseKey = null) use (&$func, &$boundary, &$eol)
	{
		$rtn = '';
		foreach ($data as $key=>&$value)
		{
			// Get key
			$key = $baseKey === null ? $key : ($baseKey . '[' . $key . ']');
			
			// Add data
			if (is_array($value))
				$rtn .= $func($value, $key);
			else
				$rtn .= '--' . $boundary . $eol . 'Content-Disposition: form-data; name="'.$key.'"' . $eol . $eol . $value . $eol;
		}
		
		return $rtn;
	};
	$rtn = $func($data);
	$count=0;
	foreach ($fileDataArray as $fileName => $fileContent) {
		$rtn .= '--' . $boundary . $eol . 'Content-Disposition: form-data; name="document[attachments_attributes]['.$count.'][attachment]"; filename="'.$fileName.'"' . $eol
		. 'Content-Type: application/pdf' . $eol . $eol
		. $fileContent . $eol;
		$count++;
	}
		
	return $rtn . '--' . $boundary . '--' . $eol;
}
function my_log($data){
    $message  = "Date: " .date("Y-m-d H:i:s P T").PHP_EOL.
        $data.PHP_EOL.
        "-------------------------".PHP_EOL;
    file_put_contents(__DIR__ . '/webhook-kipu-sf-lead.log', $message, FILE_APPEND);
}