. */ declare(strict_types=1); namespace FireflyIII\Http\Controllers\Chart; use FireflyIII\Generator\Chart\Basic\GeneratorInterface; use FireflyIII\Http\Controllers\Controller; use FireflyIII\Models\PiggyBank; use FireflyIII\Models\PiggyBankEvent; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\Support\CacheProperties; /** * Class PiggyBankController. */ class PiggyBankController extends Controller { /** @var GeneratorInterface */ protected $generator; /** * */ public function __construct() { parent::__construct(); // create chart generator: $this->generator = app(GeneratorInterface::class); } /** * Shows the piggy bank history. * * @param PiggyBankRepositoryInterface $repository * @param PiggyBank $piggyBank * * @return \Symfony\Component\HttpFoundation\Response */ public function history(PiggyBankRepositoryInterface $repository, PiggyBank $piggyBank) { // chart properties for cache: $cache = new CacheProperties; $cache->addProperty('chart.piggy-bank.history'); $cache->addProperty($piggyBank->id); if ($cache->has()) { return response()->json($cache->get()); // @codeCoverageIgnore } $set = $repository->getEvents($piggyBank); $set = $set->reverse(); $chartData = []; $sum = '0'; /** @var PiggyBankEvent $entry */ foreach ($set as $entry) { $label = $entry->date->formatLocalized((string)trans('config.month_and_day')); $sum = bcadd($sum, $entry->amount); $chartData[$label] = $sum; } $data = $this->generator->singleSet($piggyBank->name, $chartData); $cache->store($data); return response()->json($data); } }