package MyRedland::Controller::SubscriptionOrder; use v5.34.1; use strict; use warnings; use Mojo::Base 'Mojolicious::Controller'; use MyRedland::Stripe; use MyRedland::SubscriptionOrders; sub save_card_api { my $self = shift; my $params = $self->req->json; my $user = $self->current_user; my $so = $self->current_order; my $stripe = MyRedland::Stripe->new( app => $self->app ); if ( !defined $user || !defined $so ) { $self->render( json => { error => 'No puedes hacer eso, para hacer esto debes tener un usuario loggeado y una orden de suscripción.' }, status => 400 ); return; } if ( $so->user->uuid ne $user->uuid ) { say STDERR 'Orden de subscripción no coincidente con usuario.'; $self->render( json => { error => 'El servidor ha llegado a un estado erroneo.' }, status => 500 ); return; } if ( !defined $params->{new_value} ) { $self->render( json => { error => 'Debes pasar new_value', }, status => 400 ); return; } if ( !$params->{new_value} && $so->renew_auto ) { $self->render( json => { error => 'No puedes deshabilitar el guardado de tarjeta sin deshabilitar la renovación automática' }, status => 400 ); return; } my $new_value = !!$params->{new_value}; my $subscription_order_dao = MyRedland::SubscriptionOrders->new( app => $self->app ); $so->save_card( $new_value ? 1 : 0 ); $so = $subscription_order_dao->update( subscription_order => $so, fields => [qw/save_card/] ); $self->render( json => { text => 'Success' } ); } sub renew_auto_api { my $self = shift; my $params = $self->req->json; my $user = $self->current_user; my $so = $self->current_order; my $stripe = MyRedland::Stripe->new( app => $self->app ); if ( !defined $user || !defined $so ) { $self->render( json => { error => 'No puedes hacer eso, para hacer esto debes tener un usuario loggeado y una orden de suscripción.' }, status => 400 ); return; } if ( $so->user->uuid ne $user->uuid ) { say STDERR 'Orden de subscripción no coincidente con usuario.'; $self->render( json => { error => 'El servidor ha llegado a un estado erroneo.' }, status => 500 ); return; } if ( !defined $params->{new_value} ) { $self->render( json => { error => 'Debes pasar new_value', }, status => 400 ); return; } my $subscription_order_dao = MyRedland::SubscriptionOrders->new( app => $self->app ); my $new_value = $params->{new_value}; $so->save_card(1); $so->renew_auto( $new_value ? 1 : 0 ); $so = $subscription_order_dao->update( subscription_order => $so, fields => [qw/renew_auto save_card/] ); $self->render( json => { text => 'Success' } ); } sub get_status { my $self = shift; my $user = $self->current_user; my $so = $self->current_order; if ( !defined $user || !defined $so ) { $self->render( json => { error => 'No puedes hacer eso, para hacer esto debes tener un usuario loggeado y una orden de suscripción.' }, status => 400 ); return; } if ( $so->user->uuid ne $user->uuid ) { say STDERR 'Orden de subscripción no coincidente con usuario.'; $self->render( json => { error => 'El servidor ha llegado a un estado erroneo.' }, status => 500 ); return; } $self->render( json => { save_card => $so->save_card, renew_auto => $so->renew_auto } ); } 1;