2017-09-05 16:37:31 +01:00
package Pear::LocalLoop::Controller::Api::Transactions ;
use Mojo::Base 'Mojolicious::Controller' ;
use Mojo::JSON ;
has error_messages = > sub {
return {
email = > {
required = > { message = > 'No email sent.' , status = > 400 } ,
email = > { message = > 'Email is invalid.' , status = > 400 } ,
} ,
} ;
} ;
sub post_transaction_list_purchases {
my $ c = shift ;
my $ user = $ c - > stash - > { api_user } ;
my $ validation = $ c - > validation ;
$ validation - > input ( $ c - > stash - > { api_json } ) ;
$ validation - > optional ( 'page' ) - > number ;
return $ c - > api_validation_error if $ validation - > has_error ;
my $ transactions = $ user - > entity - > purchases - > search (
undef , {
page = > $ validation - > param ( 'page' ) || 1 ,
rows = > 10 ,
order_by = > { - desc = > 'purchase_time' } ,
} ,
) ;
2017-09-05 17:24:04 +01:00
2018-03-13 12:55:13 +00:00
my $ recurring_transactions = $ c - > schema - > resultset ( 'TransactionRecurring' ) - > search ( {
buyer_id = > $ user - > id ,
} ) ;
# purchase_time needs timezone attached to it
2017-09-05 16:37:31 +01:00
my @ transaction_list = (
map { {
2017-09-05 17:24:04 +01:00
seller = > $ _ - > seller - > name ,
2017-09-13 16:07:23 +01:00
value = > $ _ - > value / 100000 ,
2017-09-19 17:40:17 +01:00
purchase_time = > $ c - > format_iso_datetime ( $ _ - > purchase_time ) ,
2017-09-05 16:37:31 +01:00
} } $ transactions - > all
2017-09-05 17:24:04 +01:00
) ;
2018-03-15 13:06:50 +00:00
2018-03-13 12:55:13 +00:00
my @ recurring_transaction_list = (
map { {
2018-03-14 17:55:24 +00:00
id = > $ _ - > id ,
2018-03-13 12:55:13 +00:00
seller = > $ _ - > seller - > name ,
value = > $ _ - > value / 100000 ,
start_time = > $ c - > format_iso_datetime ( $ _ - > start_time ) ,
2018-03-15 13:06:50 +00:00
last_updated = > $ c - > format_iso_datetime ( $ _ - > last_updated ) || undef ,
2018-03-13 12:55:13 +00:00
essential = > $ _ - > essential ,
2018-03-15 13:06:50 +00:00
category = > $ _ - > category_id ,
2018-03-13 12:55:13 +00:00
recurring_period = > $ _ - > recurring_period ,
} } $ recurring_transactions - > all
) ;
2017-09-05 16:37:31 +01:00
return $ c - > render ( json = > {
success = > Mojo::JSON - > true ,
transactions = > \ @ transaction_list ,
2018-03-13 12:55:13 +00:00
recurring_transactions = > \ @ recurring_transaction_list ,
2017-09-06 17:03:53 +01:00
page_no = > $ transactions - > pager - > total_entries ,
2017-09-05 16:37:31 +01:00
} ) ;
}
2018-03-14 17:55:24 +00:00
sub update_recurring {
my $ c = shift ;
my $ user = $ c - > stash - > { api_user } ;
my $ validation = $ c - > validation ;
$ validation - > input ( $ c - > stash - > { api_json } ) ;
#TODO check that user matches seller on database before updating for that id
}
2017-09-05 16:37:31 +01:00
1 ;