public function update($id)
{
$this->beforeHandle();
$this->beforeHandleWrite();
$this->beforeHandleUpdate($id);
$data = $this->getPostedData();
$item = $this->getItem($id);
if (!$item) {
return $this->onItemNotFound($id);
}
if (!$data || count($data) == 0) {
return $this->onNoDataProvided();
}
if (!$this->postDataValid($data, true)) {
return $this->onDataInvalid($data);
}
if (!$this->saveAllowed($data) || !$this->updateAllowed($item, $data)) {
return $this->onNotAllowed();
}
$data = $this->transformPostData($data);
$newItem = $this->updateItem($item, $data);
if (!$newItem) {
return $this->onUpdateFailed($item, $data);
}
$primaryKey = $this->getModelPrimaryKey();
$responseData = $this->getFindData($newItem->{$primaryKey});
$response = $this->getUpdateResponse($responseData, $data);
$this->afterHandleUpdate($newItem, $data, $response);
$this->afterHandleWrite();
$this->afterHandle();
return $response;
}