. */ declare(strict_types=1); namespace FireflyIII\Support\Http\Api; use FireflyIII\Exceptions\FireflyException; /** * Trait CleansChartData */ trait CleansChartData { /** * Clean up given chart data array. Each entry is supposed to be a * "main" entry used in the V2 API chart endpoints. This loop makes sure * IDs are strings and other values are present (or missing). * * @throws FireflyException */ private function clean(array $data): array { $return = []; /** * @var int $index * @var array $array */ foreach ($data as $index => $array) { $array = $this->cleanSingleArray($index, $array); $return[] = $array; } return $return; } private function cleanSingleArray(mixed $index, array $array): array { if (array_key_exists('currency_id', $array)) { $array['currency_id'] = (string)$array['currency_id']; } if (array_key_exists('primary_currency_id', $array)) { $array['primary_currency_id'] = (string)$array['primary_currency_id']; } $required = [ 'start_date', 'end_date', 'period', 'yAxisID', 'type', 'entries', 'pc_entries', 'currency_id', 'primary_currency_id', ]; foreach ($required as $field) { if (!array_key_exists($field, $array)) { throw new FireflyException(sprintf('Data-set "%s" is missing the "%s"-variable.', $index, $field)); } } return $array; } }