. */ declare(strict_types=1); namespace FireflyIII\Transformers; use FireflyIII\Models\Budget; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use Illuminate\Support\Collection; use League\Fractal\TransformerAbstract; use Symfony\Component\HttpFoundation\ParameterBag; /** * Class BudgetTransformer */ class BudgetTransformer extends TransformerAbstract { /** @var ParameterBag */ protected $parameters; /** * BudgetTransformer constructor. * * @codeCoverageIgnore * * @param ParameterBag $parameters */ public function __construct(ParameterBag $parameters) { $this->parameters = $parameters; } /** * Transform a budget. * * @param Budget $budget * * @return array */ public function transform(Budget $budget): array { $start = $this->parameters->get('start'); $end = $this->parameters->get('end'); $spent = []; if (null !== $start && null !== $end) { /** @var BudgetRepositoryInterface $repository */ $repository = app(BudgetRepositoryInterface::class); $repository->setUser($budget->user); $spent = $repository->spentInPeriodMc(new Collection([$budget]), new Collection, $start, $end); } $data = [ 'id' => (int)$budget->id, 'created_at' => $budget->created_at->toAtomString(), 'updated_at' => $budget->updated_at->toAtomString(), 'active' => 1 === (int)$budget->active, 'name' => $budget->name, 'spent' => $spent, 'links' => [ [ 'rel' => 'self', 'uri' => '/budgets/' . $budget->id, ], ], ]; return $data; } }