@@ -8,6 +8,21 @@ has error_messages => sub {
88 required => { message => ' No email sent.' , status => 400 },
99 email => { message => ' Email is invalid.' , status => 400 },
1010 },
11+ value => {
12+ required => { message => ' transaction amount is missing' , status => 400 },
13+ number => { message => ' transaction amount does not look like a number' , status => 400 },
14+ gt_num => { message => ' transaction amount cannot be equal to or less than zero' , status => 400 },
15+ },
16+ apply_time => {
17+ required => { message => ' purchase time is missing' , status => 400 },
18+ is_full_iso_datetime => { message => ' time is in incorrect format' , status => 400 },
19+ },
20+ id => {
21+ required => { message => ' Recurring Transaction not found' , status => 400 },
22+ },
23+ category => {
24+ in_resultset => { message => ' Category is invalid' , status => 400 },
25+ },
1126 };
1227};
1328
@@ -30,7 +45,11 @@ sub post_transaction_list_purchases {
3045 },
3146 );
3247
33- # purchase_time needs timezone attached to it
48+ my $recurring_transactions = $c -> schema-> resultset(' TransactionRecurring' )-> search({
49+ buyer_id => $user -> id,
50+ });
51+
52+ # purchase_time needs timezone attached to it
3453 my @transaction_list = (
3554 map {{
3655 seller => $_ -> seller-> name,
@@ -39,11 +58,112 @@ sub post_transaction_list_purchases {
3958 }} $transactions -> all
4059 );
4160
61+ my @recurring_transaction_list = (
62+ map {{
63+ id => $_ -> id,
64+ seller => $_ -> seller-> name,
65+ value => $_ -> value / 100000,
66+ start_time => $c -> format_iso_datetime($_ -> start_time),
67+ last_updated => $c -> format_iso_datetime($_ -> last_updated) || undef ,
68+ essential => $_ -> essential,
69+ category => $_ -> category_id || 0,
70+ recurring_period => $_ -> recurring_period,
71+ }} $recurring_transactions -> all
72+ );
73+
4274 return $c -> render( json => {
4375 success => Mojo::JSON-> true,
4476 transactions => \@transaction_list ,
77+ recurring_transactions => \@recurring_transaction_list ,
4578 page_no => $transactions -> pager-> total_entries,
4679 });
4780}
4881
82+ sub update_recurring {
83+ my $c = shift ;
84+
85+ my $user = $c -> stash-> {api_user };
86+
87+ my $validation = $c -> validation;
88+ $validation -> input( $c -> stash-> {api_json } );
89+ $validation -> required(' id' );
90+
91+ return $c -> api_validation_error if $validation -> has_error;
92+
93+ my $id = $validation -> param(' id' );
94+
95+ my $recur_transaction = $c -> schema-> resultset(' TransactionRecurring' )-> find($id );
96+ unless ( $recur_transaction ) {
97+ return $c -> render(
98+ json => {
99+ success => Mojo::JSON-> false,
100+ message => ' Error Finding Recurring Transaction' ,
101+ error => ' recurring_error' ,
102+ },
103+ status => 400,
104+ );
105+ }
106+
107+ $validation -> required(' recurring_period' );
108+ $validation -> required(' apply_time' )-> is_full_iso_datetime;
109+ $validation -> optional(' category' )-> in_resultset( ' id' , $c -> schema-> resultset(' Category' ));
110+ $validation -> optional(' essential' );
111+ $validation -> required(' value' );
112+
113+ return $c -> api_validation_error if $validation -> has_error;
114+
115+ my $apply_time = $c -> parse_iso_datetime($validation -> param(' apply_time' ));
116+
117+ $c -> schema-> storage-> txn_do( sub {
118+ $recur_transaction -> update({
119+ start_time => $c -> format_db_datetime($apply_time ),
120+ last_updated => undef ,
121+ category_id => $validation -> param(' category' ),
122+ essential => $validation -> param(' essential' ),
123+ value => $validation -> param(' value' ) * 100000,
124+ recurring_period => $validation -> param(' recurring_period' ),
125+ });
126+ });
127+
128+ return $c -> render( json => {
129+ success => Mojo::JSON-> true,
130+ message => ' Recurring Transaction Updated Successfully' ,
131+ });
132+
133+ }
134+
135+ sub delete_recurring {
136+ my $c = shift ;
137+
138+ my $user = $c -> stash-> {api_user };
139+
140+ my $validation = $c -> validation;
141+ $validation -> input( $c -> stash-> {api_json } );
142+ $validation -> required(' id' );
143+
144+ return $c -> api_validation_error if $validation -> has_error;
145+
146+ my $id = $validation -> param(' id' );
147+
148+ my $recur_transaction = $c -> schema-> resultset(' TransactionRecurring' )-> find($id );
149+ unless ( $recur_transaction ) {
150+ return $c -> render(
151+ json => {
152+ success => Mojo::JSON-> false,
153+ message => ' Error Finding Recurring Transaction' ,
154+ error => ' recurring_error' ,
155+ },
156+ status => 400,
157+ );
158+ }
159+
160+ $recur_transaction -> delete ;
161+
162+ return $c -> render( json => {
163+ success => Mojo::JSON-> true,
164+ message => ' Recurring Transaction Deleted Successfully' ,
165+ });
166+
167+ }
168+
491691;
0 commit comments