public function sendPush($sender, $sn, $message)
 {
     return;
     //发送推送通知
     include APPLICATION_PATH . 'libs/ApnsPHP/Log/Interface.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Log/Embedded.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Log/Null.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Abstract.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Exception.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Feedback.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Message.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Push.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Message/Custom.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Message/Exception.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Push/Server.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Push/Exception.php';
     include APPLICATION_PATH . 'libs/ApnsPHP/Push/Server/Exception.php';
     $order = new Model_Order($sn);
     $passengerDeviceId = $order->get('passenger_device_id');
     $ofd = new Model_OrderForDriver($sn);
     $driver = new Model_Driver($ofd->get('driver_code'));
     $driverDeviceId = $driver->get('device_id');
     //$certSuffix = APPLICATION_ENV == 'development' ? '-dev.pem' : '.pem';
     $certSuffix = '-dev.pem';
     $passengerCert = APPLICATION_PATH . '/data/passenger' . $certSuffix;
     $driverCert = APPLICATION_PATH . '/data/driver' . $certSuffix;
     if ($sender == Model_OrderConversation::SENDER_DRIVER) {
         $this->sendPushToDevice($passengerCert, $passengerDeviceId, $message, $sn);
     } elseif ($sender == Model_OrderConversation::SENDER_PASSENGER) {
         $this->sendPushToDevice($driverCert, $driverDeviceId, $message, $sn);
     } else {
         $this->sendPushToDevice($passengerCert, $passengerDeviceId, $message, $sn);
         $this->sendPushToDevice($driverCert, $driverDeviceId, $message, $sn);
     }
 }
 public function driverCoordinatesAction()
 {
     $ofd = new Model_OrderForDriver($this->sn);
     if (!$ofd->exists() || empty($ofd->get('driver_code'))) {
         $this->sendResult(array());
         return;
     }
     $driver = new Model_Driver($ofd->get('driver_code'));
     if (!$driver->exists()) {
         $this->sendResult(array());
         return;
     }
     $result = [];
     $result['coordinates'] = $driver->get('coordinates');
     $result['time'] = $driver->get('locate_time');
     $this->sendResult($result);
 }
 public function passengerCoordinatesAction()
 {
     $sn = strtoupper(trim($this->_getParam('sn')));
     $ofd = new Model_OrderForDriver($sn);
     $order = new Model_Order($sn);
     if (!$ofd->exists() || $ofd->get('driver_code') != $this->code) {
         $this->sendResult(array());
         return;
     }
     $result = [];
     $result['coordinates'] = $order->get('passenger_coordinates');
     $result['time'] = $order->get('passenger_locate_time');
     $this->sendResult($result);
 }
 public function orderDetailAction()
 {
     $this->view->activeMenu = 'orders';
     $sn = trim($this->_getParam('sn'));
     if (empty($sn)) {
         $this->error('SN Does not exists.');
         return;
     }
     $order = new Model_Order($sn);
     if (!$order->exists() || $order->get('user_id') != $this->user->get('id')) {
         $this->error('Order does not exists.');
         return;
     }
     $this->view->order = $order;
     $ofd = new Model_OrderForDriver($sn);
     $driverAssigned = false;
     $vehicleAssigned = false;
     if ($ofd->exists() && !empty($ofd->get('driver_code'))) {
         $driverAssigned = new Model_Driver($ofd->get('driver_code'));
     }
     if ($ofd->exists() && !empty($ofd->get('vehicle_id'))) {
         $vehicleAssigned = new Model_Vehicle($ofd->get('vehicle_id'));
     }
     $this->view->driverAssigned = $driverAssigned;
     $this->view->vehicleAssigned = $vehicleAssigned;
     $this->view->vehicleTypes = (new Model_VehicleType())->fetchPagedList(1, 999999)['rows'];
     if (!$this->_request->isXmlHttpRequest()) {
         return;
     }
     // edit order
     $arp = new AjaxResponse();
     $arp->setStatus(AjaxResponse::STATUS_FAILED);
     $availableParams = array('forwho', 'city', 'contact-name', 'contact-email', 'contact-phone', 'passenger-names', 'passenger-phone', 'passenger-num', 'when', 'pickup-address', 'dropoff-address', 'vehicle', 'payment-method', 'notes');
     $via = $this->_getParam('via-address');
     $viaToSave = array();
     if (is_array($via)) {
         foreach ($via as $k => $v) {
             if (!empty($v)) {
                 $viaToSave[] = $v;
             }
         }
     }
     $via = json_encode($viaToSave);
     foreach ($availableParams as $paramName) {
         $value = trim($this->getParam($paramName, ''));
         $colName = str_replace('-', '_', $paramName);
         $order->set($colName, $value);
     }
     $order->set('via', $via);
     $order->save();
     $arp->setStatus(AjaxResponse::STATUS_OK);
     $arp->setMessage($sn);
     $this->json($arp);
 }