Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Greenspan::Model::Checkout::CashCardRedemption;
- use Moose::Role;
- has 'cash_card_verifier' => (
- is => 'ro',
- isa => 'Data::Verifier',
- default => sub {
- Data::Verifier->new(
- filters => [ qw(trim collapse) ],
- profile => {
- vcode => { required => 1, type => Str },
- }
- );
- }
- );
- sub verify_cash_card {
- my ($self, $data) = @_;
- my $result = $self->cash_card_verifier($data);
- my $schema = $self->schema;
- # find the gift cert based on vcode
- my $gc = $schema->resultset('Payment::GiftCertificate')->find({
- code => $vcode
- });
- my $field = $result->get_field('vcode');
- if(!$gc) {
- $field->reason('invalid_vcode');
- $field->valid(0);
- }
- # can the GC be redeemed for cash?
- if(!$gc->cash) {
- $field->reason('not_cash_card');
- $field->valid(0);
- }
- # has the GC expired? is the GC exhausted?
- if(!$gc->valid_giftcard || !$gc->available_amount(1) ) {
- $field->reason('invalid_giftcard');
- $field->valid(0);
- }
- # get quantity ( GC->available_amount / 0.01 )
- my $amount = $gc->available_amount(1);
- if($amount <= 0) {
- # Can't redeem a cash card with no balance left!
- $field->reason('invalid_giftcard');
- $field->valid(0;)
- }
- return $result;
- }
- 1;
Add Comment
Please, Sign In to add comment