. */ declare(strict_types=1); namespace FireflyIII\Transformers; use FireflyIII\Models\Transaction; use League\Fractal\TransformerAbstract; use Symfony\Component\HttpFoundation\ParameterBag; /** * Class TransactionTransformer */ class TransactionTransformer extends TransformerAbstract { /** @var ParameterBag */ protected $parameters; /** * BillTransformer constructor. * * @param ParameterBag $parameters */ public function __construct(ParameterBag $parameters) { $this->parameters = $parameters; } /** * @param Transaction $transaction * * @return array */ public function transform(Transaction $transaction): array { $opposing = Transaction ::where('transaction_journal_id', $transaction->transaction_journal_id) ->where('identifier', $transaction->identifier) ->where('amount', $transaction->amount * -1) ->whereNull('deleted_at') ->first(['transactions.*']); $data = [ 'id' => (int)$transaction->id, 'updated_at' => $transaction->updated_at->toAtomString(), 'created_at' => $transaction->created_at->toAtomString(), 'source_id' => (int)$transaction->account_id, 'destination_id' => $opposing->account_id, 'description' => $transaction->description, 'currency_id' => (int)$transaction->transaction_currency_id, 'amount' => (float)$transaction->amount, 'foreign_currency_id' => is_null($transaction->foreign_currency_id) ? null : (int)$transaction->foreign_currency_id, 'foreign_amount' => is_null($transaction->foreign_amount) ? null : (float)$transaction->foreign_amount, 'identifier' => (int)$transaction->identifier, 'links' => [ [ 'rel' => 'self', 'uri' => '/transactions/' . $transaction->id, ], ], ]; return $data; } }