public function execute()
 {
     $data = waRequest::post();
     $exclude = array('left_key', 'right_key', 'type', 'full_url');
     foreach ($exclude as $k) {
         if (isset($data[$k])) {
             unset($data[$k]);
         }
     }
     // check required param name
     $this->post('name', true);
     $category_model = new shopCategoryModel();
     $parent_id = waRequest::post('parent_id', 0, 'int');
     if ($parent_id && !$category_model->getById($parent_id)) {
         throw new waAPIException('invalid_request', 'Parent category not found', 404);
     }
     if ($id = $category_model->add($data, $parent_id)) {
         // return info of the new category
         $_GET['id'] = $id;
         $method = new shopCategoryGetInfoMethod();
         $this->response = $method->getResponse(true);
     } else {
         throw new waAPIException('server_error', 500);
     }
 }
 public function execute()
 {
     $id = $this->get('id', true);
     $category_model = new shopCategoryModel();
     $category = $category_model->getById($id);
     if ($category) {
         $data = waRequest::post();
         $exclude = array('left_key', 'right_key', 'type', 'full_url');
         foreach ($exclude as $k) {
             if (isset($data[$k])) {
                 unset($data[$k]);
             }
         }
         if (isset($data['parent_id']) && $category['parent_id'] != $data['parent_id']) {
             if (!$category_model->getById($data['parent_id'])) {
                 throw new waAPIException('invalid_param', 'Parent category not found', 404);
             }
             if (!$category_model->move($id, null, $data['parent_id'])) {
                 throw new waAPIException('server_error', 500);
             }
         }
         if ($category_model->update($id, $data)) {
             $method = new shopCategoryGetInfoMethod();
             $this->response = $method->getResponse(true);
         } else {
             throw new waAPIException('server_error', 500);
         }
     } else {
         throw new waAPIException('invalid_param', 'Category not found', 404);
     }
 }