Guest User

Untitled

a guest
Jul 19th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.39 KB | None | 0 0
  1. package Greenspan::Model::Checkout::CashCardRedemption;
  2. use Moose::Role;
  3.  
  4. has 'cash_card_verifier' => (
  5. is => 'ro',
  6. isa => 'Data::Verifier',
  7. default => sub {
  8. Data::Verifier->new(
  9. filters => [ qw(trim collapse) ],
  10. profile => {
  11. vcode => { required => 1, type => Str },
  12. }
  13. );
  14. }
  15. );
  16.  
  17. sub verify_cash_card {
  18. my ($self, $data) = @_;
  19.  
  20. my $result = $self->cash_card_verifier($data);
  21.  
  22. my $schema = $self->schema;
  23. # find the gift cert based on vcode
  24. my $gc = $schema->resultset('Payment::GiftCertificate')->find({
  25. code => $vcode
  26. });
  27.  
  28. my $field = $result->get_field('vcode');
  29.  
  30. if(!$gc) {
  31. $field->reason('invalid_vcode');
  32. $field->valid(0);
  33. }
  34.  
  35. # can the GC be redeemed for cash?
  36. if(!$gc->cash) {
  37. $field->reason('not_cash_card');
  38. $field->valid(0);
  39. }
  40. # has the GC expired? is the GC exhausted?
  41. if(!$gc->valid_giftcard || !$gc->available_amount(1) ) {
  42. $field->reason('invalid_giftcard');
  43. $field->valid(0);
  44. }
  45.  
  46. # get quantity ( GC->available_amount / 0.01 )
  47. my $amount = $gc->available_amount(1);
  48. if($amount <= 0) {
  49. # Can't redeem a cash card with no balance left!
  50. $field->reason('invalid_giftcard');
  51. $field->valid(0;)
  52. }
  53.  
  54. return $result;
  55. }
  56.  
  57. 1;
Add Comment
Please, Sign In to add comment