public function loadAction()
 {
     if (!($customer = Axis::single('account/customer')->find((int) $this->_getParam('id'))->current())) {
         Axis::message()->addError(Axis::translate('Axis_Account')->__("Customer '%s' not found", $this->_getParam('id')));
         return $this->_helper->json->sendFailure();
     }
     $data = array();
     $data['customer'] = $customer->toArray();
     // custom fields
     $data['custom_fields'] = array();
     foreach ($customer->getDetails() as $item) {
         if (isset($data['custom_fields']['field_' . $item['customer_field_id']])) {
             $data['custom_fields']['field_' . $item['customer_field_id']] .= ',' . $item['customer_valueset_value_id'];
         } else {
             $data['custom_fields']['field_' . $item['customer_field_id']] = isset($item['data']) ? $item['data'] : $item['customer_valueset_value_id'];
         }
     }
     // address
     $data['address'] = array();
     $rowset = Axis::single('account/customer_address')->getSortListByCustomerId($customer->id);
     foreach ($rowset as $address) {
         $data['address'][] = $address->toArray();
     }
     // orders
     $orders = Axis::single('sales/order')->fetchAll($this->db->quoteInto('customer_id = ?', $customer->id));
     $orderStatus = Axis_Collect_OrderStatus::collect();
     $orderStatusText = Axis_Collect_OrderStatusText::collect();
     $data['order'] = array();
     $i = 0;
     foreach ($orders as $order) {
         $data['order'][$i] = $order->toArray();
         $data['order'][$i]['product'] = array_values($order->getProducts());
         foreach ($data['order'][$i]['product'] as &$product) {
             $product['price'] = $product['price'] * $order->currency_rate;
             $product['final_price'] = $product['final_price'] * $order->currency_rate;
             $product['product_subtotal'] = $product['final_price'] * $product['quantity'];
         }
         if (isset($orderStatusText[$order['order_status_id']])) {
             $data['order'][$i]['status'] = $orderStatusText[$order['order_status_id']];
         } else {
             $data['order'][$i]['status'] = isset($orderStatus[$order['order_status_id']]) ? $orderStatus[$order['order_status_id']] : $order['order_status_id'];
         }
         $i++;
     }
     // shopping cart
     $data['shopping_cart'] = array();
     if ($cart = Axis::single('checkout/cart')->getCustomerCart($customer->id)) {
         $data['shopping_cart'] = array_values($cart->getProducts());
         foreach ($data['shopping_cart'] as &$product) {
             $product['attributes'] = array_values($product['attributes']);
         }
     }
     return $this->_helper->json->setData($data)->sendSuccess();
 }