REST API: replace the /thirdparty/ API by /thirdparties/.

Remove several /thirdparty/list/xxx endpoints because they are redundant
with the /thirdparties/ endpoint whith the 'mode' filter.
Remove the customer/byemail/{email} endpoint because it is redundant
with the /thirdparties/ endpoint whith the 'email' filter.
Remove all the /customer/ endpoints because they do the same thing as
the corresponding /thirdparty/ endpoints.
This commit is contained in:
Xebax 2016-06-15 17:08:17 +02:00
parent 571f6b8a26
commit 04778f932e

View File

@ -19,14 +19,12 @@
/** /**
* API class for thirdparty object * API class for thirdparties
* *
* @smart-auto-routing false
* @access protected * @access protected
* @class DolibarrApiAccess {@requires user,external} * @class DolibarrApiAccess {@requires user,external}
*
*/ */
class ThirdpartyApi extends DolibarrApi class Thirdparties extends DolibarrApi
{ {
/** /**
* *
@ -40,76 +38,21 @@ class ThirdpartyApi extends DolibarrApi
* @var Societe $company {@type Societe} * @var Societe $company {@type Societe}
*/ */
public $company; public $company;
/**
* @var Customer $customer {@type Client}
*/
public $customer;
/** /**
* Constructor * Constructor
*
* @url thirdparty/
*
*/ */
function __construct() function __construct()
{ {
global $db, $conf; global $db, $conf;
$this->db = $db; $this->db = $db;
$this->company = new Societe($this->db); $this->company = new Societe($this->db);
$this->customer = new Client($this->db);
if (! empty($conf->global->SOCIETE_MAIL_REQUIRED)) { if (! empty($conf->global->SOCIETE_MAIL_REQUIRED)) {
static::$FIELDS[] = 'email'; static::$FIELDS[] = 'email';
} }
} }
/**
* Get properties of a customer object
*
* Return an array with customer informations
*
* @param int $id ID of customer
* @return array|mixed data without useless information
*
* @url GET customer/{id}
* @throws RestException
*/
function getCustomer($id)
{
if(! DolibarrApiAccess::$user->rights->societe->lire) {
throw new RestException(401);
}
$result = $this->customer->fetch($id);
if( ! $result ) {
throw new RestException(404, 'Customer not found');
}
if( ! DolibarrApi::_checkAccessToResource('societe',$this->customer->id)) {
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
}
return $this->_cleanObjectDatas($this->customer);
}
/**
* Search customer by email
*
* @param string $email email id
*
* @return object client with given email
*
* @url GET customer/byemail/{email}
*/
function getByEmail($email) {
$res = $this->getList(1,$email);
if (count($res) == 1) {
$customer = $res[0];
return $customer;
}
return $res;
}
/** /**
* Get properties of a thirdparty object * Get properties of a thirdparty object
* *
@ -118,7 +61,6 @@ class ThirdpartyApi extends DolibarrApi
* @param int $id ID of thirdparty * @param int $id ID of thirdparty
* @return array|mixed data without useless information * @return array|mixed data without useless information
* *
* @url GET thirdparty/{id}
* @throws RestException * @throws RestException
*/ */
function get($id) function get($id)
@ -147,17 +89,14 @@ class ThirdpartyApi extends DolibarrApi
* @param int $mode Set to 1 to show only customers * @param int $mode Set to 1 to show only customers
* Set to 2 to show only prospects * Set to 2 to show only prospects
* Set to 3 to show only those are not customer neither prospect * Set to 3 to show only those are not customer neither prospect
* @param Text $email Search by email filter * @param string $email Search by email filter
* @param string $sortfield Sort field * @param string $sortfield Sort field
* @param string $sortorder Sort order * @param string $sortorder Sort order
* @param int $limit Limit for list * @param int $limit Limit for list
* @param int $page Page number * @param int $page Page number
* @return array Array of thirdparty objects * @return array Array of thirdparty objects
*
* @url GET /thirdparty/list
*
*/ */
function getList($mode=0, $email=NULL, $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) { function index($mode=0, $email=NULL, $sortfield = "s.rowid", $sortorder = 'ASC', $limit = 0, $page = 0) {
global $db, $conf; global $db, $conf;
$obj_ret = array(); $obj_ret = array();
@ -231,47 +170,11 @@ class ThirdpartyApi extends DolibarrApi
return $obj_ret; return $obj_ret;
} }
/**
* Show customers
*
* @return array List of customers
*
* @url GET /thirdparty/list/customers
* @url GET /customer/list
*/
function getListCustomers() {
return $this->getList(1);
}
/**
* Show prospects
*
* @return array List of prospects
*
* @url GET /thirdparty/list/prospects
*/
function getListProspects() {
return $this->getList(2);
}
/**
* Show other
*
* @return array List of thirpdparties who are not customer neither prospect
*
* @url GET /thirdparty/list/others
*/
function getListOthers() {
return $this->getList(3);
}
/** /**
* Create thirdparty object * Create thirdparty object
* *
* @param array $request_data Request datas * @param array $request_data Request datas
* @return int ID of thirdparty * @return int ID of thirdparty
*
* @url POST thirdparty/
*/ */
function post($request_data = NULL) function post($request_data = NULL)
{ {
@ -287,29 +190,12 @@ class ThirdpartyApi extends DolibarrApi
return $this->company->create(DolibarrApiAccess::$user); return $this->company->create(DolibarrApiAccess::$user);
} }
/**
* Create customer object
*
* @param array $request_data Request datas
* @return int ID of thirdparty
*
* @url POST customer/
*/
function postCustomer($request_data) {
$this->post($request_data);
$this->company->set_as_client();
return $this->company->id;
}
/** /**
* Update thirdparty * Update thirdparty
* *
* @param int $id Id of thirdparty to update * @param int $id Id of thirdparty to update
* @param array $request_data Datas * @param array $request_data Datas
* @return int * @return int
*
* @url PUT thirdparty/{id}
*/ */
function put($id, $request_data = NULL) function put($id, $request_data = NULL)
{ {
@ -335,45 +221,12 @@ class ThirdpartyApi extends DolibarrApi
return false; return false;
} }
/**
* Update customer
*
* @param int $id Id of thirdparty to update
* @param array $request_data Datas
* @return int
*
* @url PUT customer/{id}
*/
function putClient($id, $request_data = NULL) {
if(! DolibarrApiAccess::$user->rights->societe->creer) {
throw new RestException(401);
}
$result = $this->customer->fetch($id);
if( ! $result ) {
throw new RestException(404, 'Customer not found');
}
if( ! DolibarrApi::_checkAccessToResource('societe',$this->customer->id)) {
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
}
foreach($request_data as $field => $value) {
$this->customer->$field = $value;
}
if($this->customer->update($id, DolibarrApiAccess::$user,1,'','','update'))
return $this->get ($id);
return false;
}
/** /**
* Delete thirdparty * Delete thirdparty
* *
* @param int $id Thirparty ID * @param int $id Thirparty ID
* @return integer * @return integer
*
* @url DELETE thirdparty/{id}
* @url DELETE customer/{id}
*/ */
function delete($id) function delete($id)
{ {
@ -401,7 +254,7 @@ class ThirdpartyApi extends DolibarrApi
function _validate($data) function _validate($data)
{ {
$thirdparty = array(); $thirdparty = array();
foreach (ThirdpartyApi::$FIELDS as $field) { foreach (Thirdparties::$FIELDS as $field) {
if (!isset($data[$field])) if (!isset($data[$field]))
throw new RestException(400, "$field field missing"); throw new RestException(400, "$field field missing");
$thirdparty[$field] = $data[$field]; $thirdparty[$field] = $data[$field];