public function loadMoreItem($request, $response)
 {/*{{{*/
     $nowPage = $request->getRequest('p', 1);
     $pageSize = 10;
     $telOwner = TelOwnerClient::getInstance()->getOwner($this->user);
     $cashAccount = $telOwner->relatedObject->getCashAccount();
     $res = AccountClient::getInstance()->getAccountInfoList($cashAccount->id, PayAccount::TYPE_CASH, array('nowPage' => $nowPage, 'pageSize' => $pageSize));
     $response->itemList = $res['accounts'];
     $response->nowPage = $nowPage;
     $response->pages= $res['pageInfo']['pages'];
     $response->loadUrl = $response->touchUrl.'/useraccount/loadmoreitem?p=';
     $response->itemCnt = $res['pageInfo']['total'];
 }/*}}}*/
    public function __construct($request, $response) 
    {/*{{{*/
        parent::__construct($request, $response);

        $userId = UserClient::getInstance()->getCheckedSeed('id');      
        $this->curUser = new NullEntity();
        $this->currentOwner = new NullEntity();
        if ($userId)
        {
            $this->curUser = DAL::get()->find('user', $userId);
    	    DBC::requireFalse($this->curUser->isNull(),"没有这个用户");
            if (false == $this->curUser->isNull())
            {
                $this->currentOwner = TelOwnerClient::getInstance()->createOwner($this->curUser);
            }
        }
        $response->curUser = $this->curUser;
        $response->currentOwner = $this->currentOwner;

    }/*}}}*/
 public function serviceList($request, $response)
 {
     /*{{{*/
     DBC::requireFalse($this->spaceIsLogin, '不允许自己提交给自己订单!');
     //对没有开通电话咨询医生的链接跳转,没有owner也会跳走.
     if (!$this->space->isPhoneOpenedForFront($this->user->id)) {
         $response->setRedirect('http://' . URL_PREFIX . '400.haodf.com/index/prompt?doctorName=' . rawurlencode($this->space->host->name) . '&doctorFaculty=' . rawurlencode($this->space->host->hospitalfaculty->faculty->name));
         return;
     }
     //医生近期通话记录
     $callingLogs = array();
     $fromDoctorDetail = $request->fromDoctorDetail;
     $response->fromDoctorDetail = $fromDoctorDetail;
     if (0 == $fromDoctorDetail) {
         $callingLogs = PaymentClient::getInstance()->getDoctorRecentPhoneRecords($this->space);
     }
     $response->callingLogs = $callingLogs;
     //医生部分的信息--beg--
     $owner = DAL::get()->find_by_relatedObject('telowner', $this->space->user);
     $response->owner = $owner;
     //新近开通
     $latestOpenCallServiceTitle = doctorOutline::getLatestOpenCallServiceTitle($owner->spaceExt->starttime4tel->toString());
     $response->latestOpenCallServiceTitle = $latestOpenCallServiceTitle;
     //取头像
     $response->headImageUrl = TuClient::getInstance()->getThumbnailUrl($this->space->user->headImage, 96, 96, TuClient::TYPE_ZOOM);
     if (empty($this->space->user->headImage)) {
         $response->headImageUrl = "http://i1.hdfimg.com/my/img/doctor_default_96.gif";
     }
     //满意度和评价
     $doctorSatisfactionList = PaymentClient::getInstance()->getDoctorSatisfactionList($this->space->host->id);
     $doctorSatisfaction = null;
     if (false == empty($doctorSatisfactionList)) {
         $doctorSatisfaction = $doctorSatisfactionList[$this->space->host->id];
     }
     $response->doctorSatisfaction = $doctorSatisfaction;
     $response->productList = ProductClient::getInstance()->getProducts($this->space, array(serviceDef::TYPE_TELORDER));
     //固定接听时间
     $doctorPhoneSchedules = TelOwnerClient::getInstance()->getDoctorPhoneScheduleByOwnerId($owner->id);
     $response->doctorPhoneSchedules = $doctorPhoneSchedules;
     //未完成且已付费的订单数量,在固定接听时间那
     $OrderIdsOfUnfinishedAndPayed = TelOwnerClient::getInstance()->getOrderOfUnfinishedAndPayed('telorder', $owner->id);
     $OrderCntOfUnfinishedAndPayed = count($OrderIdsOfUnfinishedAndPayed);
     $response->OrderCntOfUnfinishedAndPayed = $OrderCntOfUnfinishedAndPayed;
     //医生部分--end--
     //患者部分的信息--beg--
     $curUser = $this->user;
     //患者的有效订单数
     $myOwner = null;
     $patientIdOfSelected = null;
     $validOrderCnt = 0;
     //已登录状态
     $myOwner = new NullEntity();
     if (false == $curUser->isNull()) {
         $myOwner = DAL::get()->find_by_relatedObject('telowner', $curUser);
         if ($myOwner->isNull() == false) {
             $validOrderCnt = TelOrderClient::getInstance()->getValidOrderCnt($myOwner->id);
         }
         //wk
         //默认选择患者,TODO by wk
         $patientIdOfLatestFlow = FlowClient::getInstance()->getPatientIdOfLatestFlow($this->user->id, $this->space->id);
         $patientIdOfSelected = $patientIdOfLatestFlow;
         if (empty($patientIdOfLatestFlow)) {
             $patientIdOfSelected = PaymentClient::getInstance()->getLatestPatientIdOfOrders($myOwner->id);
         }
         //优惠 wk
     }
     //dodo::yyp从咨询完成页自动带入咨询id
     $threadid = $request->threadid;
     if (isset($threadid)) {
         $thread = DAL::get()->find('thread', $threadid);
         $response->thread = $thread;
     }
     $response->curUser = $curUser;
     $response->patientIdOfSelected = $patientIdOfSelected;
     $response->validOrderCnt = $validOrderCnt;
     $response->spaceModule = 'PhoneCase';
     $response->returnVisitList = array();
     $response->ScoreDesc = TelVisit::$scoreDesc;
     $response->myOwner = $myOwner;
     //患者信息--end--
     //从电话咨询医生详情页过来的显示精简模板
     if (1 == $request->fromDoctorDetail) {
         $response->callingLogs = array();
         $response->fromDoctorDetail = $request->fromDoctorDetail;
         return "compactMode";
     } else {
         $response->callingLogs = PaymentClient::getInstance()->getDoctorRecentPhoneRecords($this->space);
         return "default";
     }
 }
    private function orderDetail4Doctor($order, $request, $response)
    {/*{{{*/
		$doctorScheduleList = array();
		if($order->executer->isNull() == false && false == $order->executer->isGroup())
		{
			$doctorScheduleList = DAL::get()->find_all_allScheduleListByDoctorIds('Schedule', array($order->getExecuterBySpace()->host->id));
		}
        $doctorPhoneSchedules = TelOwnerClient::getInstance()->getDoctorPhoneScheduleByOwnerId($order->executer->id);
        $response->doctorPhoneSchedules = $doctorPhoneSchedules;
        $response->doctorScheduleList = $doctorScheduleList;
    }/*}}}*/
 public function closeService($request, $response)
 {
     /*{{{*/
     $options = array('phoneOpened' => $request->isOpen);
     $telOwner = DAL::get()->find_by_relatedObject('telowner', $this->space->user);
     $contract = DAL::get()->find_valid_tel_contract('contract', $this->space);
     ContractClient::getInstance()->invalidContract($contract);
     TelOwnerClient::getInstance()->modifySpaceExtCloseTime4tel($telOwner->id, XDateTime::now());
     $response->telOwner = $telOwner;
 }
 public function rechargeHelp($request, $response)
 {/*{{{*/
     $owner = TelOwnerClient::getInstance()->getOwner($this->user);
     $response->owner = $owner;
 }/*}}}*/
 private function _spaceInfo(Space $space, $response)
 {
     /*{{{*/
     $owner = $space->user->getTelOwner();
     $response->_spaceInfo_space = $space;
     $response->_spaceInfo_spaceBR = $space->getSpaceBusinessRequirement4Booking();
     $response->_spaceInfo_spaceExt = DAL::get()->find_by_spaceid('SpaceExt', $space->id);
     $response->_spaceInfo_total = DAL::get()->queryTotalFlowProposalCntOfSpace('proposal', $space);
     $response->_spaceInfo_bookingOrderCnt = BookingClient::getInstance()->countDoctorOrder('BookingOrder', $space->id);
     $response->_spaceInfo_doctorPhoneSchedules = TelOwnerClient::getInstance()->getDoctorPhoneScheduleByOwnerId($owner->id);
 }
 public function accountPatientList($request, $response)
 {/*{{{*/
     $nowPage = $request->page?$request->page : 1; 
     $userName = $request->userName;
     $startTime = $request->startTime;
     $endTime = $request->endTime;
     if($userName)
     {
         $user = DAL::get()->find_by_name('user', $userName,true);
         if($user->isNull())
         {
             $response->msg = '没有这个用户';
             return ;
         }
         $telOwner = TelOwnerClient::getInstance()->getOwner($user);
         if($telOwner->isNull())
         {
             $response->msg = '这个用户没有财务明细';
             return ;
         }
         $cashAccount = $telOwner->relatedObject->getCashAccount();
         $out = AccountClient::getInstance()->getAccountList($cashAccount->id, PayAccount::TYPE_CASH, array('nowPage' => $nowPage,
             'pageSize' => 20, 'startTime'=>$startTime, 'endTime'=>$endTime));
         $accountList = $out['accounts'];
         $pagelink = PageNav::getNavLink(PageNav::getPageNavTemplate("accountpatientlist?userName=$userName&startTime=$startTime&endTime=$endTime&page="),$out['pageInfo']['nowpage'],$out['pageInfo']['pagesize'],$out['pageInfo']['total']);
         foreach($accountList as $key=>$account)
         {
             $account['paytrans'] = DAL::get()->find('paytrans', $account['id']);
             $accountList[$key] = $account;
         }
         $response->accountList = $accountList;
         $response->telOwner = $telOwner;
         $response->pagelink = $pagelink;
         $response->userName = $userName;
         $response->startTime = $startTime;
         $response->endTime = $endTime;
     }
 }/*}}}*/
 public function showDiseaseRecommendList($request, $response)
 {/*{{{*/
     $diseaseList = array();
     if($request->diseasename)
     {
        $diseaseList = DAL::get()->find_all_similarDiseaseLimitName('disease', $request->diseasename);
     }
     $diseaseRecommendList = TelOwnerClient::getInstance()->getDiseaseRecommedList();
     $response->diseaseList = $diseaseList;
     $response->diseaseRecommendList = $diseaseRecommendList;
 }/*}}}*/
 public function ajaxSelectOwner($request, $response)
 {/*{{{*/
     $index = $request->index;
     $response->ownerList = TelOwnerClient::getInstance()->searchOwnersOfIndex($index);
     $response->callBack = $request->callback;
 }/*}}}*/
    private function taskDetail4Doctor($space, $request, $response)
    {/*{{{*/
		$doctorScheduleList = array();
		if(false == $space->isNull())
		{
            $ownerId = DAL::get()->find_id_by_relatedobjectid('telowner',$space->id);
			$doctorScheduleList = DAL::get()->find_all_allScheduleListByDoctorIds('Schedule', array($space->host->id));
		}
        $spaceIds = array();
        array_push($spaceIds,$space->id);
        $orderDetailCnt = TelOrderClient::getInstance()->getSpaceListCnt('telorder', $spaceIds);
        $doctorPhoneSchedules = TelOwnerClient::getInstance()->getDoctorPhoneScheduleByOwnerId($ownerId);
        $response->orderDetailCnt = $orderDetailCnt;
        $response->doctorPhoneSchedules = $doctorPhoneSchedules;
        $response->doctorScheduleList = $doctorScheduleList;
    }/*}}}*/
 /**
  * addSchedule 新增固定接听时间和数量 
  * 
  * @param mixed $userId 
  * @param mixed $week 
  * @param mixed $startHour 
  * @param mixed $startMin 
  * @param mixed $orderCnt 
  * @access public
  * @return void
  */
 public function addSchedule($userId, $week, $startHour, $startMin, $orderCnt)
 {/*{{{*/
     $space = DAL::get()->find('space', $userId);
     $telOwner = DAL::get()->find_by_relatedObject('telowner', $space->user);
     $startTime = $startHour.':'.$startMin;
     $endTime = '';
     $phoneSchedule = DAL::get()->find_by_ownerid_and_week_and_starttime('PhoneSchedule', 
         $telOwner->id, $week, $startTime);
     if(false == $phoneSchedule->isNull())
     {
         $this->setErrorCode(841);
         return 0;
     }
     $phoneScheduleId = TelOwnerClient::getInstance()->createPhoneSchedule($telOwner->id, $week, $startTime, $endTime, $orderCnt, $space->user); 
     $this->content = array('id'=>$phoneScheduleId);
 }/*}}}*/
    public function ajaxCheckOwnerInvite($request, $response)
    {/*{{{*/
        $inviteCode = $request->invitecode;
        $ownerId = substr($inviteCode, 1); 
        $owner = DAL::get()->find('telOwner', $ownerId);
		$curUser = $this->_newUser;
        $res = self::INVITE_NORMAL;
        if($owner->isNull() || strtolower(substr($inviteCode, 0, 1)) != 'c')
        {
            $res = self::INVITE_NOEXIST;
            echo $res;
            return parent::DIRECT_OUTPUT; 
        }
        if(false == $curUser->isNull())
        {
            $isOwnerInvite = TelOwnerClient::getInstance()->checkUserHaveOrder($curUser->id);
            if($isOwnerInvite)
            {
                $res = self::INVITE_USED;
            }
            echo $res;
            return parent::DIRECT_OUTPUT; 
        }
        return parent::DIRECT_OUTPUT; 
    }/*}}}*/
    public function closeService($request, $response)
    {/*{{{*/
        $response->space = $this->_newSpace;
        $options = array('phoneOpened'=>$request->isOpen);
        $telOwner = DAL::get()->find_by_relatedObject('telowner', $this->_newSpace->user);
        TelOwnerClient::getInstance()->modifySpaceExtCloseTime4tel($telOwner->id,XDateTime::now());
		$response->telOwner = $telOwner;
    }/*}}}*/