. */ declare(strict_types=1); namespace FireflyIII\Transformers; use Carbon\Carbon; use FireflyIII\Exceptions\FireflyException; use FireflyIII\Factory\CategoryFactory; use FireflyIII\Models\Account; use FireflyIII\Models\Recurrence; use FireflyIII\Models\RecurrenceRepetition; use FireflyIII\Models\RecurrenceTransaction; use FireflyIII\Models\RecurrenceTransactionMeta; use FireflyIII\Repositories\Bill\BillRepositoryInterface; use FireflyIII\Repositories\Budget\BudgetRepositoryInterface; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface; use FireflyIII\Support\Facades\Steam; use Illuminate\Support\Facades\Log; use function Safe\json_decode; /** * Class RecurringTransactionTransformer */ class RecurrenceTransformer extends AbstractTransformer { /** * RecurrenceTransformer constructor. */ public function __construct() { } /** * Transform the recurring transaction. * * @throws FireflyException */ public function transform(Recurrence $recurrence): array { Log::debug('Now in Recurrence::transform()'); $shortType = (string)config(sprintf('firefly.transactionTypesToShort.%s', $recurrence->transactionType->type)); $reps = 0 === (int)$recurrence->repetitions ? null : (int)$recurrence->repetitions; Log::debug('Get basic data.'); // basic data. return [ 'id' => (string)$recurrence->id, 'created_at' => $recurrence->created_at->toAtomString(), 'updated_at' => $recurrence->updated_at->toAtomString(), 'type' => $shortType, 'title' => $recurrence->title, 'description' => $recurrence->description, 'first_date' => $recurrence->first_date->toAtomString(), 'latest_date' => $recurrence->latest_date?->toAtomString(), 'repeat_until' => $recurrence->repeat_until?->toAtomString(), 'apply_rules' => $recurrence->apply_rules, 'active' => $recurrence->active, 'nr_of_repetitions' => $reps, 'notes' => $recurrence->meta['notes'], 'repetitions' => $recurrence->meta['repetitions'], 'new_transactions' => $recurrence->meta['transactions'], 'links' => [ [ 'rel' => 'self', 'uri' => '/recurring/' . $recurrence->id, ], ], ]; } }