sub show {
my( $cgi, $rh_template_variables ) = @_;
my $coupon_code = $cgi->param("coupon_code");
return unless $coupon_code;
my %stmt_lookup = (
codes => 'SELECT codelist_id, active, last_change, start_date, end_date, (start_date IS NULL OR start_date < NOW()) AND (end_date IS NULL OR end_date > NOW()) FROM codes WHERE code = ?',
benefits_codes => {
codelist => 'SELECT type, percent, amount, currency, start_date, end_date, description_de, (start_date IS NULL OR start_date < NOW()) AND (end_date IS NULL OR end_date > NOW()) FROM benefits_codes WHERE codelist_id = ?',
code => 'SELECT type, percent, amount, currency, start_date, end_date, description_de, (start_date IS NULL OR start_date < NOW()) AND (end_date IS NULL OR end_date > NOW()) FROM benefits_codes WHERE coupon_code = ?'
}
);
$rh_template_variables->{coupon_code} = $coupon_code;
my $found_something = 0; # Variable wird auf 0 gesetzt
foreach my $shop_abbr ( @{$SHOP::Constants::supported{shop_abbr}{Server}} ) {
my $db_id = $SHOP::Constants::shop{$shop_abbr}{db_id};
my $dbh = DBI->connect( @{$SHOP::Constants::db{$db_id}{connect}{shop_write}} );
my $rh_code = $rh_template_variables->{code_lookup}{$shop_abbr}{code} = {};
@$rh_code{ qw( codelist_id active last_change start_date end_date is_valid ) } = $dbh->selectrow_array( $stmt_lookup{codes}, {}, $coupon_code );
#### $hash{eins}, $hash{zwei}, $hash{drei} @hash{'eins', 'zweiter key', 'drei'} @hash{ qw(eins zweiter key drei), 'zweiter key', qw(...) }
# my( $codelist_id, $active, $last_change, $start_date, $end_date ) = $dbh->selectrow_array( $stmt_lookup{codes}, {}, $coupon_code );
if ( defined $rh_code->{codelist_id} ) {
$found_something = 1; # Wenn eingegebener Code gefunden dann Variable auf 1 gesetzt
$rh_code->{last_change} =~ /^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/;
$rh_template_variables->{code_lookup}{$shop_abbr}{code}{last_change} = sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $1, $2, $3, $4, $5, $6 );
$rh_code->{is_used} = ( ($rh_code->{active} == 1 or $rh_code->{codelist_id} == 0 ) ? 1 : 0 );
if ( $rh_code->{codelist_id} > 0 ) {
my $sth_lookup = $dbh->prepare( $stmt_lookup{benefits_codes}{codelist} );
$sth_lookup->execute( $rh_code->{codelist_id} ); #or warn $dbh->errstr();
while ( my $ra_benefits_codes = $sth_lookup->fetchrow_arrayref() ) {
push @{$rh_template_variables->{code_lookup}{$shop_abbr}{actions}}, {
type => $ra_benefits_codes->[0] || '',
percent => $ra_benefits_codes->[1] || '',
amount => $ra_benefits_codes->[2] || '',
currency => $ra_benefits_codes->[3] || '',
start_date => $ra_benefits_codes->[4] || '',
end_date => $ra_benefits_codes->[5] || '',
description_de => $ra_benefits_codes->[6] || '',
is_used => $ra_benefits_codes->[7] || '',
codelist_id => $rh_code->{codelist_id}
};
}
}
} else {
delete $rh_template_variables->{code_lookup}{$shop_abbr};
}
### lookup in benefits_codes über coupon_code
my $sth_lookup = $dbh->prepare( $stmt_lookup{benefits_codes}{code} );
$sth_lookup->execute( $coupon_code );
while ( my $ra_benefits_codes = $sth_lookup->fetchrow_arrayref() ) {
$found_something = 1;
push @{$rh_template_variables->{code_lookup}{$shop_abbr}{actions}}, {
type => $ra_benefits_codes->[0] || '',
percent => $ra_benefits_codes->[1] || '',
amount => $ra_benefits_codes->[2] || '',
currency => $ra_benefits_codes->[3] || '',
start_date => $ra_benefits_codes->[4] || '',
end_date => $ra_benefits_codes->[5] || '',
description_de => $ra_benefits_codes->[6] || '',
is_used => $ra_benefits_codes->[7] || '',
codelist_id => ''
};
}
$dbh->disconnect();
}
# wenn Variable = 0 oder undefiniert dann gib Fehlermeldung aus!
unless( $found_something ) {
$rh_template_variables->{error} = 'nothing_found';
}
}