new: [fetch] individuals added

pull/38/head
iglocska 2021-01-18 14:08:12 +01:00
parent 3cee213b53
commit c87f6651dc
No known key found for this signature in database
GPG Key ID: BEA224F1FEF113AC
2 changed files with 71 additions and 0 deletions

View File

@ -116,4 +116,25 @@ class BroodsController extends AppController
$this->redirect($this->referer());
}
}
public function downloadIndividual($brood_id, $individual_id)
{
$result = $this->Broods->downloadIndividual($brood_id, $individual_id);
$success = __('Individual fetched from remote.');
$fail = __('Could not save the remote individual');
if ($this->ParamHandler->isRest()) {
if ($result) {
return $this->RestResponse->saveSuccessResponse('Brood', 'downloadIndividual', $brood_id, 'json', $success);
} else {
return $this->RestResponse->saveFailResponse('Brood', 'downloadIndividual', $brood_id, $fail, 'json');
}
} else {
if ($result) {
$this->Flash->success($success);
} else {
$this->Flash->error($fail);
}
$this->redirect($this->referer());
}
}
}

View File

@ -93,6 +93,31 @@ class BroodsTable extends AppTable
}
}
public function downloadAndCapture($brood_id, $object_id, $scope, $path)
{
$query = $this->find();
$brood = $query->where(['id' => $brood_id])->first();
if (empty($brood)) {
throw new NotFoundException(__('Brood not found'));
}
$http = new Client();
$response = $http->get($brood['url'] . '/' . $scope . '/view/' . $org_id . '/index.json' , [], [
'headers' => [
'Authorization' => $brood['authkey'],
'Accept' => 'Application/json',
'Content-type' => 'Application/json'
]
]);
if ($response->isOk()) {
$org = $response->getJson();
$this->Organisation = TableRegistry::getTableLocator()->get('Organisations');
$result = $this->Organisation->captureOrg($org);
return $result;
} else {
return false;
}
}
public function downloadOrg($brood_id, $org_id)
{
$query = $this->find();
@ -117,4 +142,29 @@ class BroodsTable extends AppTable
return false;
}
}
public function downloadIndividual($brood_id, $individual_id)
{
$query = $this->find();
$brood = $query->where(['id' => $brood_id])->first();
if (empty($brood)) {
throw new NotFoundException(__('Brood not found'));
}
$http = new Client();
$response = $http->get($brood['url'] . '/individuals/view/' . $individual_id . '/index.json' , [], [
'headers' => [
'Authorization' => $brood['authkey'],
'Accept' => 'Application/json',
'Content-type' => 'Application/json'
]
]);
if ($response->isOk()) {
$org = $response->getJson();
$this->Individual = TableRegistry::getTableLocator()->get('Individual');
$result = $this->Individual->captureIndividual($individual);
return $result;
} else {
return false;
}
}
}