EMS Checkout code

This commit is contained in:
Roy Johnson 2006-03-20 05:57:50 +00:00
parent 84d43b8d19
commit 8288cfaa6b
4 changed files with 76 additions and 13 deletions

View file

@ -541,7 +541,7 @@ my $sql4 = <<SQL4;
create table EventManagementSystem_purchases (
purchaseId varchar(22) not null,
userId varchar(22),
transactionId varchar(22),
primary key(purchaseId)
)
SQL4

View file

@ -435,7 +435,7 @@ sub getRegistrationInfo {
my %var;
$var{'form.header'} = WebGUI::Form::formHeader($self->session,{action=>$self->getUrl})
.WebGUI::Form::hidden($self->session,{name=>"func",value=>"www_saveRegistration"});
.WebGUI::Form::hidden($self->session,{name=>"func",value=>"saveRegistration"});
$var{'form.footer'} = WebGUI::Form::formFooter($self->session);
$var{'form.submit'} = WebGUI::Form::submit($self->session);
@ -448,15 +448,15 @@ sub getRegistrationInfo {
$var{'form.country.label'} = "Country";
$var{'form.phoneNumber.label'} = "Phone Number";
$var{'form.email.label'} = "Email Address";
$var{'form.firstName'} = WebGUI::Form::Text($self->session,{});
$var{'form.lastName'} = WebGUI::Form::Text($self->session,{});
$var{'form.address'} = WebGUI::Form::Text($self->session,{});
$var{'form.city'} = WebGUI::Form::Text($self->session,{});
$var{'form.state'} = WebGUI::Form::Text($self->session,{});
$var{'form.zipCode'} = WebGUI::Form::Text($self->session,{});
$var{'form.country'} = WebGUI::Form::SelectList($self->session,{});
$var{'form.phoneNumber'} = WebGUI::Form::Phone($self->session,{});
$var{'form.email'} = WebGUI::Form::Email($self->session,{});
$var{'form.firstName'} = WebGUI::Form::Text($self->session,{name=>'firstName'});
$var{'form.lastName'} = WebGUI::Form::Text($self->session,{name=>'lastName'});
$var{'form.address'} = WebGUI::Form::Text($self->session,{name=>'address'});
$var{'form.city'} = WebGUI::Form::Text($self->session,{name=>'city'});
$var{'form.state'} = WebGUI::Form::Text($self->session,{name=>'state'});
$var{'form.zipCode'} = WebGUI::Form::Text($self->session,{name=>'zipCode'});
$var{'form.country'} = WebGUI::Form::SelectList($self->session,{name=>'country', options => {'us' => 'UnitedStates'}});
$var{'form.phoneNumber'} = WebGUI::Form::Phone($self->session,{name=>'phoneNumber'});
$var{'form.email'} = WebGUI::Form::Email($self->session,{name=>'email'});
$var{'registration'} = 1;
return \%var;
}
@ -1149,6 +1149,44 @@ sub www_moveEventUp {
return $self->www_manageEvents;
}
#-------------------------------------------------------------------
sub www_saveRegistration {
my $self = shift;
my $eventsInCart = $self->getEventsInCart;
my $purchaseId = $self->session->id->generate;
foreach my $eventId (@$eventsInCart) {
my $registrationId = $self->setCollateral("EventManagementSystem_registrations", "registrationId",
{
registrationId => "new",
purchaseId => $purchaseId,
productId => $eventId,
firstName => $self->session->form->get("firstName", "text"),
lastName => $self->session->form->get("lastName", "text"),
address => $self->session->form->get("address", "text"),
city => $self->session->form->get("city", "text"),
state => $self->session->form->get("state", "text"),
zipCode => $self->session->form->get("zipCode", "text"),
country => $self->session->form->get("country", "selectList"),
phone => $self->session->form->get("phoneNumber", "phone"),
email => $self->session->form->get("email", "email")
},0,0
);
}
#Our item plug-in needs to be able to associate these records with the result of the payment attempt
my $counter = 0;
while (1) {
unless ($self->session->scratch->get("purchaseId".$counter)) {
$self->session->scratch->set("purchaseId".$counter, $purchaseId);
last;
}
$counter++;
}
#use Data::Dumper; print "<pre>".Dumper($self->session)."</pre>";
return $self->www_view;
}
#-------------------------------------------------------------------
=head2 prepareView ( )
@ -1199,7 +1237,8 @@ sub view {
push (@events, {'event' => $self->processTemplate(\%eventFields, $event->{'templateId'}) });
}
$var{'checkout.url'} = $self->getUrl('op=viewCart');
$var{'checkout.label'} = "Checkout";
$var{'events_loop'} = \@events;
$var{'paginateBar'} = $p->getBarTraditional;
$var{'manageEvents.url'} = $self->getUrl('func=manageEvents');

View file

@ -37,6 +37,23 @@ sub description {
return $_[0]->{_event}->{description};
}
#-------------------------------------------------------------------
sub handler {
my $self = shift;
my $transactionId = shift;
#mark all purchaseIds as paid
my $counter = 0;
while (1) {
my $purchaseId;
if ($purchaseId = $self->session->scratch->get("purchaseId".$counter)) {
$self->session->db->setRow('EventManagementSystem_purchases', 'purchaseId', {'purchaseId'=>$purchaseId, 'transactionId'=>$transactionId}, $purchaseId);
$self->session->scratch->delete("purchaseId".$counter);
$counter++;
}
else { last; }
}
}
#-------------------------------------------------------------------
sub id {
return $_[0]->{_event}->{productId};
@ -83,6 +100,12 @@ sub price {
return $_[0]->{_event}->{price};
}
#-------------------------------------------------------------------
sub session {
my $self = shift;
return $self->{_session};
}
#-------------------------------------------------------------------
sub type {
return 'Event';

View file

@ -103,7 +103,8 @@ sub completeTransaction {
foreach (@{$self->getItems}) {
$item = WebGUI::Commerce::Item->new($self->session,$_->{itemId}, $_->{itemType});
$item->handler;
$item->handler($_->{transactionId});
#$item->handler;
}
$self->status('Completed');