From c1fb530eea90fcf7c1c294b44d6d833e4dbcd809 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sun, 24 Jun 2018 12:01:23 -0400 Subject: add scheduled transactions --- lib/WWW/YNAB/Budget.pm | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'lib/WWW/YNAB/Budget.pm') diff --git a/lib/WWW/YNAB/Budget.pm b/lib/WWW/YNAB/Budget.pm index 97d0d84..5a8bdee 100644 --- a/lib/WWW/YNAB/Budget.pm +++ b/lib/WWW/YNAB/Budget.pm @@ -98,6 +98,18 @@ has _transactions => ( } ); +has _scheduled_transactions => ( + traits => ['Array'], + is => 'ro', + isa => 'ArrayRef[WWW::YNAB::ScheduledTransaction]', + init_arg => 'scheduled_transactions', + lazy => 1, + builder => '_build_scheduled_transactions', + handles => { + scheduled_transactions => 'elements', + } +); + has _ua => ( is => 'ro', isa => 'WWW::YNAB::UA', @@ -257,6 +269,36 @@ sub transaction { $self->model_from_data('WWW::YNAB::Transaction', \%transaction); } +sub _build_scheduled_transactions { + my $self = shift; + + my $data = $self->_ua->get("/budgets/${\$self->id}/scheduled_transactions"); + [ + map { + my %transaction = %$_; + my @subtransactions = map { + $self->model_from_data('WWW::YNAB::ScheduledSubTransaction', $_) + } @{ $transaction{subtransactions} }; + $transaction{subtransactions} = \@subtransactions; + $self->model_from_data('WWW::YNAB::ScheduledTransaction', \%transaction) + } @{ $data->{data}{scheduled_transactions} } + ] +} + +sub scheduled_transaction { + my $self = shift; + my ($id) = @_; + + my $data = $self->_ua->get("/budgets/${\$self->id}/scheduled_transactions/$id"); + my $transaction = $data->{data}{scheduled_transaction}; + my %transaction = %$transaction; + my @subtransactions = map { + $self->model_from_data('WWW::YNAB::ScheduledSubTransaction', $_) + } @{ $transaction{subtransactions} }; + $transaction{subtransactions} = \@subtransactions; + $self->model_from_data('WWW::YNAB::ScheduledTransaction', \%transaction); +} + __PACKAGE__->meta->make_immutable; no Moose; -- cgit v1.2.3-54-g00ecf