[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