向zendDesk发送ticket

use Yii;
use yii\helpers\Json;
use yii\console\Controller;

use api\User;
use api\Company;
use api\TrialRequest;
use api\UserPermission;

define("ZDAPIKEY", "*******");  
define("ZDUSER", "service@******.com");  
define("ZDURL", "https://******.zendesk.com/api/v2");

class ZendeskController extends Controller{
	public $enableCsrfValidation=false;


	public static function curlWrap($url, $json, $action)  
	{  
		$ch = curl_init();  
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  
		curl_setopt($ch, CURLOPT_MAXREDIRS, 10 );  
		curl_setopt($ch, CURLOPT_URL, ZDURL.$url);  
		curl_setopt($ch, CURLOPT_USERPWD, ZDUSER."/token:".ZDAPIKEY);  
		switch($action){  
			case "POST":  
				curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");  
				curl_setopt($ch, CURLOPT_POSTFIELDS, $json);  
				break;  
			case "GET":  
				curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");  
				break;  
			case "PUT":  
				curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");  
				curl_setopt($ch, CURLOPT_POSTFIELDS, $json);  
				break;  
			case "DELETE":  
				curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");  
				break;  
			default:  
				break;  
		}

		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));  
		curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");  
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
		curl_setopt($ch, CURLOPT_TIMEOUT, 10);  
		$output = curl_exec($ch);  
		curl_close($ch);  
		//$decoded = json_decode($output);  
		return $output;  
	}


	public function actionConfirmEmail(){
		//todo 用户注册后5分钟内没有完成email验证
		$trialRequests=TrialRequest::find()->where(['verified' => 0,])->andWhere(['<','created_at',date('Y-m-d H:i:s',strtotime('-60 minute'))])->all();	
		$subject=count($trialRequests).'个用户注册后1小时内没有完成email验证';
		$desc='用户信息:';
		if(count($trialRequests) != 0){
			foreach($trialRequests as $value){
				$work_email=$value['work_email'];
				$phone_number = $value['phone_number'];
				$company = $value['company'];
				$created_at = $value['created_at'];
				$txt = sprintf("\nemail:%s\tphone:%s\tcompany:%s\tcreated_at:%s",$work_email,$phone_number,$company,$created_at);
				$desc=$desc.$txt;
			}

			$arr['new_tick_assignee'] = "******";
			$arr['new_req_name'] = "iBot";
			$arr['new_req_email'] = "noreply@*****.com";
			$arr['new_tick_subj'] = $subject;
			$arr['new_tick_desc'] = $desc;

			// CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API  
			$create = json_encode(  
					array(  
						'ticket' => array(  
							'requester' => array(  
								'name' => $arr['new_req_name'],  
								'email' => $arr['new_req_email']  
								),  
							'assignee_id' => $arr['new_tick_assignee'],  
							'subject' => $arr['new_tick_subj'],  
							'description' => $arr['new_tick_desc']  
							)  
						),  
					JSON_FORCE_OBJECT  
					);

			$data = self::curlWrap("/tickets.json", $create, "POST");
			if($data == false)
			  Yii::error("发送未验证email用户信息失败", __METHOD__);
				//todo add more error message
		}
	}

	public function actionSelectPlan(){
		//todo 完成email验证的用户,一天内没有选择plan试用
		$sql = "select * from user_permission where company_id in (select id from zuser.company where work_email in (select work_email from zuser.trial_request where verified=1 )) and (plan_code is null or plan_code='') and created_at < date_add(now(),INTERVAL -1 day)";

		$userPermissions=UserPermission::findBySql($sql)->all();	
		$subject=count($userPermissions).'个用户1天内没有选择plan试用';
		$desc='用户信息:';
		if(count($userPermissions) != 0){
			foreach($userPermissions as $value){
				$work_email=$value['email'];
				$user_id = $value['user_id'];
				$company_id = $value['company_id'];

				$phone_number = '';
				$username = '';
				$company_name = '';

				$user = User::findOne(['id' => $user_id]);
				if($user != null){
					$phone_number = $user->phone_number;
					$username = $user->username;
				}
				$company = Company::findOne(['id' => $company_id]);
				if($company != null){
					$company_name = $company->name;
				}
				$txt = sprintf("\nemail:%s\tphone:%s\tusername:%s\tcompany:%s",$work_email,$phone_number,$username,$company_name);
				$desc=$desc.$txt;

			}

			// CREATE AN ARRAY WITH POST DATA AND DESIRED TICKET CONTENT/ATTRIBUTES

			$arr['new_tick_assignee'] = "*****";
		    $arr['new_req_name'] = "iBot";
			$arr['new_req_email'] = "noreply@*****.com";
			$arr['new_tick_subj'] = $subject;
			$arr['new_tick_desc'] = $desc;

			// CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API
			$create = json_encode(
					array(
						'ticket' => array(
							'requester' => array(
								'name' => $arr['new_req_name'],
								'email' => $arr['new_req_email']
								),
							'assignee_id' => $arr['new_tick_assignee'],
							'subject' => $arr['new_tick_subj'],
							'description' => $arr['new_tick_desc']
							)
						),
					JSON_FORCE_OBJECT
					);

			$data = self::curlWrap("/tickets.json", $create, "POST");
			if($data == false)
				Yii::error("发送未选择试用用户信息失败",__METHOD__);
		}
	}

	public function actionCancelPackage(){
		//取消套餐
		$sql = 'select * from user_permission where subscription_status=2 and trial_ended_at >= now()';
		$userPermissions = UserPermission::findBySql($sql)->all();	
		$subject=count($userPermissions).'个用户取消套餐';
		$desc='用户信息:';
		if(count($userPermissions) != 0){
			foreach($userPermissions as $value){
				$work_email=$value['email'];
				$user_id = $value['user_id'];
				$company_id = $value['company_id'];

				$phone_number = '';
				$username = '';
				$company_name = '';

				$user = User::findOne(['id' => $user_id]);
				if($user != null){
					$phone_number = $user->phone_number;
					$username = $user->username;
				}
				$company = Company::findOne(['id' => $company_id]);
				if($company != null){
					$company_name = $company->name;
				}
				$txt = sprintf("\nemail:%s\tphone:%s\tusername:%s\tcompany:%s",$work_email,$phone_number,$username,$company_name);
				$desc=$desc.$txt;

			}

			$arr['new_tick_assignee'] = "*****";
			$arr['new_req_name'] = "iBot";
			$arr['new_req_email'] = "noreply@*****.com";
			$arr['new_tick_subj'] = $subject;
			$arr['new_tick_desc'] = $desc;

			// CREATE JSON FORMATTED VARIABLE TO PASS AS PARAMETER TO API
			$create = json_encode(
					array(
						'ticket' => array(
							'requester' => array(
								'name' => $arr['new_req_name'],
								'email' => $arr['new_req_email']
								),
							'assignee_id' => $arr['new_tick_assignee'],
							'subject' => $arr['new_tick_subj'],
							'description' => $arr['new_tick_desc']
							)
						),
					JSON_FORCE_OBJECT
					);

			$data = self::curlWrap("/tickets.json", $create, "POST");
			if($data == false)
				Yii::error("发送取消套餐用户信息失败",__METHOD__);
		}
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值