<?php
namespace app\modules\logic\services;
use app\modules\common\Helper;
use app\modules\logic\services\CommonService;
use Yii;
use yii\db\Query;
use app\modules\logic\model\UsersModel;
use app\modules\logic\model\UsersTechInfoModel;
use app\modules\logic\model\UsersTechApproveModel;
/**
 * 技师-基础服务
 */
class TechService {
	
	/**
	 * [createTech 后台创建技师]
	 * @author JOHN.W
	 * @version [1.0]
	 * @return  [type]          [description]
	 */
	public static function createTech($param = [],$user_id = 0){
		$data_users = Helper::elements(['mobile','prov_id','city_id','area_id','password'],$param,0);
		//生成账号
		$user_id_ct = self::createUsers($data_users,$user_id);

		$data_users_info = Helper::elements(['realname','id_card','avatar','positive_card','counter_card','work_type','work_age','ut_contact','ut_tel','tra_tool','marry','education','crash_save_valid'],$param,0);
		$data_users_info['user_id'] = !empty($user_id)?$user_id:$user_id_ct;
		//生成个人信息
		self::createUsersinfo($data_users_info,$user_id);
		//生成认证信息
		self::createUsersApprove($param['approve_json'],!empty($user_id)?$user_id:$user_id_ct);
		return true;
	}
	/**
	 * [createUsers 生成账号]
	 * @author JOHN.W
	 * @version [1.0]
	 * @param   array           $param [description]
	 * @return  [type]                 [description]
	 */
	public static function createUsers($param = [],$user_id = 0){
		$salt = Helper::genSalt();
        $password = md5(md5($param['password']) . $salt);
        $param['password'] = $password ;
        $param['salt'] = $salt ;
        $param['type'] = 'tech' ;
        $param['addip'] =Helper::getUserIp() ;
        $param['user_code'] = 'Tech'.date("Ymd",time());
        $param['reg_time'] = time();
        $param['username'] = $param['mobile'];
        $Users = new UsersModel();
        return $Users->saveUs($param,$user_id);
        
	}
	/**
	 * [createUsers 生成个人信息]
	 * @author JOHN.W
	 * @version [1.0]
	 * @param   array           $param [description]
	 * @return  [type]                 [description]
	 */
	public static function createUsersinfo($param = [],$user_id = 0){
		$param['created'] = time();
		$UsersTechInfo = new UsersTechInfoModel();
		return $UsersTechInfo->saveUs($param,$user_id);
	}
	/**
	 * [createUsers 生成职业认证信息]
	 * @author JOHN.W
	 * @version [1.0]
	 * @param   array           $param [description]
	 * @return  [type]                 [description]
	 */
	public static function createUsersApprove($approve_json,$user_id){
		$UsersTechApprove = new UsersTechApproveModel();
		$approve_arr = json_decode($approve_json,true);
		foreach ($approve_arr as $key => $value) {
			$data = [
				'user_id'=>$user_id,
				'yw_id'=>$value['yw_id'],
				'level_id'=>$value['level_id'],
				'created'=>time()
			];
			$UsersTechApprove->save($data,isset($value['id'])?$value['id']:0);
		}
		return true;
	}
	/**
	 * [getTechDetail 获取技师详情]
	 * @author JOHN.W
	 * @version [1.0]
	 * @return  [type]          [description]
	 */
	public static function getTechDetail($user_id = 0){
		if(empty($user_id)) return [];
		$UsersTechInfo = new UsersTechInfoModel();
		$ret = [];
		$tech_info = $UsersTechInfo->getWidgetRow(['user_id'=>$user_id]);
		$ret['info'] = !empty($tech_info)?CommonService::formatUserInfo($tech_info):[];

		$UsersTechApprove = new UsersTechApproveModel();
		$ret['approve'] =$UsersTechApprove->getWidgetRows(['cols'=>['id','yw_id','level_id'],'user_id'=>$user_id]);
		return $ret;
	}
	/**
	 * [getTechApprove 获取技师业务认证信息-列表]
	 * @author JOHN.W
	 * @version [1.0]
	 * @param   integer         $user_id [description]
	 * @return  [type]                   [description]
	 */
	public static function getTechApprove($user_id = 0){
		if(empty($user_id)) return [];
		$UsersTechApprove = new UsersTechApproveModel();
		$res =$UsersTechApprove->getWidgetRows(['user_id'=>$user_id]);
		$ret = ['approve_yw'=>'','approve_level'=>''];
		if(!empty($res)){
			foreach ($res as $value) {
				$ret['approve_yw'] .= Helper::getProNameById($value['yw_id']).' ';
				$ret['approve_level'] .= Helper::getTechLevel($value['level_id']).' ';
			}
			$ret['approve_yw'] = trim($ret['approve_yw']);
			$ret['approve_level'] = trim($ret['approve_level']);
		}
		return $ret;
	}
	/**
	 * [getTechInfoByDetail 获取技师订单详情的明细]
	 * @param  integer $user_id [description]
	 * @return [type]           [description]
	 */
	public static function getTechInfoByDetail($user_id = 0){
		if(empty($user_id)) return [];
		$UsersTechInfo = new UsersTechInfoModel();
		$Users = new UsersModel();
		$UsersTechApprove = new UsersTechApproveModel();
		$user_row = $Users->getWidgetRow(['cols'=>['star_level','mobile'],'user_id'=>$user_id]);
		if(isset($user_row['mobile'])) $user_row['mobile'] = Helper::partHide('mobile',$user_row['mobile']); 

		$userInfo_row = $UsersTechInfo->getWidgetRow(['cols'=>['realname'],'user_id'=>$user_id]);
		if(isset($userInfo_row['realname'])) $userInfo_row['realname'] = Helper::partHide('realname',$userInfo_row['realname']); 
		if(empty($userInfo_row) || !is_array($userInfo_row)) $userInfo_row = []; 

		$userApprove_row = $UsersTechApprove->getWidgetRow(['cols'=>['level_id'],'user_id'=>$user_id]);
		if(isset($userApprove_row['level_id'])) $userApprove_row['level_show'] = Helper::getTechLevel($userApprove_row['level_id']);
		if(empty($userApprove_row) || !is_array($userApprove_row)) $userApprove_row = []; 
		
		return array_merge($user_row,$userInfo_row,$userApprove_row);
	}
	/*获取技师姓名身份证号电话号*/
	public static function getTechBase($user_id = 0){
		if(empty($user_id)) return [];
		$UsersTechInfo = new UsersTechInfoModel();
		$Users = new UsersModel();
		$user_row = $Users->getWidgetRow(['cols'=>['mobile'],'user_id'=>$user_id]);
		
		$userInfo_row = $UsersTechInfo->getWidgetRow(['cols'=>['realname','id_card'],'user_id'=>$user_id]);
		if(empty($userInfo_row) || !is_array($userInfo_row)) $userInfo_row = []; 
		return array_merge($user_row,$userInfo_row);
	}
	//判断技师是否在线
	public static function isOnline($user_id = 0){
		if(empty($user_id)) return false;
		$Users = new UsersModel();
		$row = $Users->getWidgetRow(['cols'=>['online_status'],'user_id'=>$user_id]);
		if(isset($row['online_status']) && $row['online_status']==1){
			return true;
		}else{
			return false;
		}
	}
}