From 5a50203b35b0b97f990c634f217c71c468dfacc4 Mon Sep 17 00:00:00 2001 From: JT Smith Date: Thu, 20 Mar 2008 18:57:35 +0000 Subject: [PATCH] added token and ribbon skus --- docs/upgrades/upgrade_7.5.2-7.5.3.pl | 27 +++- lib/WebGUI/Asset/Sku/EMSBadge.pm | 11 +- lib/WebGUI/Asset/Sku/EMSRibbon.pm | 120 +++++++++++++++++ lib/WebGUI/Asset/Sku/EMSTicket.pm | 24 ++-- lib/WebGUI/Asset/Sku/EMSToken.pm | 124 ++++++++++++++++++ .../English/Asset_EventManagementSystem.pm | 12 ++ 6 files changed, 303 insertions(+), 15 deletions(-) create mode 100644 lib/WebGUI/Asset/Sku/EMSRibbon.pm create mode 100644 lib/WebGUI/Asset/Sku/EMSToken.pm diff --git a/docs/upgrades/upgrade_7.5.2-7.5.3.pl b/docs/upgrades/upgrade_7.5.2-7.5.3.pl index 6e8263770..3664cee17 100644 --- a/docs/upgrades/upgrade_7.5.2-7.5.3.pl +++ b/docs/upgrades/upgrade_7.5.2-7.5.3.pl @@ -69,11 +69,23 @@ sub upgradeEMS { index badgeAssetId_purchaseComplete (badgeAssetId,purchaseComplete) )"); $db->write("create table EMSRegistrantTicket ( - badgeId varchar(22) binary not null primary key, + badgeId varchar(22) binary not null, ticketAssetId varchar(22) binary not null, purchaseComplete boolean, + primary key (badgeId, ticketAssetId), index ticketAssetId_purchaseComplete (ticketAssetId,purchaseComplete) )"); + $db->write("create table EMSRegistrantToken ( + badgeId varchar(22) binary not null, + tokenAssetId varchar(22) binary not null, + quantity int, + primary key (badgeId,tokenAssetId) + )"); + $db->write("create table EMSRegistrantRibbon ( + badgeId varchar(22) binary not null, + tokenAssetId varchar(22) binary not null, + primary key (badgeId,tokenAssetId) + )"); $db->write("create table EMSBadge ( assetId varchar(22) binary not null, revisionDate bigint not null, @@ -81,7 +93,6 @@ sub upgradeEMS { seatsAvailable int not null default 100, primary key (assetId, revisionDate) )"); - $db->write("insert into incrementer values ('EMSBadgeNumber', 1)"); $db->write("create table EMSTicket ( assetId varchar(22) binary not null, revisionDate bigint not null, @@ -93,6 +104,18 @@ sub upgradeEMS { relatedBadges mediumtext, primary key (assetId, revisionDate) )"); + $db->write("create table EMSToken ( + assetId varchar(22) binary not null, + revisionDate bigint not null, + price float not null default 0.00, + primary key (assetId, revisionDate) + )"); + $db->write("create table EMSRibbon ( + assetId varchar(22) binary not null, + revisionDate bigint not null, + price float not null default 0.00, + primary key (assetId, revisionDate) + )"); } #------------------------------------------------- diff --git a/lib/WebGUI/Asset/Sku/EMSBadge.pm b/lib/WebGUI/Asset/Sku/EMSBadge.pm index 0cf6fbeb8..7d8dcbaa1 100644 --- a/lib/WebGUI/Asset/Sku/EMSBadge.pm +++ b/lib/WebGUI/Asset/Sku/EMSBadge.pm @@ -28,7 +28,7 @@ Package WebGUI::Asset::Sku::EMSBadge =head1 DESCRIPTION -A badge for the Event Manager. +A badge for the Event Manager. Badges allow you into the convention. =head1 SYNOPSIS @@ -47,7 +47,7 @@ sub addToCart { $badgeInfo->{badgeAssetId} = $self->getId; $badgeInfo->{emsAssetId} = $self->getParent->getId; my $badgeId = $self->session->db->setRow("EMSRegistrant","badgeId", $badgeInfo); - $self->SUPER::addToCart({badgeId=>$badgeId, name=>$badgeInfo->{name}}); + $self->SUPER::addToCart({badgeId=>$badgeId}); } #------------------------------------------------------------------- @@ -89,7 +89,8 @@ sub definition { #------------------------------------------------------------------- sub getConfiguredTitle { my $self = shift; - return $self->getTitle." (".$self->getOptions->{name}.")"; + my $name = $self->session->db->getScalar("select name from EMSRegistrant where badgeId=?",[$self->getOptions->{badgeId}]); + return $self->getTitle." (".$name.")"; } @@ -107,7 +108,7 @@ sub getPrice { #------------------------------------------------------------------- sub getQuantityAvailable { my $self = shift; - my $seatsTaken = $self->session->db->quickScalar("select count(*) from EMSRegistrant where badgeAssetId=? and purchaseComplete=1",[$self->getId]); + my $seatsTaken = $self->session->db->quickScalar("select count(*) from EMSRegistrant where badgeAssetId=?",[$self->getId]); return $self->get("seatsAvailable") - $seatsTaken; } @@ -218,7 +219,7 @@ sub view { label => $i18n->get('email address'), defaultValue => $form->get("email","email") ); - $info->submit(value=>"add to cart"); + $info->submit(value=>$i18n->get('add to cart','Shop')); # render the page; my $output = '

'.$self->getTitle.'

' diff --git a/lib/WebGUI/Asset/Sku/EMSRibbon.pm b/lib/WebGUI/Asset/Sku/EMSRibbon.pm new file mode 100644 index 000000000..6c86bd9f1 --- /dev/null +++ b/lib/WebGUI/Asset/Sku/EMSRibbon.pm @@ -0,0 +1,120 @@ +package WebGUI::Asset::Sku::EMSRibbon; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2008 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + +=cut + +use strict; +use Tie::IxHash; +use base 'WebGUI::Asset::Sku'; + + + +=head1 NAME + +Package WebGUI::Asset::Sku::EMSRibbon + +=head1 DESCRIPTION + +A ribbon for the Event Manager. Ribbons are like coupons that give you discounts on events. + +=head1 SYNOPSIS + +use WebGUI::Asset::Sku::EMSRibbon; + +=head1 METHODS + +These methods are available from this class: + +=cut + + +#------------------------------------------------------------------- +sub definition { + my $class = shift; + my $session = shift; + my $definition = shift; + my %properties; + tie %properties, 'Tie::IxHash'; + my $i18n = WebGUI::International->new($session, "Asset_EventManagementSystem"); + my $date = WebGUI::DateTime->new($session, time()); + %properties = ( + price => { + tab => "commerce", + fieldType => "float", + defaultValue => 0.00, + label => $i18n->get("price"), + hoverHelp => $i18n->get("price help"), + }, + ); + push(@{$definition}, { + assetName => $i18n->get('ems ribbon'), + icon => 'EMSRibbon.gif', + autoGenerateForms => 1, + tableName => 'EMSRibbon', + className => 'WebGUI::Asset::Sku::EMSRibbon', + properties => \%properties + }); + return $class->SUPER::definition($session, $definition); +} + + +#------------------------------------------------------------------- +sub getConfiguredTitle { + my $self = shift; + my $name = $self->session->db->getScalar("select name from EMSRegistrant where badgeId=?",[$self->getOptions->{badgeId}]); + return $self->getTitle." (".$name.")"; +} + +#------------------------------------------------------------------- +sub getMaxAllowedInCart { + return 1; +} + +#------------------------------------------------------------------- +sub getPrice { + my $self = shift; + return $self->get("price"); +} + +#------------------------------------------------------------------- +sub onCompletePurchase { + my ($self, $item) = @_; + $self->session->db->write("insert into EMSRegistrationRibbon (ribbonAssetId, badgeId) values (?,?)", + [$self->getId, $self->getOptions->{badgeId}]); + return undef; +} + +#------------------------------------------------------------------- +sub purge { + my $self = shift; + $self->session->db->write("delete from EMSRegistrantRibbon where tokenAssetId=?",[$self->getId]); + $self->SUPER::purge; +} + +#------------------------------------------------------------------- +sub view { + my ($self) = @_; + return $self->getParent->view; +} + +#------------------------------------------------------------------- +sub www_addToCart { + my ($self) = @_; + return $self->session->privilege->noAccess() unless $self->getParent->canView; + $self->addToCart({badgeId=>$self->session->form->get('badgeId')}); + return $self->getParent->www_view; +} + + +1; diff --git a/lib/WebGUI/Asset/Sku/EMSTicket.pm b/lib/WebGUI/Asset/Sku/EMSTicket.pm index 8a9c108ac..b99341998 100644 --- a/lib/WebGUI/Asset/Sku/EMSTicket.pm +++ b/lib/WebGUI/Asset/Sku/EMSTicket.pm @@ -22,15 +22,15 @@ use base 'WebGUI::Asset::Sku'; =head1 NAME -Package WebGUI::Asset::Sku::EMSBadge +Package WebGUI::Asset::Sku::EMSTicket =head1 DESCRIPTION -A badge for the Event Manager. +A ticket for the Event Manager. Tickets allow you into invidivual events at a convention. =head1 SYNOPSIS -use WebGUI::Asset::Sku::EMSBadge; +use WebGUI::Asset::Sku::EMSTicket; =head1 METHODS @@ -43,7 +43,7 @@ sub addToCart { my ($self, $badgeInfo) = @_; $self->session->db->write("insert into EMSRegistrantTicket (badgeId, ticketAssetId) values (?,?)", [$badgeInfo->{badgeId},$self->getId]); - $self->addToCart($badgeInfo); + $self->SUPER::addToCart($badgeInfo); } #------------------------------------------------------------------- @@ -115,7 +115,8 @@ sub definition { #------------------------------------------------------------------- sub getConfiguredTitle { my $self = shift; - return $self->getTitle." (".$self->getOptions->{name}.")"; + my $name = $self->session->db->getScalar("select name from EMSRegistrant where badgeId=?",[$self->getOptions->{badgeId}]); + return $self->getTitle." (".$name.")"; } #------------------------------------------------------------------- @@ -132,7 +133,7 @@ sub getPrice { #------------------------------------------------------------------- sub getQuantityAvailable { my $self = shift; - my $seatsTaken = $self->session->db->quickScalar("select count(*) from EMSRegistrantTicket where ticketAssetId=? and purchaseComplete=1",[$self->getId]); + my $seatsTaken = $self->session->db->quickScalar("select count(*) from EMSRegistrantTicket where ticketAssetId=?",[$self->getId]); return $self->get("seatsAvailable") - $seatsTaken; } @@ -161,8 +162,15 @@ sub purge { #------------------------------------------------------------------- sub view { my ($self) = @_; - my $session = $self->session; - return "Don't know what it is to view this thing."; + return $self->getParent->view; +} + +#------------------------------------------------------------------- +sub www_addToCart { + my ($self) = @_; + return $self->session->privilege->noAccess() unless $self->getParent->canView; + $self->addToCart({badgeId=>$self->session->form->get('badgeId')}); + return $self->getParent->www_view; } diff --git a/lib/WebGUI/Asset/Sku/EMSToken.pm b/lib/WebGUI/Asset/Sku/EMSToken.pm new file mode 100644 index 000000000..1877d029a --- /dev/null +++ b/lib/WebGUI/Asset/Sku/EMSToken.pm @@ -0,0 +1,124 @@ +package WebGUI::Asset::Sku::EMSToken; + +=head1 LEGAL + + ------------------------------------------------------------------- + WebGUI is Copyright 2001-2008 Plain Black Corporation. + ------------------------------------------------------------------- + Please read the legal notices (docs/legal.txt) and the license + (docs/license.txt) that came with this distribution before using + this software. + ------------------------------------------------------------------- + http://www.plainblack.com info@plainblack.com + ------------------------------------------------------------------- + +=cut + +use strict; +use Tie::IxHash; +use base 'WebGUI::Asset::Sku'; + + + +=head1 NAME + +Package WebGUI::Asset::Sku::EMSToken + +=head1 DESCRIPTION + +A token for the Event Manager. Tokens are like convention currency. + +=head1 SYNOPSIS + +use WebGUI::Asset::Sku::EMSToken; + +=head1 METHODS + +These methods are available from this class: + +=cut + + +#------------------------------------------------------------------- +sub definition { + my $class = shift; + my $session = shift; + my $definition = shift; + my %properties; + tie %properties, 'Tie::IxHash'; + my $i18n = WebGUI::International->new($session, "Asset_EventManagementSystem"); + my $date = WebGUI::DateTime->new($session, time()); + %properties = ( + price => { + tab => "commerce", + fieldType => "float", + defaultValue => 0.00, + label => $i18n->get("price"), + hoverHelp => $i18n->get("price help"), + }, + ); + push(@{$definition}, { + assetName => $i18n->get('ems token'), + icon => 'EMSToken.gif', + autoGenerateForms => 1, + tableName => 'EMSToken', + className => 'WebGUI::Asset::Sku::EMSToken', + properties => \%properties + }); + return $class->SUPER::definition($session, $definition); +} + + +#------------------------------------------------------------------- +sub getConfiguredTitle { + my $self = shift; + my $name = $self->session->db->getScalar("select name from EMSRegistrant where badgeId=?",[$self->getOptions->{badgeId}]); + return $self->getTitle." (".$name.")"; +} + +#------------------------------------------------------------------- +sub getPrice { + my $self = shift; + return $self->get("price"); +} + +#------------------------------------------------------------------- +sub onCompletePurchase { + my ($self, $item) = @_; + my $db = $self->session->db; + my @params = ($self->getId, $self->getOptions->{badgeId}); + my $currentQuantity = $db->quickScalar("select quantity from EMSRegistrantToken where tokenAssetId=? and badgeId=?",\@params); + unshift @params, $item->get("quantity"); + if (defined $currentQuantity) { + $db->write("update EMSRegistrationToken set quantity=quantity+? where tokenAssetId=? and badgeId=?",\@params); + } + else { + $db->write("insert into EMSRegistrationToken (quantity, tokenAssetId, badgeId) values (?,?,?)",\@params); + } + return undef; +} + +#------------------------------------------------------------------- +sub purge { + my $self = shift; + $self->session->db->write("delete from EMSRegistrantToken where tokenAssetId=?",[$self->getId]); + $self->SUPER::purge; +} + +#------------------------------------------------------------------- +sub view { + my ($self) = @_; + return $self->getParent->view; +} + +#------------------------------------------------------------------- +sub www_addToCart { + my ($self) = @_; + return $self->session->privilege->noAccess() unless $self->getParent->canView; + $self->addToCart({badgeId=>$self->session->form->get('badgeId')}); + return $self->getParent->www_view; +} + + + +1; diff --git a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm index 57aff7259..0ea33f270 100644 --- a/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm +++ b/lib/WebGUI/i18n/English/Asset_EventManagementSystem.pm @@ -1064,6 +1064,18 @@ by setting the "hide" form variable.|, context => q|name of asset|, }, + 'ems ribbon' => { + message => q|Event Manager Ribbon|, + lastUpdated => 0, + context => q|name of asset|, + }, + + 'ems token' => { + message => q|Event Manager Token|, + lastUpdated => 0, + context => q|name of asset|, + }, + 'type name here' => { message => q|Type Name Here|, lastUpdated => 1140469381,