Skip to content
Snippets Groups Projects

Resolve "Data ingress for context information for tiki-wiki"

5 files
+ 301
17
Compare changes
  • Side-by-side
  • Inline
Files
5
@@ -76,7 +76,10 @@ class Crud {
return $this->return_error($response, $errors, 400);
}
$smartdatacontextids = $this->_get_value_or_default($body, 'smartDataContextIds', []);
$smartdatacontextids = $this->_get_value_or_default($body, 'smartDataContextIds', null);
if (! isset($smartdatacontextids)) {
return $this->return_error($response, ['Missing smartDataContextIds'], 400);
}
if (! is_array($smartdatacontextids)) {
$smartdatacontextids = [$smartdatacontextids];
}
@@ -106,7 +109,10 @@ class Crud {
return $this->return_error($response, $errors, 400);
}
$smartdatacontextids = $this->_get_value_or_default($body, 'smartDataContextIds', []);
$smartdatacontextids = $this->_get_value_or_default($body, 'smartDataContextIds', null);
if (! isset($smartdatacontextids)) {
return $this->return_error($response, ['Missing smartDataContextIds'], 400);
}
if (! is_array($smartdatacontextids)) {
$smartdatacontextids = [$smartdatacontextids];
}
@@ -246,4 +252,80 @@ class Crud {
return $body[$key];
}
}
function update(Request $request, Response $response, array $params) {
// Basic validation
[$domain, $body, $errors] = $this->_basicValidation($params, $request, $response);
if ($errors) {
return $this->return_error($response, $errors, 400);
}
$id = $this->_get_value_or_default($params, 'id', null);
if (!$id) {
return $this->return_error($response, ["missing SmartDataContextID"], 400);
}
// Validate properties only present in the request body
$updateData = [];
if (isset($body['content'])) {
$contentErrors = SmartDataContext::ValidateContent($body['content']);
if ($contentErrors) {
$errors = array_merge($errors, $contentErrors);
}
$updateData['content'] = $body['content'];
}
if (isset($body['features'])) {
$featuresErrors = SmartDataContext::ValidateFeatures($body['features']);
if ($featuresErrors) {
$errors = array_merge($errors, $featuresErrors);
}
$updateData['features'] = $body['features'];
}
$t0Set = isset($body['t0']);
$t1Set = isset($body['t1']);
if ($t0Set && $t1Set) {
$timestampErrors = SmartDataContext::ValidateTimestamp($body['t0'], $body['t1']);
if ($timestampErrors) {
$errors = array_merge($errors, $timestampErrors);
}
$updateData['t0'] = $body['t0'];
$updateData['t1'] = $body['t1'];
} elseif ($t0Set || $t1Set) {
// Error if only one of t0 or t1 is set
$errors[] = "Both t0 and t1 must be provided together.";
}
if (isset($body['smartDataSources'])) {
$smartDataSourcesErrors = SmartDataContext::ValidateSmartDataSources($body['smartDataSources']);
if ($smartDataSourcesErrors) {
$errors = array_merge($errors, $smartDataSourcesErrors);
}
$updateData['smartDataSources'] = $body['smartDataSources'];
}
if (isset($body['smartDataUnits'])) {
$smartDataUnitsErrors = SmartDataContext::ValidateSmartDataUnits($body['smartDataUnits']);
if ($smartDataUnitsErrors) {
$errors = array_merge($errors, $smartDataUnitsErrors);
}
$updateData['smartDataUnits'] = $body['smartDataUnits'];
}
if ($errors) {
return $this->return_error($response, $errors, 400);
}
// Call the update method from SmartDataContextCrud
$persistence = new SmartDataContextCrud($this->_get_db());
$result = $persistence->update($domain, $id, $updateData);
if ($result['success']) {
return $this->return_json($response, $result['contents']);
} else {
return $this->return_error($response, $result['errors'], 400);
}
}
}
\ No newline at end of file
Loading