From 5eeddbd0b0c20375cf6d0258ed8cf3b9ef3b7a9b Mon Sep 17 00:00:00 2001 From: Marius Gavrilescu Date: Sat, 5 Mar 2016 18:17:32 +0000 Subject: [PATCH] Add a function for cancelling orders --- lib/App/Web/Oof.pm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/lib/App/Web/Oof.pm b/lib/App/Web/Oof.pm index 3310dd1..2814ad3 100644 --- a/lib/App/Web/Oof.pm +++ b/lib/App/Web/Oof.pm @@ -193,6 +193,25 @@ sub order_app { } } +sub cancel { + my ($order) = @_; + $db{$$} //= DBIx::Simple->connect($ENV{OOF_DSN} // 'dbi:Pg:'); + $order = $db{$$}->select(orders => '*', {id => $order})->hash; + my $products = decode_json $order->{products}; + $db{$$}->begin_work; + try { + for my $prod (@$products) { + my $stock = $db{$$}->select(products => 'stock', {product => $prod->{product}})->list; + $db{$$}->update(products => {stock => $stock + $prod->{quantity}}, {product => $prod->{product}}); + } + $db{$$}->delete(orders => {id => $order->{id}}); + $db{$$}->commit; + } catch { + $db{$$}->rollback; + die $_ + } +} + sub details_list_element { my ($data, $li) = @_; $li->find('a')->attr(href => "/$data"); -- 2.30.2