Business-Cart-Generic
view release on metacpan or search on metacpan
lib/Business/Cart/Generic/Database/Order.pm view on Meta::CPAN
package Business::Cart::Generic::Database::Order;
use strict;
use warnings;
use Moose;
extends 'Business::Cart::Generic::Database::Base';
use namespace::autoclean;
our $VERSION = '0.85';
# --------------------------------------------------
sub add_to_cart
{
my($self, $order) = @_;
$self -> db -> logger -> log(debug => 'add_to_cart()');
# Note: save_order() sets $$order{id}, and both
# save_order() and save_order_history() use $$order{status_id}.
my($order_session) = $self -> db -> session -> param('order');
my(@status2id) = $self -> schema -> resultset('OrderStatuse') -> search({}, {columns => [qw/name id/]});
my(%status2id) = map{($_ -> name, $_ -> id)} @status2id;
my($status) = 'Processing';
$$order{status_id} = $status2id{$status};
# Is it a new order?
if ($$order_session{item_count} == 0)
{
$self -> save_order($order);
$$order_session{id} = $$order{id};
}
else
{
$$order{id} = $$order_session{id};
}
$$order_session{item_id} = $$order{item_id} = $self -> save_order_item($order);
$self -> save_order_history($order);
$$order_session{item_count}++;
$self -> db -> session -> param(order => $order_session);
$self -> db -> logger -> log(info => "Order item saved. id: $$order{id}. item id: $$order{item_id}. item count: $$order_session{item_count}");
return $order_session;
} # End of add_to_cart.
# --------------------------------------------------
sub cancel_order
{
my($self) = @_;
$self -> db -> logger -> log(debug => 'cancel_order()');
my($order_session) = $self -> db -> session -> param('order');
$self -> schema -> resultset('OrderHistory') -> search({order_id => $$order_session{id} }) -> delete;
$self -> schema -> resultset('OrderItem') -> search({order_id => $$order_session{id} }) -> delete;
$self -> schema -> resultset('Order') -> search({id => $$order_session{id} }) -> delete;
$self -> db -> logger -> log(info => "Order cancelled: id: $$order_session{id}");
( run in 0.650 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )