[wellwell-devel] [wellwell] Prevent coupon number from entered twice in one session.
Stefan Hornburg
wellwell-devel at rt.icdevgroup.org
Wed Jul 21 10:52:10 UTC 2010
commit 7bbaf9f416ae6bbaafd840ea4dd5e120129c6fca
Author: Stefan Hornburg (Racke) <racke at linuxia.de>
Date: Wed Jul 21 12:29:11 2010 +0200
Prevent coupon number from entered twice in one session.
lib/WellWell/Coupon.pm | 39 +++++++++++++++++++++++++++++++--------
1 files changed, 31 insertions(+), 8 deletions(-)
---
diff --git a/lib/WellWell/Coupon.pm b/lib/WellWell/Coupon.pm
index 796a136..ee83657 100644
--- a/lib/WellWell/Coupon.pm
+++ b/lib/WellWell/Coupon.pm
@@ -39,23 +39,44 @@ sub coupons {
my ($function, $code, $opt, $body) = @_;
my ($coupon, $repo);
- if ($function eq 'validate' || $function eq 'redeem') {
+ if ($function eq 'validate') {
if ($coupon = lookup($code)) {
- if ($function eq 'validate') {
- return $coupon->code();
- }
- else {
- $coupon->redeem();
+ return $coupon->code();
+ }
+ else {
+ Vend::Tags->error({name => 'coupons', set => $last_error, overwrite => 1});
+ }
+
+ return;
+ }
+
+ if ($function eq 'redeem') {
+ if ($coupon = lookup($code)) {
+ # check whether the coupon exists in the session first
+ if (exists $Vend::Session->{coupons}) {
+ $repo = $Vend::Session->{coupons};
+
+ if (exists $repo->[1]->{$code}) {
+ Vend::Tags->error({name => 'coupons', set => 'Coupon already in use', overwrite => 1});
+ return;
+ }
}
+
+ $coupon->redeem();
}
else {
Vend::Tags->error({name => 'coupons', set => $last_error, overwrite => 1});
}
+
+ return;
}
- elsif ($function eq 'cancel') {
+
+ if ($function eq 'cancel') {
# noop right now
+ return;
}
- elsif ($function eq 'display') {
+
+ if ($function eq 'display') {
my (@out);
if (exists $Vend::Session->{coupons}) {
@@ -72,6 +93,8 @@ sub coupons {
return join('', @out);
}
+
+ return;
}
return;
More information about the wellwell-devel
mailing list