webgui/lib/WebGUI/Commerce/ShoppingCart.pm
2004-11-29 15:29:26 +00:00

79 lines
2.3 KiB
Perl

package WebGUI::Commerce::ShoppingCart;
use strict;
use WebGUI::Session;
use WebGUI::SQL;
use WebGUI::Commerce::Item;
use WebGUI::Commerce::Payment;
#-------------------------------------------------------------------
sub add {
my ($self, $itemId, $itemType, $quantity);
$self = shift;
$itemId = shift;
$itemType = shift;
$quantity = shift || 1;
$self->{_items}{$itemId."_".$itemType} = {
itemId => $itemId,
itemType => $itemType,
quantity => $self->{_items}{$itemId."_".$itemType}{quantity} + $quantity
};
WebGUI::SQL->write("delete from shoppingCart where sessionId=".quote($self->{_sessionId})." and itemId=".quote($itemId)." and itemType=".quote($itemType));
WebGUI::SQL->write("insert into shoppingCart ".
"(sessionId, itemId, itemType, quantity) values ".
"(".quote($self->{_sessionId}).",".quote($itemId).",".quote($itemType).",".$self->{_items}{$itemId."_".$itemType}{quantity}.")");
}
#-------------------------------------------------------------------
sub empty {
my ($self);
$self = shift;
WebGUI::SQL->write("delete from shoppingCart where sessionId=".quote($self->{_sessionId}));
}
#-------------------------------------------------------------------
sub getItems {
my ($self, $periodResolve, %cartContent, $item, $properties, @recurring, @normal);
$self = shift;
$periodResolve = WebGUI::Commerce::Payment::recurringPeriodValues;
%cartContent = %{$self->{_items}};
foreach (values(%cartContent)) {
$item = WebGUI::Commerce::Item->new($_->{itemId}, $_->{itemType});
$properties = {
quantity => $_->{quantity},
period => lc($periodResolve->{$item->duration}),
name => $item->name,
price => sprintf('%.2f', $item->price),
totalPrice => sprintf('%.2f', $item->price * $_->{quantity}),
item => $item,
};
if ($item->isRecurring) {
push(@recurring, $properties);
} else {
push(@normal, $properties);
}
}
return (\@normal, \@recurring);
}
#-------------------------------------------------------------------
sub new {
my ($class, $sessionId, $sth, $row, %items);
$class = shift;
$sessionId = shift || $session{var}{sessionId};
$sth = WebGUI::SQL->read("select * from shoppingCart where sessionId=".quote($sessionId));
while ($row = $sth->hashRef) {
$items{$row->{itemId}."_".$row->{itemType}} = $row;
}
bless {_sessionId => $sessionId, _items => \%items}, $class;
}
1;