public function init()
 {
     parent::init();
     $sn = strtoupper(trim($this->_getParam('sn', '')));
     $order = new Model_Order($sn);
     if (empty($sn) || !$order->exists()) {
         $this->error('Order Not Found.');
     }
     $this->sn = $sn;
     $this->order = $order;
 }
 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);
 }