NAME
Mango::Wishlist - Module for maintaining wishlist contents
SYNOPSIS
my $wishlist = $provider->create({
user => 23
});
$wishlist->add({
sku => 'SKU1234',
quantity => 1,
price => 1.25
});
my $iterator = $wishlist->items;
while (my $item = $iterator->next) {
print $item->sku;
print $item->price;
print $item->total;
};
$item->subtotal;
DESCRIPTION
Mango::Wishlist is component for maintaining simple wishlist data.
METHODS
add
Adds a new item to the current wishlist and returns an instance of the item class. You can either pass the item data as a hash reference:
my $item = $wishlist->add({
sku => 'SKU1234',
quantity => 1,
price => 1.25
});
or pass an existing cart item:
$wishlist->add(
$cart->items({sku => 'ABC-123'})->first
);
When passing an existing cart item to add, all columns in the source item will be copied into the destination item if the column exists in both the destination and source, and the column isn't the primary key or the foreign key of the item relationship.
clear
Deletes all items from the current wishlist.
$wishlist->clear;
count
Returns the number of items in the wishlist object.
my $numitems = $wishlist->count;
delete
Deletes the item matching the supplied filter from the current wishlist.
$wishlist->delete({
sku => 'ABC-123'
});
destroy
Deletes the current item from the provider.
items
Loads the current wishlist items matching the specified filter and returns a Mango::Iterator in scalar context, or a list of items in list context.
my $iterator = $wishlist->items;
while (my $item = $iterator->next) {
print $item->sku;
};
my @items = $wishlist->items;
The following options are available:
- order_by
-
Order the items by the column(s) and order specified. This option uses the SQL style syntax:
my $items = $wishlist->items(undef, {order_by => 'sku ASC'});
restore
Copies (restores) items from a cart, or a set of carts back into the current shopping cart. You may either pass in a hash reference containing the search criteria of the shopping cart(s) to restore:
$wishlist->restore({
shopper => 'D597DEED-5B9F-11D1-8DD2-00AA004ABD5E',
type => CART_TYPE_SAVED
});
or you can pass in an existing Mango::Cart
object or subclass.
my $cart = $provider->search({
id => 23,
type => CART_TYPE_SAVED
})->first;
$wishlist->restore($cart);
For either method, you may also specify the mode in which the cart should be restored. The following modes are available:
CART_MODE_REPLACE
-
All items in the current wishlist will be deleted before the saved cart is restored into it. This is the default if no mode is specified.
CART_MODE_MERGE
-
If an item with the same SKU exists in both the current cart and the saved cart, the quantity of each will be added together and applied to the same sku in the current cart. Any price differences are ignored and we assume that the price in the current cart has the more up to date price.
CART_MODE_APPEND
-
All items in the saved cart will be appended to the list of items in the current cart. No effort will be made to merge items with the same SKU and duplicates will be ignored.
id
Returns the id of the current wishlist.
print $wishlist->id;
subtotal
Returns the current total price of all the items in the wishlist object as a stringified Mango::Currency object. This is equivalent to:
my $iterator = $wishlist->items;
my $subtotal = 0;
while (my $item = $iterator->next) {
$subtotal += $item->quantity*$item->price;
};
name
Gets/sets the name of the current wishlist.
print $wishlist->name;
description
Gets/sets the description of the current wishlist.
print $wishlist->description;
created
Returns the date the wishlist was created as a DateTime object.
print $wishlist->created;
updated
Returns the date the wishlist was last updated as a DateTime object.
print $wishlist->updated;
update
Saves any changes to the wishlist back to the provider.
SEE ALSO
Mango::Cart::Item, Mango::Schema::Cart::Item
AUTHOR
Christopher H. Laco
CPAN ID: CLACO
claco@chrislaco.com
http://today.icantfocus.com/blog/