MCPcopy Create free account
hub / github.com/Rello/analytics / addDataV4

Method addDataV4

lib/Controller/ApiDataController.php:307–342  ·  view source on GitHub ↗

* add data via there real field names * @param int $datasetId * @return DataResponse * @throws \Exception */

(int $datasetId)

Source from the content-addressed store, hash-verified

305 * @throws \Exception
306 */
307 #[NoAdminRequired]
308 #[NoCSRFRequired]
309 #[CORS]
310 public function addDataV4(int $datasetId) {
311 $datasetId = $this->getDatasetIdFromRoute($datasetId);
312 $message = 'No -data- parameter';
313 $params = $this->request->getParams();
314 $datasetMetadata = $this->DatasetService->readOwn($datasetId);
315
316 $response = $this->deriveMaintenancePossible($datasetMetadata);
317 if ($response !== true) return $response;
318
319 $insert = $update = 0;
320 foreach ($params['data'] as $dataArray) {
321
322 $dimension1 = $this->deriveParameterNames($dataArray, $datasetMetadata, 'dimension1');
323 $dimension2 = $this->deriveParameterNames($dataArray, $datasetMetadata, 'dimension2');
324 $value = $this->deriveParameterNames($dataArray, $datasetMetadata, 'value');
325
326 if (!empty($this->errors)) {
327 return $this->requestResponse(false, self::MISSING_PARAM, implode(',', $this->errors));
328 }
329
330 $action = $this->StorageService->update($datasetId, $dimension1, $dimension2, $value, null, null, null, false);
331 $insert = $insert + $action['insert'];
332 $update = $update + $action['update'];
333
334 $message = 'Data update successful';
335 }
336 if ($insert > 0 || $update > 0) {
337 $this->ReportService->increaseVersionByDataset($datasetId);
338 $this->DatasetService->provider($datasetId);
339 }
340
341 return $this->requestResponse(true, Http::STATUS_OK, $message);
342 }
343
344 /**
345 * JSON request bodies can overwrite controller arguments after route matching.

Callers

nothing calls this directly

Calls 8

getDatasetIdFromRouteMethod · 0.95
deriveParameterNamesMethod · 0.95
requestResponseMethod · 0.95
readOwnMethod · 0.45
updateMethod · 0.45
providerMethod · 0.45

Tested by

no test coverage detected